2009-05-03 7 views
2

Lors de la conversion de cet exemple CONSOLE en une implémentation de dialogue Windows complète, j'ai rencontré un problème très simple. SendMessage() (ligne 283) renvoie zéro, GetLastError révèle 0x578 - handle de fenêtre non valide.API Skype Raw (PAS COM API) envoyer un message

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 instructions édition http://forum.skype.com/index.php?showtopic=54549

L'appel précédent à l'aide fonctionne HWND_BROADCAST et Skype répond comme prévu, donc je sais Skype est installé et fonctionne correctement.

Le handle que j'utilise est la valeur wParam du message Skype Reply, comme dans le code. Ce n'est pas zéro, mais je ne suis pas sûr qu'il existe un moyen de le tester autrement qu'avec SendMessage.

L'application compilée à partir de cet exemple de code C++ (voir le téléchargement par zip) fonctionne réellement, donc je suis perplexe. Je code le message avec UTF8, et je crée une instance de COPYDATASTRUCT dans mon application, je la remplis puis j'appelle SendMessage() avec le pointeur COPYDATASTRUCT dans lparam. Skype ne répond pas et n'obéit pas. Est-ce que je manque quelque chose d'évident ici?

+0

Vous pouvez utiliser IsWindow pour vérifier si une poignée est une fenêtre valide http://msdn.microsoft.com/en-us/library/ms633528(VS.85).aspx. AFAIK ce travail comme prévu, désolé mais sans un peu de code je ne peux pas dire ce qui ne va pas. – Ismael

+0

Merci pour cela. Il semble que ce soit un bogue de Skype rapporté ici https://developer.skype.com/jira/browse/SPA-649 corrigé dans la prochaine version. –

Répondre

1

Ceci est un bug connu, la solution est que vous devez toujours retourner 1 de votre procédure Windows chaque fois que vous recevez WM_COPYDATA.