亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > C# > 正文

C#應(yīng)用程序之間相互通信的方法

2023-05-17 11:41:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

有時(shí),我們需要兩個(gè)應(yīng)用程序之間發(fā)送消息,本文就轉(zhuǎn)載了一篇文章介紹了實(shí)現(xiàn)此功能的方法。

注意這里發(fā)送消息的函數(shù):public static void SendMessage(string destProcessName, int msgID, string strMsg),只能發(fā)送一個(gè)msgID和一個(gè)strMsg, 接收方只接收了strMsg,我的項(xiàng)目中已經(jīng)夠用了,你如果需要讀msgID,還需要改一下??蛻舳舜a請(qǐng)參考csdn上的原文自己寫吧。

進(jìn)程之間通訊的幾種方法:

在Windows程序中,各個(gè)進(jìn)程之間常常需要交換數(shù)據(jù),進(jìn)行數(shù)據(jù)通訊。常用的方法有

(1)使用內(nèi)存映射文件

(2)通過(guò)共享內(nèi)存DLL共享內(nèi)存

(3)使用SendMessage向另一進(jìn)程發(fā)送WM_COPYDATA消息

比起前兩種的復(fù)雜實(shí)現(xiàn)來(lái),WM_COPYDATA消息無(wú)疑是一種經(jīng)濟(jì)實(shí)惠的一種方法.

WM_COPYDATA消息的主要目的是允許在進(jìn)程間傳遞只讀數(shù)據(jù)。Windows在通過(guò)WM_COPYDATA消息傳遞期間,不提供繼承同步方式。

SDK文檔推薦用戶使用SendMessage函數(shù),接受方在數(shù)據(jù)拷貝完成前不返回,這樣發(fā)送方就不可能刪除和修改數(shù)據(jù):

這個(gè)函數(shù)的原型及其要用到的結(jié)構(gòu)如下:

SendMessage(hwnd, WM_COPYDATA, wParam, lParam);

其中: WM_COPYDATA對(duì)應(yīng)的十六進(jìn)制數(shù)為0x004A

wParam設(shè)置為包含數(shù)據(jù)的窗口的句柄。

lParam指向一個(gè)COPYDATASTRUCT的結(jié)構(gòu):

typedef struct tagCOPYDATASTRUCT
{
   DWORD dwData; //用戶定義數(shù)據(jù)
   DWORD cbData; //數(shù)據(jù)大小
   PVOID lpData; //指向數(shù)據(jù)的指針
} COPYDATASTRUCT;

該結(jié)構(gòu)用來(lái)定義用戶數(shù)據(jù)。

具體過(guò)程如下:

首先,在發(fā)送方,用FindWindow找到接受方的句柄,然后向接受方發(fā)送WM_COPYDATA消息。

接受方在DefWndProc事件中處理這條消息。由于中文編碼是兩個(gè)字節(jié), 所以傳遞中文時(shí)候字節(jié)長(zhǎng)度要搞清楚。

protected override void DefWndProc(ref System.Windows.Forms.Message m) {
  switch(m.Msg) {
    case WinMessageUtil.WM_COPYDATA:
      string str = WinMessageUtil.ReceiveMessage(ref m);
      break;
    default:
      break;
   }
  base.DefWndProc(ref m);
}

using System;
using System.Runtime.InteropServices;
using System.Diagnostics;

namespace Speeding.Util
{
    //WM_COPYDATA消息所要求的數(shù)據(jù)結(jié)構(gòu)
    public struct CopyDataStruct
    {
        public IntPtr dwData; //這里注意,一定要用IntPtr網(wǎng)上好多別的用的int會(huì)出錯(cuò)
        public int cbData;
        [MarshalAs(UnmanagedType.LPStr)]
        public string lpData;
    }

    /// <summary>
    /// 本類封裝了一些進(jìn)程間通訊的細(xì)節(jié)
    /// </summary>
    public class WinMessageUtil
    {
        public const int WM_COPYDATA = 0x004A;
        //通過(guò)窗口的標(biāo)題來(lái)查找窗口的句柄
        [DllImport("User32.dll",EntryPoint="FindWindow")]
        private static extern int FindWindow(string lpClassName, string lpWindowName);
        //在DLL庫(kù)中的發(fā)送消息函數(shù)
        [DllImport("User32.dll",EntryPoint="SendMessage")]
        private static extern int SendMessage
        (
            int hWnd, // 目標(biāo)窗口的句柄
            int Msg, // 在這里是WM_COPYDATA
            int wParam, // 第一個(gè)消息參數(shù)
            ref CopyDataStruct lParam // 第二個(gè)消息參數(shù)
        );

        /// <summary>
        /// 發(fā)送消息,只能傳遞一個(gè)自定義的消息ID和消息字符串,想傳一個(gè)結(jié)構(gòu),但沒成功
        /// </summary>
        /// <param name="destProcessName">目標(biāo)進(jìn)程名稱,如果有多個(gè),則給每個(gè)都發(fā)送</param>
        /// <param name="msgID">自定義數(shù)據(jù),可以通過(guò)這個(gè)來(lái)決定如何解析下面的strMsg</param>
        /// <param name="strMsg">傳遞的消息,是一個(gè)字符串</param>
        public static void SendMessage(string destProcessName, int msgID, string strMsg)
        {
            if(strMsg == null) return;
            //按進(jìn)程名稱查找,同名稱的進(jìn)程可能有許多,所以返回的是一個(gè)數(shù)組
            Process []foundProcess = Process.GetProcessesByName(destProcessName);
            foreach(Process p in foundProcess)
            {
                int toWindowHandler = p.MainWindowHandle.ToInt32();
                if(toWindowHandler != 0)
                {
                   CopyDataStruct cds;
                   cds.dwData = (IntPtr) msgID; //這里可以傳入一些自定義的數(shù)據(jù),但只能是4字節(jié)整數(shù)
                   cds.lpData = strMsg; //消息字符串
                   cds.cbData = System.Text.Encoding.Default.GetBytes(strMsg).Length + 1; //注意,這里的長(zhǎng)度是按字節(jié)來(lái)算的
                  //發(fā)送方的窗口的句柄, 由于本系統(tǒng)中的接收方不關(guān)心是該消息是從哪個(gè)窗口發(fā)出的,所以就直接填0了
                  int fromWindowHandler = 0;
                  SendMessage(toWindowHandler, WM_COPYDATA, fromWindowHandler, ref cds);
                }
              }
          }
          /// <summary>
          /// 接收消息,得到消息字符串
          /// </summary>
          /// <param name="m">System.Windows.Forms.Message m</param>
          /// <returns>接收到的消息字符串</returns>
          public static string ReceiveMessage(ref System.Windows.Forms.Message m)
          {
            CopyDataStruct cds = (CopyDataStruct) m.GetLParam(typeof(CopyDataStruct));
            return cds.lpData;
        }
    }
}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
在线欧美三区| 亚洲精品456| 日本动漫理论片在线观看网站| 浪潮av一区| 91精品国产成人www| 免费久久久一本精品久久区| 天天操天天摸天天爽| 亚洲一区在线视频观看| 国产第一页在线观看| 中文字幕日韩av资源站| 亚洲va在线va天堂va偷拍| 亚洲美女色播| 国产噜噜噜噜久久久久久久久| 欧美日韩国产系列| 国产精品久久久久久99| 台湾成人免费视频| 精品亚洲免费视频| 一区二区三区四区不卡在线| 小明成人免费视频一区| 欧美亚洲精品一区二区| 在线不卡亚洲| 久久在线观看免费| 夜夜嗨aⅴ免费视频| 99精品人妻少妇一区二区| 国产色综合视频| 欧美国产大片| 91精品一区二区三区蜜桃| 日韩新的三级电影| 色婷婷久久久综合中文字幕| 一本色道综合久久欧美日韩精品| 精品大片一区二区| 久久999免费视频| 伊人久久成人网| 亚洲欧美小说国产图片| 久久久久综合一区二区三区| 久久人妻少妇嫩草av无码专区| 精品久久久久久久久久久久久久| 亚洲精品综合久久中文字幕| 日韩综合视频在线观看| 青青草视频在线免费直播| 777亚洲妇女| 亚洲free性xxxx护士hd| 99视频精品免费视频| 国产成人三级一区二区在线观看一| 精品人妻一区二区三区日产乱码卜| 小小的日本在线观看免费色网| 精品人妻一区二区三区浪潮在线| 美腿丝袜一区二区三区| 久久综合精品国产一区二区三区| 成人网址在线观看| 日韩中文在线不卡| 91精品在线免费视频| 九九视频在线免费观看| 欧美另类专区| 久久免费成人精品视频| 亚洲精品精品亚洲| av中文字幕一区二区| 国产欧美一区二区三区在线看蜜臂| 影音先锋国产资源站| 欧美色123| 黄网站免费在线| 啊啊啊啊啊好爽| 99久久99久久精品| 国产伦理一区| 亚洲爱情岛论坛永久| 成人www视频网站免费观看| 久久久久久久久久综合| 亚洲精一区二区三区| 色欧美自拍视频| 黄页在线观看免费| 欧美激情三级| 蜜桃视频一区二区在线观看| 亚洲v日韩v欧美v综合| 欧美brazzers| 国产精品亚洲综合久久| 中文字幕av日韩精品| 91精品天堂| 亚洲成人资源| 91成人在线免费视频| 黄网站色欧美视频| 国产在线视频不卡二| 久久av喷吹av高潮av| 国产.精品.日韩.另类.中文.在线.播放| 波多野结衣在线播放| 中国毛片直接看| av日韩在线网站| 日本视频一区二区不卡| 91精品推荐| 色乱码一区二区三区熟女| 精品国偷自产国产一区| 伊人久久久久久久久久久久久久| 精品国产aaa| 114美女做爰视频在线| 亚洲精品在线一区二区| 日韩精品无码一区二区三区| 国产一区二区成人| 狠狠干 狠狠操| 久久久噜噜噜久久| 女生裸体无遮挡天堂网站免费| 中文字幕国产一区二区| 国内精品久久久久久中文字幕| 日韩视频免费在线播放| 午夜精品999| 精品欧美国产一区二区三区不卡| 亚洲国产精品成人综合久久久| 免费看黄网站在线观看| 国产一区二区三区黄片| 精品国产一区二区三区久久久| 亚洲午夜电影网| 国产黄色片在线| 亚洲视频精品| 日本高清不卡一区二区三| 婷婷免费在线观看| 欧美伊久线香蕉线新在线| 国产乱码精品一区二区三区不卡| 九色综合国产一区二区三区| 亚洲欧美日韩成人在线| aa日韩免费精品视频一| 99久久精品费精品国产风间由美| 十大黄色软件免费看| 懂色av蜜臀av粉嫩av分享吧| 免费日本视频一区| 欧美日韩久久不卡| 国产一区二区视频免费| 国产欧美一区二区三区精品酒店| 久久国产精品-国产精品| 在线看的片片片免费| 91色综合久久久久婷婷| 久视频在线观看| 日韩网站在线观看| 黄色电影在线免费观看| www.av中文字幕| 欧美激情中文字幕| 欧美日韩综合| 亚洲欧美偷拍三级| 国产精品69久久久久孕妇欧美| 少妇久久久久| 久久精品国产免费看久久精品| 日韩av福利在线观看| 999福利在线视频| 国产999在线观看| 蜜臀精品一区二区三区在线观看| 中文字幕一精品亚洲无线一区| 97se综合| 自拍偷拍色综合| 在线观看h片| 天天噜噜噜噜噜噜| 久久婷婷综合色| 一本到一区二区三区| 天堂av资源网| 性欧美gay| 色乱码一区二区三在线看| 亚洲AV成人无码一二三区在线| 超碰高清在线| 中文字幕亚洲一区二区三区五十路| 自拍偷拍一区二区三区| 成人在线免费观看视频网站| 伊人久久中文字幕| 欧美午夜激情视频| 无码免费一区二区三区免费播放| 国产一区二区三区丝袜| 色片在线免费观看| 日韩一区二区三区免费看| 欧美亚洲国产怡红院影院| 精品久久久久成人码免费动漫| 一本大道久久a久久精品综合| 高潮按摩久久久久久av免费| 亚洲欧洲日产国码av系列天堂| 国产一级一片免费播放| 久草视频精品在线| 日本不卡一二区| 成人欧美一区二区三区视频xxx| 欧美 日韩 国产在线观看| 人妻内射一区二区在线视频| 你懂的在线观看一区二区| 欧美天堂在线视频| 一区二区免费在线播放| 午夜婷婷国产麻豆精品| 成人av动漫| 国产精品色在线网站| 精品美女在线播放| 国产欧美一区二区精品仙草咪| 91精品国产综合久久精品性色| 鲁丝一区二区三区| 日韩精品欧美专区| 欧洲毛片在线视频免费观看| 免费成人深夜夜行p站| 伊人色综合一区二区三区影院视频| 久热久精久品这里在线观看| 欧美三级午夜理伦三级在线观看| av第一福利在线导航| 99re6热在线精品视频播放| 国产中文一区| 暖暖视频在线免费观看| 国产高清视频在线| 久久久久免费网| 国产福利小视频| 天天射成人网| 免费av网站观看| 欧美色涩在线第一页| 久久精品aⅴ无码中文字字幕重口| 超碰最新在线| 91小视频xxxx网站在线| 国产精品1区2区3区| av一区二区久久| 性欧美videoshd高清| 日韩不卡视频在线| 中文字幕一区二区三区蜜月| 国产精品系列视频| 中文字幕 日韩有码| 国产偷人妻精品一区二区在线| 午夜精品久久久久久久99热浪潮| 国产精品视频免费观看www| 曰本女人与公拘交酡| 国产精品欧美精品| 风间由美一区二区av101| 天天操夜夜干| 国产精品久久久影院| 欧美6699在线视频免费| 日本成人免费网站| 午夜影院免费视频| 一级网站在线观看| 亚洲国产综合自拍| 日韩亚洲国产欧美| 丝袜美腿小色网| 99久久精品日本一区二区免费| 精品sm捆绑视频| 一区二区亚洲精品国产| 538任你躁精品视频网免费| 人妻精品久久久久中文字幕69| 99久久er热在这里只有精品66| 亚洲欧美中文日韩在线| 美女精品网站| 成人免费视频视频| 亚洲3atv精品一区二区三区| 91传媒久久久| av大片在线播放| 国产在线播放一区二区| 精品在线播放| 中文国产在线观看| 国产精选一区二区三区不卡催乳| 午夜久久久久久久| 亚洲综合视频1区| 国产玉足榨精视频在线观看| 亚洲高清乱码| 国产福利一区二区在线精品| 国产夫绿帽单男3p精品视频| 国产精品精品国产色婷婷| 日韩精品久久一区| 欧美日韩另类国产亚洲欧美一级| 亚洲国产精品视频在线| 麻豆一区二区在线观看| 国产精品国产自产拍高清av| 国产精品久久久久毛片大屁完整版| 日韩av免费网站| 在线电影院国产精品| 国产福利免费在线观看| 欧洲美女和动交zoz0z| 黄色激情在线观看| free极度另类性欧美| 人人妻人人做人人爽| 亚洲欧美精品aaaaaa片| 91国产成人在线| 少妇高潮av久久久久久| 日韩和一区二区| 国产一区福利视频| 美女扒开大腿让男人桶| 五月天激情播播| 国产激情一区二区三区在线观看| 亚洲一区二区激情| 免费人成精品欧美精品| 免费在线观看h| 第一视频专区在线| 日本女优天堂99伊人| 性插视频在线观看| www成人啪啪18软件| 国产普通话bbwbbwbbw| 国产精品一级在线观看| 国产丝袜视频一区| 日韩片之四级片| 18以下岁禁止1000部免费| 最近免费中文字幕大全免费第三页| 欧美特级特黄aaaaaa在线看| 亚洲天堂美女视频| 免费观看的毛片| 欧美丰满老妇| 中文字幕人妻熟女人妻a片| 色网站在线免费观看| 日韩av一卡| www.91av.com| 中文字幕一区免费| 思思久久99热只有频精品66| 久久一留热品黄| 欧美综合欧美视频| 久久99精品国产.久久久久久| 精品国内亚洲在观看18黄| jizz蜜桃视频在线观看| 国产小视频91| av免费网站在线观看| 成年免费视频黄网站在线观看| 亚洲狼人精品一区二区三区| 久久av老司机精品网站导航| 超碰人人在线| 4438欧美| 欧美精品国产一区二区| 色天天综合色天天久久| 久久久国产91| 天堂91在线| 国产精品视频一二三区| 午夜精品久久久久久久第一页按摩| 欧美一区二区精品久久911| 国产美女极品在线| 97在线精品国自产拍中文| 美女www一区二区| 神宫寺奈绪一区二区三区| 午夜一区不卡| 亚洲精品视频一区二区三区| 四虎海外影库www4hu| 亚洲三级网页| 先锋亚洲精品| 国内伊人久久久久久网站视频| www夜片内射视频日韩精品成人| 亚洲国内欧美| av有码在线观看| 日韩在线观看www| 伊人久久av| 久久要要av| 91高清在线免费观看|