Last Updated 2002/10/22
Programming Tips Visual C++ API  索 引 
PostThreadMessage
2002/10/22

PostThreadMessage() にて FALSE が返る場合がある.
(GetLastError() は 1444)

この原因はポストされる側のスレッドがキューを割り当てていないのが原因である.
(ウィンドウを開いていない場合)
(ウィンドウを開けばキューは割り当てられる)
スレッドが始めてメッセージキュー関連の関数を呼び出すまで,OS はそのスレッドにキューを割り当てない.(資源の浪費をおさえるのが目的)
キューがないのでメッセージをポストできない.
それを解決するには,ポストされる側のアプリケーションの始めに1回だけ

  PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE);

を実行する.
こうすればキューが割り当てられる.


参照
CreateProcess
前後のTips
PostThreadMessage

DSS ProgrammingTipsCGI Ver2.01