Skype Raw API(非 COM API)发送消息问题

发布于 2024-07-18 06:36:57 字数 1062 浏览 4 评论 0原文

在将此 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我三岁 2024-07-25 06:36:57

这是已知的错误,解决方案是每当您收到 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文