0

SendMessageは0を返し、GetLastErrorは2(ERROR_FILE_NOT_FOUND)を返します。ERROR_ACCESS_DENIED文書化されていますが、これではありません。誰かがこれが何を意味するのか分かりますか?

4

1 に答える 1

2

0 を返す SendMessage は、失敗を示すことはありません。SendMessage は、多くの場合 0 である WindowProc によって返される値を返すだけです。SendMessage がメッセージを配信できなかった場合 (ウィンドウが無効であるか、より高い整合性レベルのプロセスに属しているなどの理由で) を知る方法はありません。 )。

メッセージが 0 以外の値を返すと記載されている場合、メッセージによっては、GetLastError() を調べて、メッセージ処理が失敗した理由を調べることが有効な場合があります。

また、OS 関数は最後のエラー コードをクリアしないため、GetLastError() の値は完全に偶発的なものになる可能性があります。API を呼び出してから GetLastError() を呼び出すと、前の API 呼び出しでエラーが発生したか、内部的に呼び出された API が「失敗」したが処理され、API 自体が成功した操作を実行した可能性があります。

于 2009-09-30T08:41:05.703 に答える