Morpheus
驱动牛犊
驱动牛犊
  • 注册日期2004-08-19
  • 最后登录2004-08-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1829回复:12

请问在vc中如何实现程序间通讯?

楼主#
更多 发布于:2004-08-19 13:54
也就是说程序B能随时监控程序A得状态~
不管是通过程序A发消息还是什么得!
Sundsea
驱动老牛
驱动老牛
  • 注册日期2003-05-06
  • 最后登录2012-06-05
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望35点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-19 21:00
通过发送消息,管道,套节字,共享内存可以实现程序间通信.
Morpheus
驱动牛犊
驱动牛犊
  • 注册日期2004-08-19
  • 最后登录2004-08-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-08-22 08:36
请问如果采用发送消息需要使用什么函数??
如果是采用其他方法也请给个例子!
Sundsea
驱动老牛
驱动老牛
  • 注册日期2003-05-06
  • 最后登录2012-06-05
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望35点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-08-22 13:08
发送 消息 可以 用两个函数:
SendMessage()这个是同步执行的函数,直到响应了消息函数才返回。
PostMessage()这个是异步执行的函数,执行后立即返回。
更详细资料,请查询MSDN。
Morpheus
驱动牛犊
驱动牛犊
  • 注册日期2004-08-19
  • 最后登录2004-08-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-08-23 15:54
如果我使用SendMessage,请问我如何获得窗口句柄!
注意,这个窗口并非此程序所开的!

还有其他方法吗?注意:是2个单独程序,不是进程
zzzcn
驱动牛犊
驱动牛犊
  • 注册日期2004-08-23
  • 最后登录2014-06-23
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望43点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-08-25 09:17
可以用FindWindow。
steven__xu
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2013-09-03
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-08-27 09:37
程序B可以打开一个命名管道,等着程序A往里写(NT only)。也可以开个隐藏窗口,等着程序A发消息。管道名和窗口title可以用GUID,防止跟别的程序混淆。
Sundsea
驱动老牛
驱动老牛
  • 注册日期2003-05-06
  • 最后登录2012-06-05
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望35点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-08-27 17:14
可以用FindWindow。



没错!!!!!!
z901dyxz
驱动牛犊
驱动牛犊
  • 注册日期2004-09-09
  • 最后登录2004-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-09-09 23:12
管道
z901dyxz
驱动牛犊
驱动牛犊
  • 注册日期2004-09-09
  • 最后登录2004-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-09-09 23:13
文件
z901dyxz
驱动牛犊
驱动牛犊
  • 注册日期2004-09-09
  • 最后登录2004-09-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-09-09 23:13
socket
edcujm
驱动牛犊
驱动牛犊
  • 注册日期2004-05-16
  • 最后登录2005-01-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-09-11 11:13
楼主们说清楚一点啊
廖新根
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-10-01 13:59
可以使用消息,但要先注册消息才行。
Socket当然也行。
注册表,文件是比较差的选择。

但综合考虑还是用信号量比较方便,也容易兼容。

构造一个命名的CEvent:
CEvent::CEvent( BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE, LPCTSTR lpszName = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL );

其中的 lpszName 为你自己定义的古怪一点的字符串,两个程序中的名字一样,很容易使用。
A strong man can save himself. A great man can save another.
游客

返回顶部