c 利用VM COPYDATA實現程序間通訊

2022-05-06 17:30:12 字數 2076 閱讀 6052

c#程序間的通訊方式很多種,只會這種,感覺比較簡單。不懂原理,能用就行。

假設有兩個程式:server(主程序),client(子程序)

1.server端:

/*

定義乙個結構體,用來接收從子程序傳過來的資訊,與子程序定義的一樣

*/public

struct

copydatastruct

/*定義乙個訊息型別,與子程序定義的一樣

*/const

int wm_copydata = 0x004a

;

/*處理訊息的方法

*/protected

override

void defwndproc(ref

system.windows.forms.message m)

}

2.client端:

1

using

system;

2using

system.collections.generic;

3using

system.componentmodel;

4using

system.data;

5using

system.drawing;

6using

system.linq;

7using

system.text;

8using

system.windows.forms;

9using system.runtime.interopservices; //

引入這些命名空間

10using

system.diagnostics;

1112

namespace

client

1320

21/*

傳送訊息的結構,與主程序一樣

*/22

public

struct

copydatastruct

2330

31/*

傳送訊息的型別,與主程序一樣

*/32

const

int wm_copydata = 0x004a;33

34/*

通過這個方法,可以找到主程序的窗體

*/35 [dllimport("

user32.dll

", entrypoint = "

findwindow")]

36private

static

extern

int findwindow(string lpclassname, string

lpwindowname);

3738

39/*

傳送訊息的結構體

*/40 [dllimport("

user32.dll

", entrypoint = "

sendmessage")]

41private

static

extern

intsendmessage(

42int

hwnd,

43int

msg,

44int

wparam,

45ref

copydatastruct lparam

46);

4748

49private

void button1_click(object

sender, eventargs e)

5056

else

5768}69

70}71 }

3.主要事項:

①.因為findwindow這個方法是用來找到窗體的,所以server端一定要是winform程式,client可以是winform,也可以是控制台

②.當把傳送訊息的方法,放在迴圈中的時候,會降低程式的效能。上千或上萬次的迴圈,效果會非常明顯。

③.不需要引入其他的dll,直接原生態

C 利用Web Service實現簡訊傳送

通過程式設計方式實現簡訊息的傳送對很多人來說是一件比較煩雜的事情,目前一般的解決方法是通過計算機和手機的連線,通過可對手機程式設計的語言編寫相關的手機簡訊息程式來實現,而這種方法對於一般人來說是很難達到的,因為此種方法不僅要有很多必備的硬體裝置,也還需懂得手機程式設計的相關知識。本文就來 一下另外一...

C 利用模板實現佇列

這個 的實現主要使用了類模板以及模板函式,友元,成員模板以及成員模板函式。這裡需要注意的時,類的成員函式在實現的時候必須滿足以下幾點 1 必須以template開始,後接模板形參表 2 必須指出是那個類成員 3 類名必須包含模板形參 具體的格式如下 templatereturn type queue...

C 利用Web Service實現簡訊傳送

通過程式設計方式實現簡訊息的傳送對很多人來說是一件比較煩雜的事情,目前一般的解決方法是通過計算機和手機的連線,通過可對手機程式設計的語言編寫相關的手機簡訊息程式來實現,而這種方法對於一般人來說是很難達到的,因為此種方法不僅要有很多必備的硬體裝置,也還需懂得手機程式設計的相關知識。本文就來 一下另外一...