自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#發(fā)送消息方法簡(jiǎn)析

開(kāi)發(fā) 后端
C#發(fā)送消息功能的實(shí)現(xiàn)是什么方法在發(fā)揮的作用呢?C#發(fā)送消息的實(shí)現(xiàn)會(huì)為我們帶來(lái)什么好處呢?那么本文就向你介紹詳細(xì)的內(nèi)容。

C#發(fā)送消息功能的實(shí)現(xiàn)是如何的呢?最近想模擬一下鍵盤(pán)按鍵,以便作一個(gè)游戲外掛.就試著用C#實(shí)現(xiàn)此功能那么這里向你介紹具體的實(shí)現(xiàn)過(guò)程,希望那個(gè)對(duì)你有個(gè)參考的作用。

C#發(fā)送消息功能的內(nèi)涵方法:

C#中有一個(gè)Message結(jié)構(gòu),該結(jié)構(gòu)中有一個(gè)函數(shù)Create()可以用來(lái)創(chuàng)建消息.原型如下:

  1. public static Message Create(  
  2. IntPtr hwnd,//接收消息的窗口句柄  
  3. int msg, //消息 的ID,也就是一個(gè)uint  
  4. IntPtr wparam,// 消息的Wparam域  
  5. IntPtr lparam //消息的Lparam域  

比如我們要發(fā)送一個(gè)字符串到記事本:

  1. string text ="范俊武搞的一個(gè)窗口消息測(cè)試!";//  
  2.  
  3. char[] chars = text.ToCharArray();//轉(zhuǎn)換成數(shù)組  
  4.  
  5. foreach (char item in chars)  
  6. {  
  7. Message msg = Message.Create(hWnd, WM_CHAR,   
  8. new IntPtr(item), IntPtr.Zero);  
  9. //創(chuàng)建一個(gè)WM_CHAR消息.一會(huì)說(shuō)這里邊的參數(shù)是怎么一回事  
  10. MessageAPI.PostMessage(msg.HWnd, msg.Msg,   
  11. msg.WParam, msg.LParam);//調(diào)用Win32API函數(shù) ,  
  12.  
  13. //關(guān)于這個(gè)函數(shù)在C#中的聲明我就不寫(xiě)了網(wǎng)上有很多關(guān)于C#中平臺(tái)調(diào)用的講解.  
  14.  
  15. }  

C#發(fā)送消息之WM_CHAR介紹,它是Windows中的一個(gè)消息. MSDN是這樣定義的:

The WM_CHAR message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. The WM_CHAR message contains the character code of the key that was pressed.

我粘貼過(guò)來(lái),大家看下,我英語(yǔ)不是很好,翻譯不過(guò)來(lái),不過(guò)我可以看明白是咋地一回事!大致是這個(gè)意思.當(dāng)我們按下一個(gè)鍵的時(shí)候,產(chǎn)生一個(gè)WM_KEYDOWN 然后呢,這個(gè)消息被一個(gè)TranslateMessage 函數(shù)翻譯成WM_CHAR消息.顯然WM_CHAR消息攜帶了一個(gè)字符,比方說(shuō)我們按了個(gè)字母"A"鍵,WM_CHAR就攜帶了"a" 這個(gè)character.

另外Create函數(shù)的第二個(gè)參數(shù)是Int型的.我們可以在Windows.h中看到WM_CHAR其實(shí)是一個(gè)常量:0x0102,一個(gè)十六進(jìn)制數(shù).WM_CHAR的ID號(hào).代表WM_CHAR消息.

所以第二個(gè)參數(shù)是這么來(lái)的:

  1. const int WM_CHAR = 0x0102; 

WM_CHAR的消息中 wParam 是這么定義的,又是一段英文:Specifies the character code of the key. 就是一個(gè)按鍵的字符.

WM_CHAR的消息中 lParam ,這個(gè)參數(shù)比較復(fù)雜,是一個(gè)32位數(shù),每一位都有定義.不過(guò)這個(gè)參數(shù)經(jīng)常被設(shè)置成0.

那么hWnd從哪里來(lái)的呢,就是我們要發(fā)送消息到記事本窗口的句柄.這個(gè)句柄也是一個(gè)32位值.我們可以調(diào)用Win32API函數(shù)

  1. string className = "Notepad";  
  2. string captionName = "無(wú)標(biāo)題 - 記事本"//可以通過(guò)SPY++了解到.  
  3.  
  4. IntPtr hWnd=FindWindow(className ,captionName);//找主窗口.  
  5.  
  6. hWnd = FindWindowEx(hWnd, IntPtr.Zero, "Edit""");找主窗口中的Edit窗口.  

PostMessage 就是發(fā)送消息了,各個(gè)參數(shù)都是在我們創(chuàng)建的消息Msg中包含的.挺簡(jiǎn)單的.

至于wParam和lParam 不同的消息 會(huì)有不同的定義,我們想發(fā)送什么消息,就去MSDN中關(guān)于這個(gè)消息的定義,可以了解到wParam和lParam 的意義!

C#發(fā)送消息功能的基本內(nèi)容就向你介紹到這里,希望那個(gè)對(duì)你了解和學(xué)習(xí)C#發(fā)送消息功能有所幫助。

【編輯推薦】

  1. C#回車(chē)換行符的理解淺析
  2. .Net回車(chē)符的問(wèn)題解決方案
  3. C#回車(chē)鍵事件實(shí)例解析
  4. C#回車(chē)切換焦點(diǎn)實(shí)例淺談
  5. 關(guān)于C#回車(chē)切換焦點(diǎn)實(shí)現(xiàn)的探討
責(zé)任編輯:仲衡 來(lái)源: 百度空間
相關(guān)推薦

2009-09-03 14:20:21

C#日期格式化

2009-08-13 15:48:57

C#指針

2009-08-12 16:38:35

C#讀取XML節(jié)點(diǎn)

2009-08-13 10:27:28

C#讀取Excel數(shù)據(jù)

2009-08-12 10:07:51

C#運(yùn)算符

2009-09-03 10:52:41

C#遞歸樹(shù)

2009-08-13 14:36:40

C#結(jié)構(gòu)體構(gòu)造函數(shù)

2009-08-19 12:58:19

C#操作Word

2009-09-02 10:49:46

C#調(diào)用析構(gòu)方法

2009-08-20 16:02:15

C#正則表達(dá)式

2009-08-21 14:03:04

C#網(wǎng)絡(luò)編程

2009-08-19 15:54:33

處理C#消息

2009-08-20 09:58:06

C#操作文本文件

2009-09-09 18:41:42

C# 加密散列算法

2024-12-23 09:09:54

2010-01-20 14:25:56

函數(shù)調(diào)用

2010-12-20 10:56:32

Linux網(wǎng)絡(luò)性能優(yōu)化

2024-04-25 12:59:31

2010-01-25 10:10:42

C++函數(shù)參數(shù)

2009-08-21 09:44:44

C#發(fā)送Email郵件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)