<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C#.WinForm調用winapi SendMessage方法跨進程發消息

      本文章主要用于做接口形式跨進程的使用。

      額外提下:

      發普通消息與此類同

      1         public const int WM_SETTEXT = 12;
      2         public const int CB_SETCURSEL = 0X014D;
      3         [DllImport("user32.dll", EntryPoint = "SendMessage")]
      4         public static extern int SendMessage(int hwnd, int wMsg, int wParam, string lParam);
      5         //發送文本框
      6         SendMessage(對方文本框句柄, WM_SETTEXT , 0, "測試");
      7         //發送下拉框用于選擇
      8         SendMessage(對方下拉框句柄, CB_SETCURSEL, 0, "下拉框文本");
      發送到對方指定控件

      介紹:

      Windows Api 的 SendMessage 該函數將指定的消息發送到一個或多個窗口。此函數為指定的窗口調用窗口程序,直到窗口程序處理完消息再返回。而和函數PostMessage不同,PostMessage是將一個消息寄送到一個線程的消息隊列后就立即返回。

      通俗:通過SendMessage函數 向指定窗口句柄 或 控件句柄發送消息,支持跨進程發消息。

      C#方法的定義

       1         [DllImport("User32.dll", EntryPoint = "SendMessage")]
       2         public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, ref COPYDATASTRUCT lParam);
       3         [StructLayout(LayoutKind.Sequential)]
       4         public struct COPYDATASTRUCT
       5         {
       6             public IntPtr dwData;
       7             public int cbData;
       8             [MarshalAs(UnmanagedType.LPStr)]
       9             public string lpData;
      10         }
      api的定義

      舉例:

      0x004a消息號 盡量不要亂填,因為可能被占用或有大小限制。最好采用json放入lpdata里 json里做接口規則
      1 COPYDATASTRUCT cds;//定義消息結構體
      2 cds.dwData = (IntPtr)0;
      3 cds.cbData = System.Text.Encoding.UTF8.GetBytes("測試").Length + 1;//字符串長度
      4 cds.lpData = "測試";//字符串
      5 SendMessage(Process.GetCurrentProcess().MainWindowHandle, 0x004a, 0, ref cds);//向自身進程的主窗體句柄發送消息
      發送消息
      在窗體里 加入以下方法接收消息
       1         protected override void DefWndProc(ref Message m)
       2         {
       3             switch (m.Msg)
       4             {
       5                 case 0x004a://消息號
       6                     COPYDATASTRUCT cds = new SystemTool.COPYDATASTRUCT();
       7                     Type t = cds.GetType();
       8                     cds = (COPYDATASTRUCT)m.GetLParam(t);
       9                     string receiveInfo = cds.lpData;//拿到字符串
      10                     break;
      11                 default:
      12                     base.DefWndProc(ref m);
      13                     break;
      14             }
      15         }
      接收代碼

       注:

      SendMessage(Process.GetCurrentProcess().MainWindowHandle, 0x004a, 0, ref cds);

      這里 Process.GetCurrentProcess().MainWindowHandle 如果發送給XX進程,MainWindowHandle這個句柄將是對方的主窗體,意思也就是說

      情況一:如果對方Form只有1個AForm顯示出來了,那么接收消息方法就要寫在AForm里,

      情況二:如果對方AForm里又彈出了個子窗體BForm,那么接收消息方法就要寫在BForm里。

      posted @ 2020-08-26 15:20  雲瑞  閱讀(2162)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 午夜成人精品福利网站在线观看 | 91福利一区福利二区| 国产高清国产精品国产专区| 国模无吗一区二区二区视频| 人人澡人人妻人人爽人人蜜桃| 二连浩特市| 99久久精品国产熟女拳交| 久久亚洲色www成人| 亚洲 欧美 动漫 少妇 自拍| 超碰成人人人做人人爽| 扒开双腿猛进入喷水高潮叫声| 国产成人av一区二区三区不卡| 国产精品啪| 免费无码肉片在线观看| 亚洲国产高清第一第二区| 国产99视频精品免费观看9| 国产精品一区在线蜜臀| 亚洲区中文字幕日韩精品| 伊人久在线观看视频| 国产免费无遮挡吸奶头视频 | 久激情内射婷内射蜜桃| 国产成人免费永久在线平台| 亚洲黄色第一页在线观看| 国产成人AV男人的天堂| 人人人澡人人肉久久精品| 狼人大伊人久久一区二区| 无码成人精品区在线观看| 亚洲av成人网在线观看| 噜噜噜噜私人影院| 精品国产一区二区三区四区阿崩| 成人午夜在线观看刺激| 无码成人午夜在线观看| 亚洲日韩乱码中文无码蜜桃臀| 一区二区三区放荡人妻| 亚洲国产成人精品福利无码| 国产亚洲精品第一综合另类无码无遮挡又大又爽又黄的视频 | 精品无码国产一区二区三区av | 久久久WWW成人免费精品| 加勒比中文字幕无码一区| 资源在线观看视频一区二区| 丁香婷婷色综合激情五月|