程序間通訊

2021-04-20 01:23:01 字數 528 閱讀 3746

最近做專案遇到奇怪的問題,我在主線程中建立乙個工作執行緒。在工作執行緒中用sendmessage向主線程傳送訊息,通知主線程操作office 物件。

::getactiveobject時提示  hr 0x8001010d 因為應用程式正在傳送乙個輸入同步呼叫,所以無法執行傳出的呼叫。

我把sendmessage改為postmessage後,程式執行沒問題。

下面是在網上收集的一些sendmessage和postmessage的區別:

postmessage只把訊息放入佇列,不管其他程式是否處理都返回,然後繼續執行,這是個非同步訊息投放函式。而sendmessage必須等待其他程式處理訊息完了之後才返回,繼續執行,這是個同步訊息投放函式。而且,postmessage的返回值表示postmessage函式執行是否正確;而sendmessage的返回值表示其他程式處理訊息後的返回值。

找到原因了,但是

為什麼「應用程式正在傳送乙個輸入同步呼叫,所以無法執行傳出的呼叫」。

大概是執行緒同步問題,目前理解還不是很清楚。如有高手路過,望指點一二。

php程序間通訊 yoc PHP程序間通訊

php是用c編寫的,因此它對系統底層api的操作與c很像,同大多數語言一樣,php程序間通訊的方式有以下幾種 訊息佇列,管道,共享記憶體,socket和訊號。本文是對這幾種通訊方式對整理 管道通訊pipe 管道用於承載簡稱之間的通訊資料。為了方便理解,可以將管道比作檔案,程序a將資料寫到管道p中,然...

程序間通訊

實現程序間資料共享除了常用的記憶體檔案對映外,對於一些非檔案的資料共享可以直接使用wm copydata。如果需要在程序a傳遞資料到程序b,簡單的實現如下 在程序a中 cstring strdatatosend t hello 需要傳遞的資料 hwnd hwndreceived 程序b的接收資料視窗...

程序間通訊

1.剪下板 儲存到剪下板 if openclipboard 從剪下板得到資料 if openclipboard 判斷是否開啟剪下板 2.匿名管道 匿名管道只適用於父子程序之間的通訊,在父程序中建立匿名管道,然後啟動子程序,用readfile 和writefile 實現資訊的傳送與接收 parentp...