国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

.Net利用消息在進(jìn)程間通訊實(shí)現(xiàn)進(jìn)程互操作

2019-11-14 16:25:11
字體:
供稿:網(wǎng)友

  有時候我們會遇到需要在兩個進(jìn)程間通過某種方式實(shí)現(xiàn)互操作,方法有很多,例如你可以嘗試讓兩個進(jìn)程持續(xù)監(jiān)視一個外部文件,由此文件記錄各自進(jìn)程的數(shù)據(jù);還有可以使用網(wǎng)絡(luò)端口實(shí)現(xiàn)進(jìn)程間通訊、共享一片內(nèi)存區(qū)域記錄及傳遞各自進(jìn)程的數(shù)據(jù)等;此處講述在.net 下如何利用消息的傳遞及處理實(shí)現(xiàn)兩個進(jìn)程的通訊。

  是的,這里所說的消息指的就是Windows的消息機(jī)制,對于 I T 菜鳥,可以這樣簡單理解Windows 消息機(jī)制:Windows系統(tǒng)可以同時運(yùn)行很多很多應(yīng)用程序,Windows系統(tǒng)要讓某一個程序做一件事情,就會給這個程序發(fā)送一條消息通知該程序該做什么了。

 

先引入Windows API 方法 SendMessage :

1 [DllImport("User32.dll", EntryPoint = "SendMessage")]2 PRivate static extern int SendMessage(IntPtr wnd, int msg, IntPtr wP, IntPtr lP);


給指定用于響應(yīng)消息的窗體對象重寫消息處理過程

 1 protected override void WndProc(ref System.Windows.Forms.Message msg)  2 { 3     switch(msg.Msg)  4     { 5         case 0x0400: 6             bool OnOff = Convert.ToBoolean((int)msg.LParam); 7             break; 8         default: 9             base.WndProc(ref msg); 10             break; 11     }12 }


好了,上述代碼實(shí)現(xiàn)了接收消息的程序如何處理接收到的消息地址(ID)為0x0400的自定義消息。

現(xiàn)在只需要在用于發(fā)送消息的項(xiàng)目編寫發(fā)送消息的內(nèi)容即可

1 SendMessage(Program.hWnd, 0x0400, (IntPtr)0, (IntPtr)1);

傳遞其它類型數(shù)據(jù),請參照C# <-->C/C++ 類型轉(zhuǎn)換對照表,使用托管到非托管程序集轉(zhuǎn)換數(shù)據(jù)。

如傳遞String類型數(shù)據(jù),SendMessage()傳string,接收的時候使用 string A = Marshal.PtrToStringAnsi(m.LParam) 。

 

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 威远县| 县级市| 定安县| 齐河县| 舒城县| 云霄县| 台东县| 灵宝市| 台北市| 久治县| 日喀则市| 金昌市| 新密市| 萝北县| 威远县| 新绛县| 长治县| 虎林市| 上虞市| 潼南县| 五莲县| 威信县| 咸丰县| 普兰店市| 新营市| 昭平县| 仁化县| 浦东新区| 柏乡县| 宜兰县| 白朗县| 四子王旗| 滦平县| 定远县| 汉川市| 华容县| 定结县| 和田县| 商都县| 集安市| 法库县|