用VB实现程序之间的简单通信
来源:互联网 发布:审计入门书籍推荐 知乎 编辑:程序博客网 时间:2024/04/28 18:42
本人非常喜欢编程,对网络编程最感兴趣,所以就想编个程序到BBS上发帖子,达到提高经验值的目的。今天把它写出来,和大家一起分享。
基本知识
剪贴板在Windows中是一个好东东,在VB的编程中同样有用。在VB中,它其实就是Cli
pBoard对象,专门用于处理剪贴板上的文本和图像。使用之前最好先用Clear方法清除以前的内容。
发送文本还可以利用的就是SendKeys方法。把你要发送的文本放入一个变量,比如MyStr中,然后使用“SendKeys MyStr”语句就可以了。但是SendKeys的功能并不只限于这样,它最大的作用是发送一个或多个击键动作到其他程序中,想要发送哪个键值,只要使用以下语句即可:
SendKeys "该键在键盘注明的名称"
这就为我们利用其他程序中的快捷键提供了可能,进而我们就可以在自己的程序中控制其他程序的动作。如果我们想发送Ctrl+V这个粘贴的指令,就可以用以下语句:
SendKeys "^c"
其中Ctrl用“^”来代替。类似的组合键还有Shift和Alt,分别用“+”和“%”(后面的例子中会用到Shift)。但是在用ClipBoard对象或SendKeys方法之前,还必须先用AppActivate语句激活需要通信程序的窗口。它的用法是:
AppActivate +“所要激活应用程序窗口标题”
比如一个记事本,正在编辑的文件名为my.txt,用以下语句来激活它要保持自己的程序:
AppActivate "my.txt - 记事本" 。
通信中还必须注意的问题就是和被调用程序运行之间的步调一致,也就是所谓的同步控制。那就要用到DoEvents函数,它的作用是转让控制权,以便操作系统处理事件。只要有意识地在程序中需要的地方加入DoEvents就可以了。在有多次的循环语句中,相信大家都使用过这个语句。与DoEvents相配合的还有就是一个API函数Sleep(),必须先声明:
Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
具体的Sleep时间需要自己去实践。
代码实现
要用到的基本知识已经讲完了,下面让我们来看看编写“灌水机”的部分关键代码:(其中DoEvents语句用汉字“返”代替,Sleep()函数用“等”汉字代替)
Private Sub CmdBegin_Click()
On Error GoTo 0
'为字符串变量title和txtfromfile赋值的语句省略了,最好和文本文件结合使用。
Clipboard.Clear
Clipboard.SetText title
AppActivate ("虎踞龙盘") '我用Cterm上的虎踞龙盘东南站,窗口标题为“虎踞龙盘”
等,返,等 '即依次执行语句DoEvents Sleep (100) DoEvents,下同
SendKeys ("^p") 'Cterm程序中发文用的快捷键
返 SendKeys "+{insert}" 'Cterm程序中粘贴文本的快捷键
返,等,返 SendKeys "{enter}" '发文必须用的回车动作
返SendKeys "{enter}" 返,等,返
'以上语句就实现了向Cterm程序发送文章的标题
Clipboard.Clear
Clipboard.SetText txtfromfile
返,等,返
SendKeys "+{insert}" 返
SendKeys "^w" 'Cterm中的发文动作
返 SendKeys "^w" 返
SendKeys "{enter}" '一篇文章已经发送完毕,在以后的语句中进入下一个循环
End Sub
以上就是一个BBS发文程序的关键部分:与Cterm程序反复的进行通信,并进行同步的控制。它进行反复的循环,就会一篇篇地把本地机器上的文本传到BBS上(其实是仅仅传给了Cterm),这样利用程序间的通信,就避免了进行网络编程。
基本知识
剪贴板在Windows中是一个好东东,在VB的编程中同样有用。在VB中,它其实就是Cli
pBoard对象,专门用于处理剪贴板上的文本和图像。使用之前最好先用Clear方法清除以前的内容。
发送文本还可以利用的就是SendKeys方法。把你要发送的文本放入一个变量,比如MyStr中,然后使用“SendKeys MyStr”语句就可以了。但是SendKeys的功能并不只限于这样,它最大的作用是发送一个或多个击键动作到其他程序中,想要发送哪个键值,只要使用以下语句即可:
SendKeys "该键在键盘注明的名称"
这就为我们利用其他程序中的快捷键提供了可能,进而我们就可以在自己的程序中控制其他程序的动作。如果我们想发送Ctrl+V这个粘贴的指令,就可以用以下语句:
SendKeys "^c"
其中Ctrl用“^”来代替。类似的组合键还有Shift和Alt,分别用“+”和“%”(后面的例子中会用到Shift)。但是在用ClipBoard对象或SendKeys方法之前,还必须先用AppActivate语句激活需要通信程序的窗口。它的用法是:
AppActivate +“所要激活应用程序窗口标题”
比如一个记事本,正在编辑的文件名为my.txt,用以下语句来激活它要保持自己的程序:
AppActivate "my.txt - 记事本" 。
通信中还必须注意的问题就是和被调用程序运行之间的步调一致,也就是所谓的同步控制。那就要用到DoEvents函数,它的作用是转让控制权,以便操作系统处理事件。只要有意识地在程序中需要的地方加入DoEvents就可以了。在有多次的循环语句中,相信大家都使用过这个语句。与DoEvents相配合的还有就是一个API函数Sleep(),必须先声明:
Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
具体的Sleep时间需要自己去实践。
代码实现
要用到的基本知识已经讲完了,下面让我们来看看编写“灌水机”的部分关键代码:(其中DoEvents语句用汉字“返”代替,Sleep()函数用“等”汉字代替)
Private Sub CmdBegin_Click()
On Error GoTo 0
'为字符串变量title和txtfromfile赋值的语句省略了,最好和文本文件结合使用。
Clipboard.Clear
Clipboard.SetText title
AppActivate ("虎踞龙盘") '我用Cterm上的虎踞龙盘东南站,窗口标题为“虎踞龙盘”
等,返,等 '即依次执行语句DoEvents Sleep (100) DoEvents,下同
SendKeys ("^p") 'Cterm程序中发文用的快捷键
返 SendKeys "+{insert}" 'Cterm程序中粘贴文本的快捷键
返,等,返 SendKeys "{enter}" '发文必须用的回车动作
返SendKeys "{enter}" 返,等,返
'以上语句就实现了向Cterm程序发送文章的标题
Clipboard.Clear
Clipboard.SetText txtfromfile
返,等,返
SendKeys "+{insert}" 返
SendKeys "^w" 'Cterm中的发文动作
返 SendKeys "^w" 返
SendKeys "{enter}" '一篇文章已经发送完毕,在以后的语句中进入下一个循环
End Sub
以上就是一个BBS发文程序的关键部分:与Cterm程序反复的进行通信,并进行同步的控制。它进行反复的循环,就会一篇篇地把本地机器上的文本传到BBS上(其实是仅仅传给了Cterm),这样利用程序间的通信,就避免了进行网络编程。
- 用VB实现程序之间的简单通信
- 用Socket实现程序之间的交互(通信)
- 实现vs2013客户端服务器之间的简单通信,hello world 程序。
- UDP通信的简单实现(程序)
- 简单的fragment之间通信交流的实现
- 用vb.net与acess结合实现简单的电话号码本程序(一)
- 用VB实现程序的隐形
- ObserverManager,简单实现线程,UI之间通信。
- SharedUserId 简单 实现两个程序间的通信
- Android基础教程之----SMS简单发送短信程序(两个模拟器之间的通信)!
- Android基础教程之----SMS简单发送短信程序(两个模拟器之间的通信)!
- Android基础教程之----SMS简单发送短信程序(两个模拟器之间的通信)!
- Android基础教程之----SMS简单发送短信程序(两个模拟器之间的通信)!
- activeMq 简单的通信程序
- 简单的tcp通信程序
- 用VB设计“投票评选”程序的简单方法
- 用VB编写简单的程序来清空文档菜单
- 两个简单Fragment之间的通信
- SOAP HTTP Binding
- HTTP协议
- Windows内核方面的经典书籍
- SOAP 实例
- Google Releases Cross-Language Search
- 用VB实现程序之间的简单通信
- 固定在左上角,不固定宽度,采用百分比(%)定义宽度来自适应页面
- Google Releases Cross-Language Search
- Windows内核技术的精华站点
- WSDL 介绍
- 聊天,吃饭
- 固定在左上角,固定宽度,采用的是绝对(absolute)定位
- WSDL 文档
- IBM 正式公布POWER6芯片