高手相助--启动两个应用程序时怎样互相传递消息?急!!!(高分相送)

崇广 2003-07-25 09:20:03
请问各位,当启动两个应用程序时怎样互相传递消息呢?不是网络的问题。
举例来说,我现在启动两个对话框(两个不同的程序),假设为D1和D2,当我在D1的
对话框中输入一些字符,这时D2能够接受到这些字符,并显示出来。
问题怎样解决呢?请各位高手相助。
...全文
46 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcracoon 2003-07-25
  • 打赏
  • 举报
回复
精彩呀,学到不少东西。
sp
崇广 2003-07-25
  • 打赏
  • 举报
回复
能否给个示例呢?
fengge8ylf 2003-07-25
  • 打赏
  • 举报
回复
用FindWindow找到D2或D2的一个编辑框的句柄,然后用SendMessage()就行了,字符串作为参数.

-----------------------------
为了得到我应该得到的
为了找回我曾经失去的
wj59 2003-07-25
  • 打赏
  • 举报
回复
楼上回答的行好
ckp 2003-07-25
  • 打赏
  • 举报
回复
我修正一下,两个程序间通讯,只能通过WM_COPYDATA:-)
ckp 2003-07-25
  • 打赏
  • 举报
回复
1、如果是父窗口和子窗口间通讯,就在父类中设一个成员变量,然后,子窗口取得父窗口的句柄;2、使用WM_COPYDATA;
3、使用全局变量;

pcitman 2003-07-25
  • 打赏
  • 举报
回复
我是用内存映射文件记录下窗口的句柄,这样不用注册消息也不用广播,也不用通过VC的工具(spy++),或者承受FindWindow所带来的同标题的窗口的风险。
只需要程序开始运行的时候把自己的句柄写到内存文件中,退出的时候再清0
wangweintk 2003-07-25
  • 打赏
  • 举报
回复
总的来说,可以用消息的方法进行通迅:
具体地说:
1.注册消息,应用程序间通迅消息必须注册:
static const UINT UWM_CALL =
::RegisterWindowMessage(_T("YOU_MESSAGE"));

2.从一个程序向另一个程序的主窗口发送,参数也可以传递:
SendMessage(),或PostMessage()。

3.窗口的句柄可以通过以下方法获得:

A:运行要接收消息的程序,通过VC的工具(spy++),找到该程序主窗口的类名和窗口名。
用FindWindow(找到的类名和窗口名),代入,得到接收消息的应用程序主窗口句柄了。

B:或者在发送消息时,直接用"广播"参数(HWND_BROADCAST),不用再找窗口句柄。

4.剩下的消息定义和映射等,我想可以不和再讲了。

祝你成功!

HuWenjin 2003-07-25
  • 打赏
  • 举报
回复
用 WM_COPYDATA 消息


直接从一个程序发到另一个,自定义消息结构传递数据
zhucde 2003-07-25
  • 打赏
  • 举报
回复
mark
storein 2003-07-25
  • 打赏
  • 举报
回复
使用消息的方式.
static const UINT UWM_CALL =
::RegisterWindowMessage(_T("YOU_MESSAGE"));
在两个程序的MainFrame中都使用以上函数注册消息 YOU_MESSAGE,那么你就可以通过SendMessage的方式发送在两个程序间发送消息了.该函数用在MainFram.cpp的开头即可.
喝醉的咖啡 2003-07-25
  • 打赏
  • 举报
回复
DDE
RPC
内存映射文件
全局共享数据段

也都可以实现。
还可以创建一个Global的COM实例,通过Event中转
bsk 2003-07-25
  • 打赏
  • 举报
回复
学了不少,^_^
fengge8ylf 2003-07-25
  • 打赏
  • 举报
回复
HWND hwnd = FindWindow(NULL,"D2的标题");//FindWindowEx()函数可以找到控件的句柄.
SendMessage(hwnd ,WM_SETTEXT,0,"要传递的字符串");

-----------------------------
为了得到我应该得到的
为了找回我曾经失去的
kui 2003-07-25
  • 打赏
  • 举报
回复
没想到有那么多的方法!
wangweintk 2003-07-25
  • 打赏
  • 举报
回复
spy++工具窗口弹出后,选择"Find Window",在弹出的窗口中,把"靶心"用鼠标拖到D2应用程序的主窗口,屏幕上的caption,和class两行后显示的内容就是你要的值了,记住,一定要拖到主窗口。
wangweintk 2003-07-25
  • 打赏
  • 举报
回复
启动D2,用VC的工具SPY++找一下,就可以了,以后每次启动时,这个值不会变的。
nonocast 2003-07-25
  • 打赏
  • 举报
回复
内存映射
崇广 2003-07-25
  • 打赏
  • 举报
回复
Find函数中需要的类名和窗口名应该在D2中怎样标识?
fhtao 2003-07-25
  • 打赏
  • 举报
回复
sendmessage就行了
加载更多回复(1)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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