• 締切済み

PostMessageがERROR_ALREADY_EXISTS終了

Windows2000 SP3上で動作するDLLを作成しています。 (先方のご都合でSP4ではなくSP3です) そのDLLではPostMessage関数でメッセージを同じウィンドウへ繰り返し送っているのですが、突然、PostMessage関数がERROR_ALREADY_EXISTS終了してしまう現象が発生してしまいます。 そこでご教示頂きたいのですが、PostMessage関数がERROR_ALREADY_EXISTS終了する原因はどんなことが考えられるのでしょうか? 通常、ERROR_ALREADY_EXISTS終了はCreateMutex関数などで同じ名前のオブジェクトがある場合に返されるエラーだと認識しているのですが、PostMessage関数で発生する原因が掴めずに困っています。 以下、ソースですが、単純にPostMessage失敗時にGetLastErrorを行っているだけです... bReturn = PostMessage(hWnd, uMsg, (WPARAM)NULL, (LPARAM)lplMsg); if (bReturn == FALSE) { lasterror = GetLastError(); // エラー処理 } 以上、よろしくお願い致します。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

メッセージ投げすぎとか? http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_postmessage.htm #いくらなんでも10000回も投げてないですよねぇ・・・

bow2001
質問者

補足

早速の回答ありがとうございます。 メッセージは受け取った側がその都度引き取っていますので、メッセージキューに10000個溜まることはないと考えています。 試しにメッセージを引き取ることなくひたすらPostMessageを繰り返すTPを作ってみたところ、10001回目で PostMessage関数が異常終了しました。この時、GetLastErrorをすると何故か「0」でした。 (ちなみに、XPでは、GetLastErrorがERROR_NOT_ENOUGH_QUOTAを返しました。)

関連するQ&A