プロが教えるわが家の防犯対策術!

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();
// エラー処理
}

以上、よろしくお願い致します。

A 回答 (1件)

メッセージ投げすぎとか?



http://www.microsoft.com/JAPAN/developer/library …

#いくらなんでも10000回も投げてないですよねぇ・・・

この回答への補足

早速の回答ありがとうございます。

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

補足日時:2004/11/10 17:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!