Skype Raw API(非 COM API)发送消息问题
在将此 CONSOLE 示例转换为完整的 Windows 对话框实现时,我遇到了一个非常“简单的问题”。 SendMessage()(第 283 行)返回零, GetLastError 显示 0x578 - 无效的窗口句柄。
http://read.pudn.com/downloads51/ sourcecode/windows/multimedia/175678/msgapitest.cpp__.htm (https://developer.skype.com/Download/Sample...example_win .zip)
C++ 2005 Studio 精简版说明 http://forum.skype.com/index.php?showtopic=54549
之前使用 HWND_BROADCAST 的呼叫有效,并且 Skype 按预期回复,因此我知道 Skype 已安装并正常工作。
我使用的句柄是 Skype Reply 消息中的 wParam 值,如代码中所示。 这是非零,但我不确定除了使用 SendMessage 之外是否还有其他方法可以测试它。
从这个 C++ 代码示例(参见 zip 下载)编译的应用程序确实可以工作,所以我很困惑。 我使用 UTF8 对消息进行编码,并在应用程序中创建 COPYDATASTRUCT 的实例,填充它,然后使用 lparam 中的 COPYDATASTRUCT 指针调用 SendMessage()。 Skype 既不回应也不服从。 我在这里遗漏了一些明显的东西吗?
In converting this CONSOLE example to a full windows dialog implementation I have run into a very "simple problem". SendMessage() (line 283) is returning zero,
GetLastError reveals 0x578 - Invalid window handle.
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 instructions
http://forum.skype.com/index.php?showtopic=54549
The previous call using HWND_BROADCAST works and Skype replies as expected, so I know Skype is installed and working properly.
The handle I use is the wParam value from the Skype Reply message, as in the code. This is non zero, but I am not sure if there is a way to test it other than with SendMessage.
The compiled app from this C++ code example (see zip download) does actually work so I am stumped. I do encode the message with UTF8, and I create an instance of the COPYDATASTRUCT in my app, populate it then call SendMessage() with the COPYDATASTRUCT pointer in lparam. Skype does not respond nor does it obey. Am I missing something obvious here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请参阅:http://forum.skype.com/index.php?showtopic=790491
Please see this: http://forum.skype.com/index.php?showtopic=790491
这是已知的错误,解决方案是每当您收到 WM_COPYDATA 时,您必须始终从 Windows 过程返回 1。
This is known bug, the solution is you must always return 1 from your windows procedure whenever your receive WM_COPYDATA.