2009-05-03 62 views
2

在將此CONSOLE示例轉換爲完整的Windows對話框實現時,我遇到了一個非常「簡單的問題」。 SendMessage()(第283行)返回零, GetLastError顯示0x578 - 窗口句柄無效。Skype原始API(NOT COM API)發送消息問題

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

C++ 2005 Studio速成版說明 http://forum.skype.com/index.php?showtopic=54549

此時之前的通話使用HWND_BROADCAST工作和Skype回覆不如預期,所以我知道Skype正在安裝並正常工作。

我使用的句柄是來自Skype應答消息的wParam值,如代碼中所示。這不是零,但我不確定是否有方法來測試它,而不是使用SendMessage。

從這個C++代碼示例(見zip下載)編譯的應用程序確實工作,所以我很難過。我使用UTF8對消息進行編碼,然後在我的應用程序中創建COPYDATASTRUCT實例,填充它,然後用lparam中的COPYDATASTRUCT指針調用SendMessage()。 Skype不迴應,也不服從。我在這裏錯過了很明顯的東西嗎

+0

您可以使用IsWindow來檢查,如果句柄是一個有效的窗口http://msdn.microsoft.com/en-us/library/ms633528(VS.85).aspx。 AFAIK這項工作如預期,抱歉,但沒有一些代碼,我不知道什麼是錯的。 – Ismael 2009-05-06 06:28:07

回答

1

這是已知的錯誤,解決的辦法是每當您收到WM_COPYDATA時,必須始終從Windows程序返回1。