2009-05-03 4 views
2

Bei der Konvertierung dieses CONSOLE-Beispiel in eine vollständige Windows-Dialog-Implementierung habe ich in ein sehr "einfaches Problem" geraten. SendMessage() (Zeile 283) gibt 0 zurück, GetLastError zeigt 0x578 an - ungültiges Fensterhandle.Skype Raw API (NICHT COM API) Nachricht senden Problem

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

C++ 2005 Studio Express Edition Anweisungen http://forum.skype.com/index.php?showtopic=54549

Der vorherige Anruf mit HWND_BROADCAST arbeitet und Skype antwortet wie erwartet, so dass ich weiß, Skype installiert ist und ordnungsgemäß funktioniert.

Das Handle, das ich verwende, ist der wParam-Wert aus der Skype-Antwortnachricht, wie im Code. Dies ist nicht Null, aber ich bin mir nicht sicher, ob es eine Möglichkeit gibt, es anders als mit SendMessage zu testen.

Die kompilierte App aus diesem C++ - Code-Beispiel (siehe Zip-Download) funktioniert tatsächlich, also bin ich ratlos. Ich codiere die Nachricht mit UTF8, und ich erstelle eine Instanz der COPYDATASTRUCT in meiner App, füllen Sie sie auf und rufen Sie dann SendMessage() mit dem COPYDATASTRUCT-Zeiger in Lparam auf. Skype reagiert nicht und gehorcht auch nicht. Fehle ich etwas Offensichtliches hier?

+0

Sie können IsWindow verwenden zu überprüfen, ob ein Handle ein gültiges Fenster ist http://msdn.microsoft.com/en-us/library/ms633528(VS.85).aspx. AFAIK dies funktioniert wie erwartet, sorry aber ohne Code kann ich nicht sagen, was falsch ist. – Ismael

+0

Danke dafür. Es scheint ein Skype-Fehler zu sein, der hier gemeldet wird https://developer.skype.com/jira/browse/SPA-649 in der nächsten Version behoben. –

Antwort

1

Dies ist bekannt Bug, die Lösung ist, müssen Sie immer 1 von Ihrem Windows-Verfahren zurückgeben, wenn Sie WM_COPYDATA erhalten.