進程間通訊

一列牺、進程間通訊的方式進程間通訊的方式有很多,常用的有共享內(nèi)存(內(nèi)存映射文件划纽、共享內(nèi)存DLL脆侮、剪切板等)、命名管道和匿名管道勇劣、發(fā)送消息等幾種方法來直接完成靖避,另外還可以通過socket口、配置文件和注冊表等來間接實現(xiàn)進程間數(shù)據(jù)通訊任務比默。以上這幾種方法各有優(yōu)缺點幻捏,具體到在進程間進行大數(shù)據(jù)量數(shù)據(jù)的快速交換問題上,則可以排除使用配置文件和注冊表的方法命咐;另外篡九,由于管道和socket套接字的使用需要有網(wǎng)卡的支持,因此也可以不予考慮醋奠。這樣榛臼,可供選擇的通訊方式只剩下共享內(nèi)存和發(fā)送消息兩種。二窜司、發(fā)送消息實現(xiàn)進程間通訊前準備下面的例子用到一個windows api 32函數(shù)[DllImport("User32.dll", EntryPoint = "SendMessage")]private static extern int SendMessage(IntPtr wnd,int msg,IntPtr wP,IntPtr lP);要有此函數(shù)沛善,需要添加using System.Runtime.InteropServices;命名空間此方法各個參數(shù)表示的意義wnd:接收消息的窗口的句柄。如果此參數(shù)為HWND_BROADCAST塞祈,則消息將被發(fā)送到系統(tǒng)中所有頂層窗口金刁,包括無效或不可見的非自身擁有的窗口、被覆蓋的窗口和彈出式窗口议薪,但消息不被發(fā)送到子窗口胀葱。msg:指定被發(fā)送的消息類型。wP:消息內(nèi)容笙蒙。lP:指定附加的消息指定信息抵屿。用api參考手冊查看SendMessage用法時,參考手冊則提示SendMessage與PostMessage之間的區(qū)別:SendMessage和PostMessage捅位,這兩個函數(shù)雖然功能非常相似轧葛,都是負責向指定的窗口發(fā)送消息搂抒,但是SendMessage()?函數(shù)發(fā)出消息后一直等到接收方的消息響應函數(shù)處理完之后才能返回,并能夠得到返回值尿扯,在此期間發(fā)送方程序?qū)⒈蛔枞缶В琒endMessage()?后面的語句不能被繼續(xù)執(zhí)行,即是說此方法是同步的衷笋。而PostMessage()?函數(shù)在發(fā)出消息后馬上返回芳杏,其后語句能夠被立即執(zhí)行,但是無法獲取接收方的消息處理返回值辟宗,即是說此方法是異步的爵赵。三、發(fā)送消息實現(xiàn)進程間通訊具體步驟1.新建windows應用程序(1)打開VS2008泊脐,新建一個“windows 應用程序”空幻,主窗口為Form1,項目名稱:ProcessCommunication(2)在Form1上添加一個標簽為textBox1的文本框容客,并為Form1添加KeyDown事件秕铛,當Form1接收到KewDown消息時,將接收到的數(shù)據(jù)顯示在label1上缩挑。public Form1(){InitializeComponent();this.KeyDown+=new KeyEventHandler(Form1_KeyDown);}private void Form1_KeyDown(object sender, KeyEventArgs e){this.textBox1.Text = Convert.ToString(e.KeyValue);}(3)編譯運行但两,生成ProcessCommunication.exe2.新建windows應用程序??(1)打開VS2008,新建一個“windows 應用程序”供置,主窗口為Form1谨湘,項目名稱:ProcessCommunication1,并在Form1上添加一個按鈕和一個文本框namespace ProcessCommunication1{public partial class Form1 : Form{public Form1(){InitializeComponent();}//Win32 API函數(shù):[DllImport("User32.dll", EntryPoint = "SendMessage")]private static extern int SendMessage(IntPtr wnd,int msg,IntPtr wP,IntPtr lP);private void button1_Click(object sender, EventArgs e){Process[] pros = Process.GetProcesses(); //獲取本機所有進程for (int i = 0; i < pros.Length; i++){if (pros[i].ProcessName == "ProcessCommunication") //名稱為ProcessCommunication的進程{IntPtr hWnd = pros[i].MainWindowHandle; //獲取ProcessCommunication.exe主窗口句柄int data = Convert.ToInt32(this.textBox1.Text); //獲取文本框數(shù)據(jù)SendMessage(hWnd, 0x0100, (IntPtr)data, (IntPtr)0); //點擊該按鈕士袄,以文本框數(shù)據(jù)為參數(shù),向Form1發(fā)送WM_KEYDOWN消息}}?}}}3.啟動ProcessCommunication.exe可執(zhí)行文件谎僻,彈出Form1窗體稱為接受消息窗體娄柳。啟動ProcessCommunication1.exe可執(zhí)行文件,在彈出的窗體中的文本框中輸入任意數(shù)字艘绍,點擊button1按鈕赤拒,接受消息窗體textBox1即顯示該數(shù)字。到此結(jié)束诱鞠。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挎挖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子航夺,更是在濱河造成了極大的恐慌蕉朵,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阳掐,死亡現(xiàn)場離奇詭異始衅,居然都是意外死亡冷蚂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門汛闸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝙茶,“玉大人,你說我怎么就攤上這事诸老÷『唬” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵别伏,是天一觀的道長蹄衷。 經(jīng)常有香客問我,道長畸肆,這世上最難降的妖魔是什么宦芦? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮轴脐,結(jié)果婚禮上调卑,老公的妹妹穿的比我還像新娘。我一直安慰自己大咱,他們只是感情好恬涧,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碴巾,像睡著了一般溯捆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厦瓢,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天提揍,我揣著相機與錄音,去河邊找鬼煮仇。 笑死劳跃,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的浙垫。 我是一名探鬼主播刨仑,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼夹姥!你這毒婦竟也來了杉武?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤辙售,失蹤者是張志新(化名)和其女友劉穎轻抱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旦部,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡十拣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年封拧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夭问。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡泽西,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缰趋,到底是詐尸還是另有隱情捧杉,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布秘血,位于F島的核電站味抖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏灰粮。R本人自食惡果不足惜仔涩,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粘舟。 院中可真熱鬧熔脂,春花似錦、人聲如沸柑肴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晰骑。三九已至适秩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間硕舆,已是汗流浹背秽荞。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抚官,地道東北人扬跋。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像耗式,于是被迫代替她去往敵國和親胁住。 傳聞我的和親對象是個殘疾皇子趁猴,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容