我正在尝试使用WM_COPYDATA将数据从一个应用程序发送到另一个应用程序。这两个应用程序都是控制台,没有窗口。我可以很好地发送用户消息。当我尝试发送WM_COPYDATA,并设置数据结构时,我得到错误1159,基本上我说我必须使用同步消息调用发送...但是没有SendThreadMessage。
这似乎是对api或docs的疏忽?似乎没有办法只使用没有窗口的线程使用WM_COPYDATA?
答案 0 :(得分:5)
WM_COPYDATA
只能发送,无法发布。由于有效负载在进程之间进行封送,因此会创建临时数据结构以支持该封送。消息处理完成后,需要销毁它们。这意味着必须同步传递消息。
所有这些都意味着您无法使用PostThreadMessage
。相反,您需要创建一个窗口来充当此类消息的接收者。请注意,此窗口可以是message-only window,不需要显示。