我想從一個應用程序發送數據到另一個使用WM_COPYDATA。這兩個應用程序都是控制檯,沒有窗口。我可以發送用戶消息就好了。當我嘗試發送WM_COPYDATA,並設置數據結構或不,我得到錯誤1159,基本上說我必須發送使用同步消息調用...但尚無SendThreadMessage。WM_COPYDATA,PostThreadMessage和錯誤1159
看來這是api或文檔中的疏忽?似乎沒有辦法使用WM_COPYDATA只使用沒有窗口的線程?
我想從一個應用程序發送數據到另一個使用WM_COPYDATA。這兩個應用程序都是控制檯,沒有窗口。我可以發送用戶消息就好了。當我嘗試發送WM_COPYDATA,並設置數據結構或不,我得到錯誤1159,基本上說我必須發送使用同步消息調用...但尚無SendThreadMessage。WM_COPYDATA,PostThreadMessage和錯誤1159
看來這是api或文檔中的疏忽?似乎沒有辦法使用WM_COPYDATA只使用沒有窗口的線程?
WM_COPYDATA
只能發送,不能發佈。由於負載在進程之間編組,所以創建臨時數據結構來支持編組。消息處理完成後,它們需要被銷燬。這意味着消息必須同步傳遞。
所有這一切意味着您不能使用PostThreadMessage
。相反,您需要創建一個窗口充當此類消息的接收者。請注意,此窗口可能是message-only window,並且不需要可見。
那麼,我可以使用PostThreadMessage來傳輸數據。似乎是最簡單的方法。我不需要表演,只需轉移。 – AbstractDissonance
請顯示您的發送和接收代碼,包括消息循環。 – Ari0nhh
'WM_COPYDATA'需要一個窗口,因爲它不能異步發送。 –
進程間通信的另一種常見手段是[管道](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365780.aspx)(或[命名管道](https:// msdn .microsoft.com/EN-US /庫/窗/臺式機/ aa365590.aspx))。這可能更適合您的場景。 – IInspectable