关于PostThreadMessage能实现进程间通信吗
线程消息可以跨进程发,没问题的。
不过一个线程可能拥有很多窗口,你指定一个线程ID的话,应当是哪个窗口收到呢?窗口的消息循环一般都指定了GetMessage中的窗口句柄参数,一般的窗口是收不到PostThreadMessage邮寄的消息的。(个人见解)
我平时给线程发消息一般都是针对有“消息循环...
感谢回答,不过你第一句话好像说的就不太对吧?消息循环是针对线程的,并非针对窗口吧,postthreadmessage是给某个线程消息循环发消息,SendMessage的第一个参数就是给哪个窗口发,第二个参数才是消息类型,这样,某个线程从他的消息循环中取出消息的时候,MSG本身就包含了hwnd,所以完全不存在你说的那个问题吧。
自己仔细看了几个函数的MSDN,得到了一个简单的“结论”(不对,欢迎评判):
1
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.
2023-07-25 广告