EXE之間通訊

2021-08-08 11:44:21 字數 1451 閱讀 9814

而且還有好幾種方法。1 傳送訊息傳遞 2 共享記憶體傳遞 3 使用com程序外伺服器 ...

這篇文章主要說明一下,如何利用傳送訊息使兩個exe完成通訊。其他兩個方法感興趣可以搜尋下,都可以找到相應

傳送端:

public partial class mainwindow : window

[structlayout(layoutkind.sequential)]

public struct copydatastruct

public const int wm_copydata = 0x004a;

//通過視窗的標題來查詢視窗的控制代碼

[dllimport("user32.dll", entrypoint = "findwindow")]

public static extern intptr findwindow(string lpclassname, string lpwindowname);

//在dll庫中的傳送訊息函式

[dllimport("user32.dll", entrypoint = "sendmessage")]

private static extern int sendmessage(

intptr hwnd, //目標窗體控制代碼

int msg, //wm_copydata

int wparam, //自定義數值

ref copydatastruct lparam //傳遞訊息的結構體,

);public static void sendmessage(string windowname, string strmsg)

}private void button_click(object sender, routedeventargs e)

}

接收端:

public partial class mainwindow : window

//wm_copydata訊息所要求的資料結構

[structlayout(layoutkind.sequential)]

public struct copydatastruct

private const int wm_copydata = 0x004a;

//訊息迴圈捕捉資訊(winform裡是過載wndproc)

protected override void onsourceinitialized(eventargs e)

}private intptr wndproc(intptr hwnd, int msg, intptr wparam, intptr lparam, ref bool handled)

return hwnd;

}}

dll與exe之間的互動

外掛程式一般是以dll的形式存在,而宿主則以exe的形式存在,他們之間必然要互動。通常,互動方式可以是com,一種微軟定義的複雜介面方式,不過支援的人挺多的,但是不利於跨平台使用,而且開發太複雜了。另一方式就是使用訊息系統,互動之間傳遞訊息,還可以實現互動,就是處理起來用非同步方式,稍微有點不自然,...

OBJ LIB DLL與EXE之間的關係

obj是中間 檔案 lib是靜態庫檔案 dll是動態庫檔案 exe是可執行檔案。對於靜態庫檔案,鏈結的時候把其中需要的東西抽取出來嵌入到exe中,exe較大。對於動態庫檔案,exe執行的時候依賴於dll提供的功能,沒有dll則exe無法執行,exe較小。乙個c或cpp檔案被編譯後既是乙個obj,當所...

程式之間通訊

訊息作用 在程序間共享資料 內部通過建立記憶體對映檔案 訊息介紹 需要用到的資料結構 型別 typedef struct tagcopydatastruct copydatastruct,pcopydatastruct 結構體引數說明 dwdata ulong 儲存乙個數值,可以用來作標誌等 lpd...