postmessage貌似只能用於程序內通訊,不同程序間通訊可以用sendmessage和共享記憶體等方式。這裡理出sendmessage的用法,方便日後查閱。
傳送訊息的程序**:
char sztemp[1024] = ;
sprintf(sztemp, "layeredwindow_%d", iwndid);//視窗名
hwnd htemp = ::findwindow(null, sztemp);//視窗控制代碼
byte* pglobal = (byte*)::globalalloc(gmem_fixed, str.length());//全域性記憶體
if (!pglobal)
else
copydatastruct copydata = ;
copydata.dwdata = messageid;
copydata.cbdata = (dword)(str.length()+1);
copydata.lpdata = pglobal;
sendmessage(htemp, wm_copydata, 0, (lparam)©data);
::globalfree((hglobal)pglobal);//釋放全域性記憶體
這裡注意要分配全域性記憶體,否則另一程序接受訊息時,訊息被釋放,接受的是亂碼,無法解析。
接受訊息的程序(這裡是win32視窗。如果是mfc視窗程序,可採用訊息對映,在響應函式內解析接受的訊息,示例**網上例子較多,這裡不再贅述)**:
在wndproc訊息響應函式新增訊息響應:..
.case wm_copydata:
; copy_data_structure = (copydatastruct *)lparam;
if (copy_data_structure->dwdata == messageid)
}break;..
.
php程序間通訊 yoc PHP程序間通訊
php是用c編寫的,因此它對系統底層api的操作與c很像,同大多數語言一樣,php程序間通訊的方式有以下幾種 訊息佇列,管道,共享記憶體,socket和訊號。本文是對這幾種通訊方式對整理 管道通訊pipe 管道用於承載簡稱之間的通訊資料。為了方便理解,可以將管道比作檔案,程序a將資料寫到管道p中,然...
程序間通訊
實現程序間資料共享除了常用的記憶體檔案對映外,對於一些非檔案的資料共享可以直接使用wm copydata。如果需要在程序a傳遞資料到程序b,簡單的實現如下 在程序a中 cstring strdatatosend t hello 需要傳遞的資料 hwnd hwndreceived 程序b的接收資料視窗...
程序間通訊
最近做專案遇到奇怪的問題,我在主線程中建立乙個工作執行緒。在工作執行緒中用sendmessage向主線程傳送訊息,通知主線程操作office 物件。getactiveobject時提示 hr 0x8001010d 因為應用程式正在傳送乙個輸入同步呼叫,所以無法執行傳出的呼叫。我把sendmessag...