在消息传递过程中,关于如何获取传递双方窗口句柄的一点小问题

flyingbird_ 2002-05-14 09:07:22
在两个.exe(主框是以CDialog为基类)文件A,B之间通信, 在A中通过CreateProcess将带起,问题如下:
1:这时我希望在A带起B的同时,自动向B发一消息,我在A的初始化函数将B带起来, 这时我又在初始化函数里用FindWindow来获得B的句柄,并向B发送消息,这时没有成功,如果实现它应如何做
2:我在B的初始化函数里获得A的句柄,得不到,在B的一个button的点击函数里实现也得不到, 是否如果是A带起B,这样B就无法得到B的句柄
请大家指教.
...全文
35 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
flyingbird_ 2002-05-15
我想要B和A进行通信,而A中有多个窗口(DIALOG,即有多个线程),而我在A的主窗口中接收并处理消息,也就是要找到A的主窗口的句柄,我在B中发消息时使用了以下语句:
HWND hwnd=::FindWindow(0,"A");
::PostMessage(hwnd,WM_LJ,1,0);
事实证明这样得不到所要的A的主窗口的句柄,我应该如何做才能实现我所要进行的通信。
回复
flyingbird_ 2002-05-15
怎么没人回帖,请大家务必帮忙,小弟等着急用
回复
flyingbird_ 2002-05-15
请告知WaitForInputIdle的两个参数的用法,及第一个参数如何获得
还有如何在B中得到A的主窗口的句柄
回复
webber84 2002-05-15
1:
DWORD WaitForInputIdle(
HANDLE hProcess,
DWORD dwMilliseconds // time-out interval in milliseconds
);
hProcess是子进程的句柄,可以用传递给CreateProcess函数的PROCESS_INFORMATION结构中的hProcess作为这个参数的值。dwMilliseconds 是等待的时间,可以设为INFINITE,表示等待直到B初始化完成。
2:
如果“A”窗口是顶层窗口的话,用FindWindow应该是可以找到的。你看看是不是消息处理函数有问题。
回复
kosuke 2002-05-14
你可以用消息来传递句柄,在两个程序里都注册一个系统消息,A启动B,
在B的初始化函数中用BroadcastSystemMessage发送这个消息,在lParam里
带上自己的句柄
回复
flyingbird_ 2002-05-14
我想要和A进行通信,而A中有多个窗口,而我在A的主窗口中处理消息,当然能得到主窗口的句柄更好
回复
webber84 2002-05-14
1:CreateProcess以后先调用WaitForInputIdle,等待B初始化完成以后再FindWindow;
2:你要得到什么句柄?窗口还是进程?仍用FindWindow
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-05-14 09:07
社区公告

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