2009-05-03 13 views
2

このCONSOLEの例を完全なウィンドウダイアログの実装に変換する際、私は非常に「簡単な問題」に遭遇しました。 SendMessage()(283行目)が0を返しています。 GetLastErrorが0x578を示しています - 無効なウィンドウハンドルです。Skype未処理API(COM APIでない)send message problem

http://read.pudn.com/downloads51/sourcecode/windows/multimedia/175678/msgapitest.cpp__.htmhttps://developer.skype.com/Download/Sample...example_win.zip

C++ 2005

スタジオ版命令 http://forum.skype.com/index.php?showtopic=54549

HWND_BROADCASTが動作し、期待通りにSkypeは返答使用前の呼び出しを表現するので、私はSkypeがインストールされ、正しく動作している知っています。

私が使用するハンドルは、コードのようにSkype返信メッセージのwParam値です。これはゼロではありませんが、SendMessage以外でテストする方法があるかどうかはわかりません。

このC++コードのサンプル(zip downloadを参照)からコンパイルされたアプリケーションは実際に動作するので、私は困惑しています。私はUTF8でメッセージをエンコードして、私のアプリでCOPYDATASTRUCTのインスタンスを作成し、それからSendMessage()をlparamのCOPYDATASTRUCTポインターで呼び出します。 Skypeは応答しないし、それに従わない。私はここで何かを見逃していますか?

+0

あなたはハンドルが有効ウィンドウhttp://msdn.microsoft.com/en-us/library/ms633528(VS.85).aspxであるかどうかを確認するためにIsWindowを使用することができます。申し訳ありませんが、いくつかのコードがなくても何が間違っているのか分かりません。 – Ismael

+0

ありがとうございます。それはSkypeのバグであると思われます。 https://developer.skype.com/jira/browse/SPA-649 次のリリースで修正されました。 –

答えて

1

これは既知のバグです。解決策は、常にWM_COPYDATAを受信するたびにウィンドウプロシージャから1を返す必要があることです。