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.692毫秒