VB实现进程间通信,不用API

王二.麻子 2010-03-22 02:27:53
加精
仅仅用VB就可以实现进程间通信,而且是同步通信哦

这个是可能的 , 下面就是例子

例子的来源是MSDN,很早在MSDN上面看到的,后来找不到了,这次是从MSDN中VB例程cofee例程上摘录的,原理相同,都是用active,自定义事件.

1创建一个Active Exe工程,我叫pro_comm_pro吧,
2 添加一个标注模块 , Module1.bas:
Public gCLS1 As cls1 '全局变量,保存对分发消息的类对象cls1的引用,以前没有定义为Public,不可以运行
3 添加类cls1.Cls
修改这个类的属性: Instancing = 2 'PublicNotCreate,不可以从外部进程创建
其他属性使用默认
4 添加如下代码到cls1.Cls:
Private mvarmVal As String '属性变量
Public Event ValChange(vData As String)'通知事件
Public Property Let mVal(ByVal vData As String)
mvarmVal = vData
RaiseEvent ValChange(vData)
End Property
Public Property Get mVal() As String
mVal = mvarmVal
End Property
5 添加一个类clsH.Cls , 这个类仅仅是个接口, 没有多少功能的.属性默认, 代码如下:
 Public Property Get GetCls() As Variant
If gCLS1 Is Nothing Then
Set gCLS1 = New cls1
End If
Set GetCls = gCLS1
End Property
...
这个工程就完成了 , 生成exe文件吧, 我叫的是pro_comm_pro.exe

另外新建一个标注工程
1 新建工程
2工程->引用->浏览,选择我们pro_comm_pro.exe
3 在form1添加个command1 , 添加如下代码在form1.frm里面, 呵呵:

 Dim WithEvents ss As cls1'ss,事件通知我们数据改变
Dim cc As clsH '连接器对象
'按这个按钮,修改cls1(ss)的属性值
Private Sub Command1_Click()
ss.mVal = Time
End Sub
'初始连接器cc,初始cls1,事件分发对象ss
Private Sub Form_Load()
Set cc = New clsH
Set ss = cc.GetCls
End Sub
'接受到数据改变事件
Private Sub ss_ValChange(vData As String)
Form1.Caption = ss.mVal
End Sub
4 编译生成工程吧 , 我交cli.exe
运行2个cli.exe , 点击command1, 会看到, 两个窗口同时改变,需要更多同步信息,看自己想法了
...全文
5192 131 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
131 条回复
切换为时间正序
请发表友善的回复…
发表回复
AddDark 2011-10-09
  • 打赏
  • 举报
回复
留个记好
王二.麻子 2011-01-18
  • 打赏
  • 举报
回复

VB不过是用了好多API

C不用API?

要不您直接说,用机器码写程序的都是您目标得了。多没劲呀

VB存在有他的原因,难道必须每个人都C++,.Net?


m_nAdrs 2010-12-31
  • 打赏
  • 举报
回复
VB 额, 刚接触了 - -
fzx4936 2010-12-28
  • 打赏
  • 举报
回复
学习ing
熊孩子开学喽 2010-12-25
  • 打赏
  • 举报
回复
更简单的是用DDE来做,拉两个控件设置一下属性就可以实现
东方之珠 2010-12-25
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 lyserver 的回复:]
实际上是用了API的,本机COM通讯使用的是LPC,远程COM(即DCOM)使用的是RPC,都是以存根和代理形式实现的,它们背后有一大堆API。
[/Quote]


顶一个!
zjhaag 2010-12-24
  • 打赏
  • 举报
回复
这个帖子怎么这么火啊~~
hjker007 2010-08-07
  • 打赏
  • 举报
回复
mark,学习一下
j13320087882 2010-07-30
  • 打赏
  • 举报
回复
招兼职 调查填表任务,100元/天,大约工作2小时左右
要求得会发送email因为很多任务都是到邮箱里确认,每天大约需要2小时,时间您自己定,完成任务后第3天付款(有些调查需要审核,胡乱填写是无法通过的)所以请务必认真;

(加入兼职网不需交任何费用,需要交费的都啥意思您懂得- -!)

点击这里马上注册:http://tinyurl.com/1227365

Simon217 2010-07-29
  • 打赏
  • 举报
回复
学习来了
my13513480001 2010-04-09
  • 打赏
  • 举报
回复
再次学些,每次都有新收获
sun8000008 2010-03-30
  • 打赏
  • 举报
回复
听课中
kevenquwei 2010-03-29
  • 打赏
  • 举报
回复
mark
Neil198 2010-03-29
  • 打赏
  • 举报
回复
刺眼的小标记
wangkou 2010-03-27
  • 打赏
  • 举报
回复
学习学习
fly1229 2010-03-27
  • 打赏
  • 举报
回复
这个只能建立多个事件,主程序根据事件来判断怎么处理,
要是能直接传递数据就更好了
PC_9527 2010-03-27
  • 打赏
  • 举报
回复
剪贴板可以不用API。。。。。。。。。。。。
my13513480001 2010-03-26
  • 打赏
  • 举报
回复
线程-进程
一直弥漫.............
a1875566250 2010-03-26
  • 打赏
  • 举报
回复
进程通讯,多数使用的是消息通讯,或者管道通讯,我个人感觉消息通讯比较稳定。而且最好是开一个界面线程来进行。
liyoubaidu 2010-03-26
  • 打赏
  • 举报
回复
Active 很少用。
加载更多回复(107)

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧