Windows 7でPostMessageが動作しない
Windows Vista(SP1)で、VB.NET2005で開発したアプリとVB.NET2003で開発したアプリの両方向に、PostMessageでメッセージのやりとりは正常ですが、
Windows 7で、VB.NET2005で開発したアプリとVB.NET2003で開発したアプリの両方向に、PostMessageでメッセージのやりとりが、できません。
Windows 7 では、PostMessage APIは使用できないのでしょうか?
できないようでしたら代わりのAPIを教えてください。
よろしく、お願いいたします。
回答
別のテストアプリを作成したところ、問題なく、PostMessage が動作いたしました。
それで、調べていましたら、ウインドウハンドルの値をセットし忘れていたためでした。
よって、Windows7では、PostMessage は問題なく動作することが確認できました。
皆様、お騒がせして申し訳ございませんでした。
いろいろサポートしていただき、ありがとう、ございました。
今後とも、よろしくお願いいたします。- 回答としてマークV5 2009年9月9日 16:19
すべての返信
- こちらのPostMessage のことでしょうか? Windows 7で仕様が変わったという記載もありませんし、そのような話も聞きませんでした。
ちなみにWindows Vistaの時に仕様追加がありました。具体的にはUIPIの制限に引っかかるとPostMessageは動作しません。
しかし、そのVistaでは動いていたとのことですし。
考えられる可能性はVistaとWindows 7とで設定が異なるということです。
つまり、試されたVistaではUIPIが無効にされていてPostMessageが動作したものの、Windows 7ではUIPIを有効にしていたために動作しなくなった、と。
逆に言えば、UIPIを有効にしたVistaでも本当は動作していなかったのかもしれません。
これに関してはUIPIによる問題を検証方法 に関するドキュメントがありますので、試してみるとわかります。
「やりとりが、できません。」ではなくもっと具体的にエラーコードとか書いて欲しいです。 Windows Vista(SP1)で、VB.NET2005で開発したアプリとVB.NET2003で開発したアプリの両方向に、PostMessageでメッセージのやりとりは正常ですが、
「やりとりができない」とはどういったところまで見られたのでしょうか?
Windows 7で、VB.NET2005で開発したアプリとVB.NET2003で開発したアプリの両方向に、PostMessageでメッセージのやりとりが、できません。
メッセージが全く飛んでこない(一方向だけ?両方向?)のか、メッセージは飛んでくるけれども wParam, lParam の値が期待したものと異なるのか、どの程度まで確認されているのでしょうか?
ところで、Vista 環境と Win7 環境の UAC の設定の差はあるのでしょうか?
また、Vista 環境と Win7 環境で管理者として実行する・しないの差や、デバッグ実行している・していないの差はあるのでしょうか?
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- すみません、詳しく説明いたします。
「やりとりができない」とは、メッセージが全く飛んでこないということで、
しかも両方向です。
Win7 環境の UAC の設定はすべての設定で試してみましたが変りませんでした。
Win7 環境で管理者として実行する・しないのどちらで試してみましたが、変りませんでした。
一つ気になったのですが、
VB.NET2005で開発したアプリとVB.NET2003で開発したアプリなので
どちらもVB.NET2005で開発したアプリにする必要があるのでしょうか? 一つ気になったのですが、
そのようなことはないはずです。
VB.NET2005で開発したアプリとVB.NET2003で開発したアプリなので
どちらもVB.NET2005で開発したアプリにする必要があるのでしょうか?
いくつか、下記に質問を並べておきます。
・失敗する状況での PostMessage の戻り値は 0 なのでしょうか?
・戻り値が 0 である場合、GetLastError はどのような戻り値でしょうか?
・ウィンドウメッセージはどのような数値を送っているのでしょうか?
・今回の実験しているアプリ以外に、新たにテスト用に作成したアプリでも再現するのでしょうか?
・再現するアプリで PostMessage する箇所、WndProc で処理する箇所を抜粋することはできますか?
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。別のテストアプリを作成したところ、問題なく、PostMessage が動作いたしました。
それで、調べていましたら、ウインドウハンドルの値をセットし忘れていたためでした。
よって、Windows7では、PostMessage は問題なく動作することが確認できました。
皆様、お騒がせして申し訳ございませんでした。
いろいろサポートしていただき、ありがとう、ございました。
今後とも、よろしくお願いいたします。- 回答としてマークV5 2009年9月9日 16:19


