SendMessage程序間簡單通訊問題

2021-04-20 20:28:07 字數 1625 閱讀 1426

本例以兩個vc dialog

主要api:findwindow(lpc

tstrlpclassname,lpctstrlpwindowname  )

//通過程序名得到程序handle

sendmessage(uintmessage,wparamwparam=0,lparamlparam=0

//the result of the message processing; its value depends on the message sent.

主程式 server :其他均為預設.

mfc 建立一dialog 應用程式,工程名字:server

新增一button控制項command,並與之對應的函式oncommand

在serverdlg.h裡新增自己的訊息:#define wm_comm wm_user+10

函式 oncommand 新增**:

cstring str="client";

cwnd *pwnd=cwnd::findwindow(null,str);

if(pwnd)

pwnd->sendmessage(wm_comm,0,0);//通過sendmessage的後兩個引數

//wparam wparam, lparam lparam傳遞資訊

else messagebox("findwindow null");

mfc另 建立一dialog 應用程式,工程名字:client 在 其

oninitdialog裡最後新增**setwindowtext("client");

在client.h裡新增自己的訊息:#define wm_comm wm_user+10

新增訊息對映:

begin_message_map(csenderdlg, cdialog)

//}afx_msg_map

end_message_map()

給clientdlg.cpp新增自己的訊息處理函式onsendmsg(wparam wparam, lparam lparam)

// wparam  lparam既是要傳遞的資訊

if(wparam==0 && lparam==0)

afxmessagebox("helloworld!");

給執行緒傳遞引數的方法

typedef   struct   tagmyparammyparam;  

dword   winapi   mythreadproc(lpvoid   param)  

/*主線程內把要使用的視窗控制代碼賦給結構*/  

myparam   mp;  

mp.hhost   =   m_hwnd;   /*you   master   window   handle*/  

...  

/*建立執行緒是把引數傳進去*/  

dword   dwid;  

createthread(null,0,(lpthread_start_routine)mythreadproc,(void*)&mp,0,&dwid);   

程序間通訊SendMessage

postmessage貌似只能用於程序內通訊,不同程序間通訊可以用sendmessage和共享記憶體等方式。這裡理出sendmessage的用法,方便日後查閱。傳送訊息的程序 char sztemp 1024 sprintf sztemp,layeredwindow d iwndid 視窗名 hwn...

SendMessage程序間簡單通訊問題

主要api findwindow lpctstrlpclassname,lpctstrlpwindowname 通過程序名得到程序handle sendmessage uintmessage,wparamwparam 0,lparamlparam 0 the result of the messag...

SendMessage程序間簡單通訊問題

程序間通訊常用有3種 1 利用剪貼簿實現程序資料交換.2 利用記憶體對映實現程序資料交換.3 利用訊息機制實現程序間資料共享.主要api findwindow lpctstrlpclassname,lpctstrlpwindowname 通過程序名得到程序handle sendmessage uin...