关于PostThreadMessage能实现进程间通信吗

 我来答
疯狂的贤者
2015-09-01 · TA获得超过641个赞
知道小有建树答主
回答量:343
采纳率:0%
帮助的人:538万
展开全部

线程消息可以跨进程发,没问题的。

不过一个线程可能拥有很多窗口,你指定一个线程ID的话,应当是哪个窗口收到呢?窗口的消息循环一般都指定了GetMessage中的窗口句柄参数,一般的窗口是收不到PostThreadMessage邮寄的消息的。(个人见解)

我平时给线程发消息一般都是针对有“消息循环...

感谢回答,不过你第一句话好像说的就不太对吧?消息循环是针对线程的,并非针对窗口吧,postthreadmessage是给某个线程消息循环发消息,SendMessage的第一个参数就是给哪个窗口发,第二个参数才是消息类型,这样,某个线程从他的消息循环中取出消息的时候,MSG本身就包含了hwnd,所以完全不存在你说的那个问题吧。
自己仔细看了几个函数的MSDN,得到了一个简单的“结论”(不对,欢迎评判):

BOOL PostThreadMessage( DWORD idThread,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);

The PostThreadMessage function posts a message to the message queue of the specified thread. It returns without waiting for the thread to process the message.

说了,是给消息队列的某个线程。
2 DWORD GetWindowThreadProcessId( HWND hWnd,
LPDWORD lpdwProcessId
);

The GetWindowThreadProcessId function retrieves the identifier of the thread that created the specified window and, optionally, the identifier of the process that created the window. 

参照一下参数返回信息。

Parameters

hWnd
[in] Handle to the window. 
lpdwProcessId
[out] Pointer to a variable that receives the process identifier. If this parameter is not NULL, GetWindowThreadProcessId copies the identifier of the process to the variable; otherwise, it does not. 
Return Value

The return value is the identifier of the thread that created the window.
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式