2009-05-03 60 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。