使用PostThreadMessage在进程间传递消息的疑惑
在《multithreading applications in Win32》这本书中看到,可以使用PostThreadMessage函数把消息发给另一个进程,但是我在wince环境的实际使用过程中却发现没有效果。
代码如下:
//进程base.exe创建进程son.exe
PROCESS_INFORMATION pi;
CreateProcess(_T( "son.exe "), NULL, NULL, NULL,
FALSE, 0, NULL, NULL, NULL, &pi);
//做些其它事
……
//希望使用PostThreadMessage关闭进程son.exe
//但是son.exe并没有关闭
//然而如果使用WM_QUIT消息是可以关闭son.exe的
PostThreadMessage(pi.dwThreadId, WM_DESTROY, 0, 0);
问题就是使用WM_DESTROY或WM_CLOSE为什么不能关闭son.exe?
另外使用PostMessage函数可以关闭son.exe
代码如下:
//son为son.exe的标题
HWND hWnd = FindWindow(0, _T( "son "));
PostMessage(hWnd, WM_DESTROY, 0, 0);
希望哪位高手可以帮我解答。
[解决办法]
WM_DESTROY或WM_CLOSE消息应该是发给窗口的,但是PostThreadMessage函数不能给窗口发消息,应该用PostMessage函数。