winapi - WM_COPYDATA、PostThreadMessage 和错误 1159

标签 winapi

我正在尝试使用 WM_COPYDATA 将数据从一个应用程序发送到另一个应用程序。这两个应用程序都是控制台并且没有窗口。我可以很好地发送用户消息。当我尝试发送 WM_COPYDATA 并设置数据结构或不设置时,我收到错误 1159,这基本上表明我必须使用同步消息调用来发送...但没有 SendThreadMessage。

这似乎是 API 或文档中的疏忽?似乎没有办法在没有窗口的情况下仅使用线程来使用WM_COPYDATA?

最佳答案

WM_COPYDATA 只能发送,不能发布。由于有效负载在进程之间进行编码,因此会创建临时数据结构来支持该编码。消息处理完成后需要销毁它们。这意味着消息必须同步传递。

所有这些都意味着您无法使用PostThreadMessage。相反,您需要创建一个窗口来充当此类消息的接收者。请注意,此窗口可以是 message-only window并且不需要可见。

关于winapi - WM_COPYDATA、PostThreadMessage 和错误 1159,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38733900/

相关文章:

c++ - 阅读 Firefox 书签

c - WinSock 的 send() 总是返回 0 字节发送

.net - GetAsyncKeyState 是否有 .Net 替代品?

c# - 用 C# 编写控制台包装器?

winapi - 如何使用 win32 在 D 中创建 Windows?

c++ - 如何从加载程序 DLL 获取函数地址?

windows - SetThreadAffinityMask 被忽略....有什么想法吗?

winapi - SetTimer 与 CWnd::SetTimer

c# - 检索任何窗口的所有控件及其类型和值

c++ - 使用 C++ 将 key 发送到另一个 Windows 应用程序