成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#在應用程序間發送消息實現淺析

開發 后端
本文向您介紹使用C#發送消息機制在C#應用程序間傳送對象;實C#幕后還是采用的C#發送消息的處理機制,本創許也充分利用了Windows的消息處理機之。

說來說去,還是覺得API的功能是最強大的,但是.NET FCL,MFC等對API的封裝之后也使得程序的開發變得更加容易。本模塊的主要原理還是使用API,查找指定類型,窗口文本的窗口對象,使用C#發送消息,獲取該對象的指針。然后實現C#應用程序間使用C#發送消息操作該對象。

C#發送消息實例1

創建一個C#Windows Form應用程序,向窗口中添加一個按鈕button1,添加事件相應函數:

  1. private void button1_Click(object sender, System.EventArgs e)   
  2.  {  
  3.   MessageBox.Show("This is button1 click!");  
  4.  }  

C#發送消息實例2

創建一個C# Windows Form應用程序,添加一個按鈕控件button1

1:C#在應用程序添加using System.Runtime.InteropServices;

2:C#在應用程序添加對API的引用:

  1. [DllImport("user32.dll")]  
  2.  public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);  
  3.  
  4.  [DllImport("user32.dll")]  
  5.  public static extern IntPtr FindWindowEx(IntPtr hwndParent,IntPtr hwndChildAfter,string lpszClass,string lpszWindow);  
  6.  
  7.  [DllImport("user32.dll", CharSet=CharSet.Unicode)]    
  8.  public static extern IntPtr PostMessage(IntPtr hwnd,int wMsg,IntPtr wParam,IntPtr lParam);  

3:C#在應用程序添加button1的相應函數:

  1. private void button1_Click(object sender, System.EventArgs e)  
  2.   {  
  3.       IntPtr hwnd_win ;          // 存放實例1中的Form1窗口的窗口句柄  
  4.       IntPtr hwnd_button ;     // 存放實例1中的Form1中的button1控件的窗口句柄  
  5.  
  6.     // 參數1:窗口類型,參數2:窗口名稱  
  7.  
  8.      hwnd_win = FindWindow("WindowsForms10.Window.8.app3""Form1"); // 得到Form1窗口的句柄。  
  9.     
  10.  
  11.    // 參數1:父窗口句柄,   參數2:子窗口指針;參數3:窗口類型;參數4:窗口文本   
  12.  
  13.   hwnd_button = FindWindowEx(hwnd_win ,new IntPtr(0) ,"WindowsForms10.BUTTON.app3","button1");    
  14.  
  15.   // 定義待發送的消息    
  16.  
  17.  const int BM_CLICK = 0x00F5;  
  18.    Message msg = Message.Create(hwnd_button ,BM_CLICK ,new IntPtr(0),new IntPtr(0));  
  19.  
  20.  
  21.   // 向Form1窗口的button1控件發送BM_CLICK消息     
  22.  
  23. PostMessage(msg.HWnd ,msg.Msg ,msg.WParam ,msg.LParam);   
  24.  
  25.   }  

總結

其實C#幕后還是采用的C#發送消息的處理機制,本創許也充分利用了Windows的消息處理機之。

附帶一個獲取窗口類型的技巧:使用SPY ++就可以獲取任何窗口的窗口類型。

所有的類似于WM_CHAR,WM_COMMAND等消息的值,可以在.Net目錄下的WinUser.h文件中查詢到。

 

【編輯推薦】

  1. C#接口和抽象類技術特點淺析
  2. C#繼承知識詳解
  3. 一個C#時間計算的實例
  4. C#日期格式化的幾種處理方法
  5. 代碼詳解C#比較時間的三種方法
責任編輯:佚名 來源: 網絡轉載
相關推薦

2009-08-25 09:39:21

創建C# Window

2009-08-21 14:03:04

C#網絡編程

2010-01-22 13:59:34

Visual C++應

2009-09-03 17:31:34

C#發送郵件

2009-08-24 14:19:27

C# Windows應

2009-08-24 09:25:18

Visual C# ..NET應用程序

2009-08-06 10:27:08

C#應用程序域

2009-08-28 16:03:15

C#程序實現鼠標移動

2010-12-27 17:04:07

應用程序版本升級

2009-08-24 13:30:50

C# Windows

2009-08-28 16:43:08

AutoCAD托管C#

2009-08-24 13:40:58

C# Windows

2009-01-19 11:07:42

C#Web.NET

2009-08-24 16:02:10

C# Windows應

2009-09-07 14:00:57

C#抓取網頁

2011-07-20 16:59:07

2022-12-25 18:03:13

Debug原理軟件

2018-10-25 15:13:23

APP脫殼工具

2009-07-10 17:24:07

Swing應用程序

2009-09-03 17:40:25

C#發送短信
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品456 | 久精品久久 | 亚洲综合中文字幕在线观看 | 久久天堂 | 一本色道精品久久一区二区三区 | 色屁屁在线观看 | 老头搡老女人毛片视频在线看 | 在线一级片| 97超在线视频 | 三级在线视频 | 在线视频日韩 | 国产h视频 | 日韩三区| 亚洲一区二区在线免费观看 | 欧美精品第一页 | 国产 91 视频 | 中午字幕在线观看 | 成人久久视频 | 日韩av在线一区二区 | 国产婷婷综合 | 欧美精品一区在线 | 91一区| 精品视频在线观看 | 一级毛片在线播放 | 成人久久久久久久久 | 精品欧美视频 | 日日噜 | 亚洲福利电影网 | 国产精品视频网 | 可以免费观看的av片 | 中文字幕一区二区三区四区 | 成人精品国产 | 一区二区三区亚洲 | 国产黄色在线 | 日韩国产高清在线观看 | 污书屋 | 亚洲免费一区二区 | 国产精品色婷婷久久58 | 亚洲一二三区精品 | 成人在线电影在线观看 | 亚洲精品视频在线 |