Database 版 (精华区)
发信人: mengy (LEAR DLLS 命令时,将从内存中清除), 信区: Database
标 题: Visual FoxPro中实现电话拨号
发信站: 哈工大紫丁香 (2000年12月13日09:13:04 星期三), 站内信件
Visual FoxPro中实现电话拨号
对于有调制解调器的用户来说,大多使用过Windows 95提供的‘电话拨号程序
’,使用起来也确实非常的方便。但是,如何在我们的Visual FoxPro 5.0应用程
序中进行电话拨号呢?还好微软为我们提供了一个非常有用的控件--‘
Microsoft Communication Control’,使用它,我们可以迅速的制作出一个通用
的电话拨号程序。以下是本程序的编写方法:
进入Visual FoxPro 5.0中,建立一个新的表单(Form1)。设置表单的Caption属
性为‘电话拨号程序’,Windowtype属性为1-模式。
建立‘Microsoft Communication Control’控件(Olecontrol1)。在‘表单控件
’工具条上选择‘查看类’,在下拉菜单中选择‘ActiveX控件’,然后在‘表单
控件’上选择‘Microsoft Communication Control’(若无此控件可查看系统菜
单的‘工具’的‘选项’中的‘控件’选项卡),在表单上点击一下即可。
建立两个按钮。在‘表单控件’工具条上选择‘命令按钮’并在表单体上点击一下
即可生成一个命令按钮(Command1),设置它的Caption属性为‘拨号’。依此方
法再制作出‘退出’按钮(Command2)。
建立文本输入框。在‘表单控件’工具条上选择‘文本框’并在表单体上点击一下
即可生成一个文本输入框(Text1),设置它的InputMask属性为‘
9999999999999999’。
建立两个标签。在‘表单控件’工具条上选择‘标签’并在表单体上点击一下即可
生成一个标签(Label1),设置它的Caption属性为‘电话号码:’,Autosize属
性为 .T.。同样方法制作Label2,设置它的Caption属性为‘联接中……’,
Autosize属性为.T.,Fontbold属性为.T.,Fontsize属性为22,Forecolor属性为
蓝色(RGB(0,0,255)),Visible属性为.F.。
编写相应控件的执行过程。在系统菜单的‘表单’中选择‘新方法程序’,在名称
栏中输入“Dial”,按‘关闭’按钮退出。以下是程序代码:
Form1的Dial过程:
Parameter Number
DialString = "ATDT" + Number + ";" + Chr(13)
* 设置通讯端口号
Thisform.Olecontrol1.CommPort = 2
* 设置波特率,奇偶校验,数据位和停止位参数
Thisform.Olecontrol1.Settings = "9600,N,8,1"
Err = 0
On Error Err = Messagebox("无法打开通讯端口,请重新设置!",0
+ 16,"错误信息")
* 打开通讯端口
Thisform.Olecontrol1.PortOpen = .T.
If Err = 1
Return
Endif
On Error
Thisform.Olecontrol1.InBufferCount = 0
Thisform.Olecontrol1.Output = DialString
FromModem = ""
StartTime = DATETIME()
Do While .T.
* 检测联接是否超时
If DATETIME() - StartTime >= 10
= MessageBox("不能进行联接,请检查设置是否正确!",
0 + 64,"提示信息")
Thisform.Mousepointer = 0
Thisform.Label2.Visible = .F.
Exit
Endif
Thisform.Mousepointer = 11
Thisform.Label2.Visible = .t.
If Thisform.Olecontrol1.InBufferCount > 0 Then
FromModem = FromModem + Thisform.Olecontrol1.Input
If at("OK",FromModem) > 0 Then
= MessageBox ("请先拿起话筒然后再按下‘确认’按
钮!",0 + 64,"提示信息")
Thisform.Mousepointer = 0
Thisform.Label2.Visible = .F.
Exit
EndIf
EndIf
Enddo
* 断开联接
Thisform.Olecontrol1.Output = "ATH" + Chr(13)
* 关闭通讯端口
Thisform.Olecontrol1.PortOpen = .F.
Form1的Activate过程:
Set Escape Off
Thisform.Olecontrol1.InputLen = 0
Command1的Click过程:
If Empty(Thisform.Text1.Value)
= Messagebox("电话号码不可为空!",0 + 16,"提示信息")
Return
Endif
Thisform.Dial(Alltrim(Thisform.Text1.Value))
Command2的Click过程:
Thisform.Release
以上程序默认调制解调器使用的是Com2通讯口,可根据实际情况进行调整。
--
大海无边天做岸
山登绝顶我为风
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.227.121]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.356毫秒