日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用FindWindow和SendMessage进程通信

發布時間:2023/12/18 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用FindWindow和SendMessage进程通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

利用FindWindow和SendMessage,特此記下。

?????首先說FindWindow。
?????FindWindow返回與指定字符創相匹配的窗口類名或窗口名的最頂層窗口的窗口句柄。函數原型為:
?????C++:
?????HWND FindWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName );
?????lpClassName就是窗口類名,大多數情況不會用到它。lpWindowName是窗口名,就是窗口標題,任何一個窗口都有標題,當然也會有相同標題的,那只會找到在z-order最上層的窗口。
?????
?????再看SendMessage,稍微復雜一點,它是通信的主力軍。
?????SendMessage將指定的消息發送到一個或多個窗口。函數原型為:
?????C++:
?????LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
?????hWnd是接收消息的窗口的句柄。Msg是將被發送的消息。wParam和IParam都是指定附加的消息信息。

?????這里僅僅介紹怎樣利用它們實現進程通信,其實都還有很多功能,不再詳述。
?????要用SendMessage需要知道窗口句柄,這個當然是通過FindWindow,還需要知道是什么消息,在這里用的是0x004A,一般變量命名為WM_COPYDATA,還有就是所要發送的消息信息了,就是具體內容,就需要一個特定的結構COPYDATASTRUCT,原型為:
?????C++:
?????struct COPYDATASTRUCT {ULONG_PTR dwData;DWORD cbData;PVOID lpData;}
??????好了這樣就可以發送消息到另一個窗口上,代碼如下:
?????C++:
?????

Code
void?SendFormMessage(LPCTSTR?formText,?PVOID?msg)
{
????HWND?hwnd=FindWindow(NULL,formText);
????if(hwnd!=0)
?????{
????????COPYDATASTRUCT?cd;
????cd.dwData?=?100;
????cd.cbData?=?100;
????cd.lpData?=?msg;
????SendMessage(hwnd,?WM_COPYDATA,?0,?(LPARAM)(&cd));
????}
}


?????發送完了,那接收窗口就要接收了,怎樣接收呢,也很簡單還是根據消息0x004A來獲得。代碼如下:
?????C++:
?????

Code
LONG?WINAPI??AppWndProc(HWND?hwnd,?UINT?msg,?WPARAM?wParam,?LPARAM?lParam)//重載窗口消息
{
????COPYDATASTRUCT*?pCopyDataStruct;
????char?buf[];

????switch(msg)
?????{
????case?WM_COPYDATA:
?????{
????????pCopyDataStruct?=?(COPYDATASTRUCT*)lParam;
????????memset(&buf,?0,?sizeof(buf));
????????memcpy(&buf,pCopyDataStruct->lpData,pCopyDataStruct->cbData);

????????if?(0?==?strcmp(buf,""))//在這里判斷就可以了
?????????{}
????????}
????????break;
????????
????}
????return?(LONG)?DefWindowProc(hwnd,msg,wParam,lParam);
}

總結

以上是生活随笔為你收集整理的利用FindWindow和SendMessage进程通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。