VB中应用DDE -- 2

Visual Basic 6.0 专栏收录该内容
36 篇文章 0 订阅

介绍启动 Microsoft Visual Basic 目标应用程序和 Visual Basic 源应用程序之间的动态数据交换 (DDE) 的必要步骤。 

  • 创建一个 Visual Basic 应用程序作为一个 DDE 源。
  • 创建 Visual Basic 应用程序,以用作 DDE 目标。
  • 在目标应用程序和 $ 源应用程序之间启动手动 DDE 链接 (根据请求从目标更新的信息)。
  • 使用 LinkRequest 更新源应用程序中的信息在目标应用程序中的信息。
  • 在目标应用程序和 $ 源应用程序之间启动自动 DDE 链接 (来自源自动更新到的目标的信息)。
  • 使用 LinkPoke 从目标应用程序到源应用程序发送信息。
  • 更改之间自动和手动 LinkMode 属性。

创建源应用程序

  1. 在 Visual Basic 中开始新项目。默认情况下创建 Form1。
  2. Form1 的标题属性改为源。
  3. 在 Form1 LinkMode 属性更改为 1 的源。
  4. 在 Form1 上放置在文本框中 (文本 1)。
  5. 名为源保存在窗体和项目。
  6. 从文件菜单中选择生成 EXE 文件。生成 EXE 文件对话框中选择确定以接受 SOURCE.EXE 为 EXE 文件的名称。

创建目标应用程序

  1. 从文件菜单中选择新建项目。默认情况下创建 Form1。
  2. Form1 的标题属性改为目标。
  3. 将下列控件添加到 Form1,并为它们指定属性指示:
       Default Name   Caption            Name
       -----------------------------------------
       Text1          (Not applicable)   Text1
       Option1        Manual Link        ManualLink
       Option2        Automatic Link     AutomaticLink
       Command1       Poke               Poke
       Command2       Request            Request
    
    						
  4. 下面的代码添加到 Form1 的常规声明部分:
       Const AUTOMATIC= 1
       Const MANUAL = 2
       Const NONE = 0
    
       '(NOTE:  For Visual Basic version 1.0, also add the following
       '        constants:
       'Const True = -1
       'Const False = 0
    
    						
  5. 下面的代码添加到 Form1 的 Load 事件过程:
       Sub Form_Load ()
          'This procedure will start the VB source application.
    
          z% = Shell("SOURCE", 1)
    
          z% = DoEvents()   'Causes Windows to finish processing Shell command.
    
          Text1.LinkMode = NONE   'Clears DDE link if it already exists.
    
          Text1.LinkTopic = "Source|Form1"   'Sets up link with VB source.
          Text1.LinkItem = "Text1"           'Set link to text box on source.
          Text1.LinkMode = MANUAL            'Establish a manual DDE link.
          ManualLink.Value = TRUE            'Sets appropriate option button.
       End Sub
    
    						
  6. 下面的代码添加 Click 事件过程中的 ManualLink:
       Sub ManualLink_Click ()
          Request.Visible = TRUE    'Make request button valid.
          Text1.LinkMode = NONE     'Clear DDE Link.
          Text1.LinkMode = MANUAL   'Reestablish new LinkMode.
       End Sub
    
    						
  7. 下面的代码添加到 Clink 事件过程中的 AutomaticLink:
       Sub AutomaticLink_Click ()
          Request.Visible = FALSE   'No need for button with automatic link.
          Text1.LinkMode = NONE     'Clear DDE Link.
    
          Text1.LinkMode = AUTOMATIC   'Reestablish new LinkMode.
       End Sub
    
    						
  8. 将下面的代码添加到请求的 Click 事件过程:
       Sub Request_Click ()
          'With a manual DDE link, this button will be visible, and when
          'selected it will request an update of information from the source
          'application to the destination application.
          Text1.LinkRequest
       End Sub
    
    						
  9. 将下面的代码添加到发送的 Click 事件过程:  
       Sub Poke_Click ()
          'With any DDE link, this button will be visible, and when it's
          'selected, will poke information from the destination application
          'into the source application.
          Text1.LinkPoke
       End Sub
    
    	

运行 Visual Basic 目标应用程序

 

选择下列选项之一:
从该 VB.EXE 运行 Visual Basic 目标应用程序通过跳过下面的步骤 4 到的环境。

保存应用程序。然后创建一个.exe 文件,并通过 $ 以下面的步骤 1 开始来从 Windows 运行它。

  1. 从文件菜单中选择保存,并保存窗体和项目名称的目标。
  2. 从文件菜单中选择生成 EXE 文件,并为其指定名称 DEST.EXE。
  3. 退出 Visual Basic 环境 (VB.EXE)。
  4. 从 Windows 如果它是一个.exe 文件或从 VB.EXE 环境,请运行该应用程序。
  5. Form1 的目标应用程序将加载,将自动启动源应用程序。

试用 Visual Basic 应用程序之间的 DDE

  1. 请尝试在源应用程序的文本框中键入一些文本。然后单击请求按钮。文本出现在目标应用程序的文本框中。
  2. 单击自动链接按钮,然后键入到源应用程序的文本框中的更多的文本。在目标应用程序的文本框中,文本将自动更新。
  3. 目标应用程序的文本框中键入一些文本。然后单击发送按钮将文本发送到源应用程序的文本框中。

 

 

 

VB应用程序中用DDE功能开发AutoCADforWindows

结合实例介绍了用VB开发AutoCAD的途径与方法。
一、直接利用DDE功能开发

  DDE是Windows的强大功能之一,它可以使应用程序自动地接收由其它应用程序发送来的数据,当传送端的数据有变化时,接收端的数据也会随之改变,也可将命令或键盘输入传递给其它程序,实现远程控制。

  在VB编程环境中,创建应用程序的方法很简单,首先是设计用户界面,也就是在空白窗体中放入所需要的控件,如命令按钮,单选钮,文本框,标签,图片框等,然后针对各控件上要发生的事件(如鼠标单击,鼠标移动等)书写事件过程,最后将编写的应用程序运行,调试,生成执行文件即可。VB中能和其它Window应用程序建立DDE通道的控件有文本框,标签和图片框。下面结合简单实例,说明VB应用程序与AutoCAD间建立DDE通道和交换数据的方法。

  在VB中启动一个新项目,参见图(1)建立窗体,其中“建立链接”,“直线”,“标注”,“退出”为命令按钮,标有“Text1”的为文本框,用于建立DDE通道,并输入下面的事件代码。

 OptionExplicit

 PrivateSubcmdLine_Click()'画直线

  Text1.LinkExecute"[^3^3line3,38,8^3]"

 EndSub

 PrivateSubcmdText_Click()'标注文字

  Text1.LinkExecute"[^3^3text10,10190AUTOCAD!^10]"

 EndSub

 PrivateSubcmdLink_click()'建立链接

  Text1.LinkMode=0

  Text1.LinkTopic="autocad.dde|system"

  Text1.LinkMode=2

 EndSub

 PrivateSubcmdExit_click()'退出

  End

 EndSub

  运行此应用程序,注意在运行前,一定要先加载AutoCAD。单击“建立链接”按扭,cmdLink_Click()过程被执行,执行时设置文本框Text1的LinkTopic和LinkMode的属性,完成VB应用程序与AutoCAD间DDE通道的建立。LinkTopic属性用于通知AutoCAD由谁来提供数据,它被管道符“|”分成两部分,第一部分“AutoCAD.DDE”为应用程序名,第二部分“System”是通讯的主题。LinkMode属性用于切实建立链接,在LinkMode=0时,表示关闭以前的DDE通道,在LinkMode=2时,表示以手动模式激活DDE通道。

  在完成DDE链接后,VB应用程序就可以与AutoCAD间进行数据交换或命令传送了。单击“直线”按扭,cmdLine_Click()过程被执行,应用程序通过LinkExecute方法向AutoCAD发送命令,在AutoCAD中以点(3,3)和(8,8)为端心,画一条直线。语句中的^3相当于AutoCAD中的取消键Ctrl C,空格相当于AutoCAD中的回车键。单击“标注”按扭,执行cmdText_Click()过程,可在AutoCAD中显示以(10,10)为基点,高为1,旋转角度为90的字符串“AutoCAD!”。语句中的^10相当于AutoCAD中的回车键,在标注文字时不能用空格代替回车键。

  根据需要,可用上面的方法传送AutoCAD的其它命令,实现对AutoCAD的开发。

二、通过调用VBADS开发

  上面介绍了在VB应用程序中直接利用DDE与AutoCAD作用实现开发的方法,此方法要求用户自己建立与AutoCAD间的DDE通道,此外,我们还可以通过调用VBADS函数对AutoCAD进行开发。在VBADS函数库中已有专门的函数负责建立应用程序与AutoCAD间的DDE通道,而不需用户亲自建立,较为方便。另外,VB应用程序还可以通过VBADS函数向AutoCAD发送数据和命令,同时也可以利用VBADS函数的返回值来获得AutoCAD的数据,实现对AutoCAD更深入的开发。

  为了利用AutoCAD的VBADS函数建立VB的应用程序,AutoCAD提供了几个VBADS支撑文件,这些文件除DDEBAS.EXE和ACADVB.DLL存放在C:\ACADWIN子目录外,其余都存放在C:\ACADWIN\VB\NEW子目录中。文件如下:

  1.DDEBAS.EXE-ADS/DDE服务者,为保证VB于AutoCAD间正常通信,此命令必须首先在AutoCAD中用XLOAD命令加载运行。

  2.ACADVB.DLL-VBADS动态连接库,在运行VB应用程序前,应将其拷到C:\WINDOWS\SYSTEM\子目录下。

  3.GLOBAL.BAS-VBADS应用程序中所需要使用的全局变量定义文件。

  4.ADSFUNCS.BAS-VBADS函数库,可以在VB应用程序中直接调用。

  5.ADSFUNCS.FRM-包含有应用程序和AutoCAD间建立DDE链接的窗体文件。下面结合具体的例子,说明利用VBADS函数开发应用程序的方法。[HJ]   启动VB,打开C:\ACADWIN\VB\NEW\NEWPROJ.MAK项目文件,参见图[2]建立新窗体,并输入如下的事件代码。

 OptionExplicit

 PrivateSubForm_Load()

  DDE_TIMEOUT=-1 '等待DDE事件

  txtX.Text=5 '圆心,半径的隐含值

  txtY.Text=5

  txtRadius=3

 EndSub

 PrivateSubcmdCircle_Click() '画圆过程

  DimretAsInteger

  DimptAsads_point '定义Ads点类型

  DimRadiusAsDouble

  DimApndllAsApndLLType '定义增加链表类型

  DimResbufAsResbufType '定义结果缓冲器

  pt.X=val(Trim(txtX.Text)) '给圆心,半径赋值

  pt.Y=val(Trim(txtY.Text))

  Radius=val(Trim(txtRadius.Text))

  ret=ads_newrb(10,Resbuf) '建立新的结果缓冲器

  Resbuf.hResbuf=0

  Apndll.apType=RTSTR '说明链表类型为字符串

  Apndll.apString="circle" Chr$(0) '链表赋值

  ret=ApndLLNode(Resbuf,Apndll) '增加链表到结果缓冲器

  Apndll.apType=RTPOINT

  Apndll.apPoint=pt

  ret=ApndLLNode(Resbuf,Apndll)

  Apndll.apType=RTREAL

  Apndll.apReal=Radius

  ret=ApndLLNode(Resbuf,Apndll)

  Apndll.apType=RTNONE '链表结束值类型

  ret=ApndLLNode(Resbuf,Apndll)

  ret=ads_cmd(Resbuf) '执行结果缓冲器的命令

  ret=ads_relrb(Resbuf) '释放结果缓冲器

  EndSub

PrivateSubcmdExit_Click() '退出过程

  End

 EndSub

  在应用程序运行前,必须首先运行AutoCAD,并用命令(XLOAD"DDEBAS")加载DDEBAS.EXE。在上面的应用程序中,除语句DDE_TimeOut=-1外,没有其它涉及建立DDE通道的语句,因为应用程序与AutoCAD间建立DDE通道所需要的代码已保存在VBADS函数库中,打开支撑文件adsfuncs.bas,可以发现SubOPENDDE()过程,它负责VB应用程序与AutoCAD间DDE通道的建立,所以用户在开发应用程序时,只管调用VBADS函数即可。例子中的cmdCircle_Click()过程,是在VB4.0编程环境通过调用VBADS函数开发的,运行程序后在文本框中输入半径和圆心的值,单击“画图”按扭,即可在AutoCAD中得到所需的圆。->

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值