VB Link 操作(DDE 会话)
━━━━━━━━━━━━━━━━━━━━━━━━━━
程序之间进行数据通信,一个常见的方法就是采用DDE 会话,在 VB 中就是使用对象的 Link 操作。
一、DDE会话基本设计
★发送方设置:
''注:Kj 代表窗体中发送 DDE 会话的某控件,如 TextBox、Label
1.加入代码:
Kj.LinkMode = 0
Kj.LinkTopic = "收|Form1" ''文件名|窗体名
Kj.LinkItem = "Text1" ''控件名
Kj.LinkMode = Mode ''0(断开) 1(自动) 2(手动) 3(通知)
2. 用“Kj.LinkPoke” ''发送源程序控件 kj 的字符 到 本程序的 Text1 中
3. 用“Kj.LinkRequest” ''源程序将本程序 Text1字符取回 放入 kj
4 用“Kj.LinkExecute Cmd” ''触发本标程序的 Form_LinkExecute 事件
★接收方设置:
1.必须在设计状态下设置本程序的窗口:LinkMode = 1
2.在 Form_LinkExecute 事件中接收发送程序发出的 DDE 会话消息
二、DDE会话的事件 ——————————————————————————————
▲LinkClose (事件)DDE 对话结束
▲LinkError(linkerr As Integer) (事件)DDE 对话出错
▲LinkExecute(cmdstr As String, cancel As Integer) (事件)
当一个 DDE 对话中的命令字符串由一个接收端应用程序发出时而发生的
▲LinkOpen(cancel As Integer) (事件)DDE 对话正在启动时
▲LinkNotify (事件)
如果接收端控件的 LinkMode 属性被设置为 3(通知),
当发送端已经改变了由 DDE 链接定义的数据时,此事件发生。
三、DDE会话的有关属性 ——————————————————————————————
▲LinkTimeout [ = Number]属性 返回或设置等待 DDE 响应消息的时间。
缺省为 50(相当于 5 秒),
最大等待时间长度为65,535个十分之一秒,或大约为 1 时 49 分钟
▲LinkItem [ = String]属性 返回或设置传给接收端的数据
▲LinkTopic [ = value]属性 对于接收端控件-返回或设置发送端应用程序和主题
▲LinkMode [ = Number]属性 DDE 会话方式
★对于 DDE 会话中用做目标的控件, Number 的设置值为:
0vbLinkNone 无 无 DDE 交互。(缺省值)
1vbLinkAutomatic 自动 每次链接数据改变,目标控件都要更新
2vbLinkManual 手动 只有激活 LinkRequest 方法时,才更新目标控件。
3vbLinkNotify 通知 链接数据改变时,会产生 LinkNotify 事件,
但是只有在LinkRequest 方法激活时才会更新目标控件。
★对作为 DDE 会话源的窗体,number 的设置值为:
0vbLinkNone(缺省值) 无 没有 DDE 交互。
没有目标应用程序能够启动与源窗体的主题会话,没有应用程序能够向窗体放置数据。如果在设计时 LinkMode 为 0(无),在运行时不能将其改变为1(源)。
1vbLinkSource 源 允许窗体上的任何 Label、PictureBox 或TextBox控件为与该窗体建立 DDE 会话的目标应用程序提供数据。
如果存在这种链接,Visual Basic 在控件内容改变时会自动提醒目标应用程序。另外,目标应用程序能够向窗体上的 Label、PictureBox、TextBox 控件存放数据。如果设计时LinkMode为 1(源),运行时可以将它改为 0(无)也可以再改回来。
返回一个代表包含该窗口的框架的 Window 对象,此属性为只读,只应用于Window 对象
四、DDE会话的有关方法 ——————————————————————————————
▲LinkSend (方法)
在一次 DDE 对话中将 PictureBox 控件的内容传输到的接收端应用程序。
▲LinkExecute String (方法)
DDE对话过程中将命令字符串发送给发送端应用程序
▲LinkPoke (方法)
DDE对话过程中将 Label、PictureBox 或 TextBox 控件的内容传送给发送端应用程序
▲LinkRequest (方法)
DDE 对话中请求发送端应用程序更新 Label、PictureBox 或 TextBox 控件中的内容
★如果 object 的 LinkMode 属性设置为自动( 1 或 vbLinkAutomatic),则源应用程序自动更新 object 而不需要 LinkRequest。
★如果 object 的 LinkMode 属性设置为手工(2 或 vbLinkManual),则只有使用LinkRequest 时源应用程序才更新 object。
★如果 object 的 LinkMode 属性设置为通知 Notify( 3 或 vbLinkNotify),则源端通过调用 LinkNotify 事件通知接收端已更改数据。然后接收端必须使用 LinkRequest 更新数据。设置一指示对象为可见或隐藏的值
五、DDE会话的集合
LinkedWindows 集合 ——————————————————————————————
▲Count (属性) 集合内成员的个数,此属性为只读
▲Parent (属性) 返回包含另一对象或集合的对象或集合,此属性为只读
▲VBE (属性) 返回该 VBE 对象的根,此属性为只读。
例 返回活动工程名称:Debug.Print Application.VBE.ActiveVBProject.Name
▲Add (component) (方法) 将一个对象添加到集合。
component 参数:
vbext_ct_ClassModule 将一个类模块添加到集合。
Vbext_ct_MSForm 将窗体添加到集合。
vbext_ct_StdModule 将标准模块添加到集合。
▲Item(index) (方法)返回集合中所索引的成员。
index 参数可以是数值或包含对象标题的字符串。字符串必须和集合的 key 参数匹配。
Key 参数:
Windows Caption 属性设置
LinkedWindows Caption 属性设置
CodePanes 无唯一字符串与此集合相关。
VBProjects Name 属性设置
VBComponents Name 属性设置
References Name 属性设置
Properties Name 属性设置
▲Remove(component) (方法)从集合中删除一项
component参数是必需的。
对于 LinkedWindows 集合来说,是一个对象。
对于 References 集合来说,是一个对类型库,或者对工程的引用。
对于 VBComponents 集合来说,是一个枚举型的常数,它代表一个类模块、一个窗体,或者是一个标准模块。
六、DDE会话的 Link 操作示例 ———————————————————————————————————— -
1.本示例建立一个 Microsoft Excel 的 DDE 链接,将一些值放置到一个新工作单的第一行的单元里,并按照这些值画图。 LinkExecute 向 Microsoft Excel 发送激活工作单的命令,选择一些值并按照它们画图。
Private Sub Form_Click()
Dim Cmd, I, Q, Row, Z '' 声明变量。
Q = Chr(34) '' 定义引用标记。
'' 创建一个含有 Microsoft Excel 宏指令的字串。
Cmd = "[ACTIVATE(" & Q & "SHEET1" & Q & ")]"
Cmd = Cmd & "[SELECT(" & Q & "R1C1:R5C2" & Q & ")]"
Cmd = Cmd & "[NEW(2,1)][ARRANGE.ALL()]"
If Text1.LinkMode = vbNone Then
Z = Shell("C:\Program Files\Microsoft Office\Office\EXCEL.EXE", 4) '' 启动 Microsoft Excel。
Text1.LinkTopic = "Excel|Sheet1" '' 设置连接主题。
Text1.LinkItem = "R1C1" '' 设置连接项目。
Text1.LinkMode = vbLinkManual '' 设置连接模式。
End If
For I = 1 To 5
Row = I '' 定义行号。
Text1.LinkItem = "R" & Row & "C1" '' 设置连接项目。
Text1.Text = Chr(64 + I) '' 将值放置在 Text 中。
Text1.LinkPoke '' 将值放入单元。
Text1.LinkItem = "R" & Row & "C2" '' 设置连接项目。
Text1.Text = Row '' 将值放置在 Text 中。
Text1.LinkPoke '' 将值放入单元。
Next I
on Error Resume Next
Text1.LinkExecute Cmd '' 执行 Microsoft Excel 命令。
MsgBox "LinkExecute DDE demo with Microsoft Excel finished.", 64
End
End Sub
2.使用 LinkRequest 更新含有 Microsoft Excel 工作单中值的正文框的内容
计算机上必需正在运行着 Microsoft Excel
Private Sub Form_Click()
If Text1.LinkMode = vbNone Then '' 测试连接模式。
Text1.LinkTopic = "Excel|Sheet1" '' 设置连接主题。
Text1.LinkItem = "R1C1" '' 设置连接项目。
Text1.LinkMode = vbLinkManual '' 设置连接模式。
Text1.LinkRequest '' 更新正文框内容。
Else
If Text1.LinkItem = "R1C1" Then
Text1.LinkItem = "R2C1"
Text1.LinkRequest '' 更新正文框内容。
Else
Text1.LinkItem = "R1C1"
Text1.LinkRequest '' 更新正文框内容。
End If
End If
End Sub
3.LinkItem、LinkMode、LinkTopic 属性示例
在这个例子中,每一次敲击鼠标都会使 Microsoft Excel 工作单中的单元更新 Visual Basic
的 TextBox 先启动 Microsoft Excel,打开一个新的名叫 Sheet1 的工作单,在第一列中放入一些数据。
Private Sub Form_Click()
Dim CurRow As String
Static Row '' 工作单的行数.
Row = Row + 1 '' 增加行.
If Row = 1 Then '' 只第一次.
'' 确保连接不是活动的.
Text1.LinkMode = 0
'' 设置应用程序的名字和题目名.
Text1.LinkTopic = "Excel|Sheet1"
Text1.LinkItem = "R1C1" '' 设置 LinkItem.
Text1.LinkMode = 1 '' 设置 LinkMode 为自动.
Else
''在数据项目中更新行.
CurRow = "R" & Row & "C1"
Text1.LinkItem = CurRow '' 设置 LinkItem.
End If
End Sub
VB Link 操作(DDE 会话)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
VB6应该知道的知识
VB6應該知道的知識 ━━━━━━━━━━━━━━━━━━━━━━━━━━ 1、VB大小寫問題 利用UCase函數將字符串轉換爲大寫,用LCase函
nxhujiee
2020-06-28 02:44:34
怎样用VB断开与internet的连接
nxhujiee
2018-08-29 22:06:53
vb文章--有实用价值
nxhujiee
2018-08-29 22:06:52
VB操作剪贴板,原来只需一句代码
nxhujiee
2018-08-29 22:06:52
用VB打开记事本并写入数据然后保存
nxhujiee
2018-08-29 22:06:52
Shell & Wait 的程序怎么写?
nxhujiee
2018-08-29 22:06:52
VB:Collection (集合)对象示例
nxhujiee
2018-08-29 22:06:40
EXCEL在VB中的编程概念全解
nxhujiee
2018-08-29 22:06:40
VB编程中的Unicode vs Ansi
nxhujiee
2018-08-29 22:06:40
剪贴板的使用方法示例
nxhujiee
2018-08-29 22:06:40
VB:动态添加控件的示例
nxhujiee
2018-08-29 22:06:40
VB:绘图示例—屏保软件设计1
nxhujiee
2018-08-29 22:06:32