C#實現的三種方式實現模擬鍵盤按鍵
模擬按鍵在.Net中有三種方式實現。
第一種方式:System.Windows.Forms.SendKeys
組合鍵:Ctrl = ^ 、Shift = + 、Alt = %
模擬按鍵:A
private void button1_Click(object sender, EventArgs e)
{
textBox1.Focus();
SendKeys.Send("{A}");
}
模擬組合鍵:CTRL + A
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Focus();
SendKeys.Send("^{A}");
}
SendKeys.Send // 非同步模擬按鍵(不阻塞UI)
SendKeys.SendWait // 同步模擬按鍵(會阻塞UI直到對方處理完訊息後返回)
第二種方式:keybd_event
模擬按鍵:A
[DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]
public static extern void keybd_event(Keys bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
private void button1_Click(object sender, EventArgs e)
{
textBox1.Focus();
keybd_event(Keys.A, 0, 0, 0);
}
模擬組合鍵:CTRL + A
public const int KEYEVENTF_KEYUP = 2;
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Focus();
keybd_event(Keys.ControlKey, 0, 0, 0);
keybd_event(Keys.A, 0, 0, 0);
keybd_event(Keys.ControlKey, 0, KEYEVENTF_KEYUP, 0);
}
上面兩種方式都是全域性範圍呢,現在介紹如何對單個視窗進行模擬按鍵
模擬按鍵:A / 兩次
[DllImport("user32.dll", EntryPoint = "PostMessageA", SetLastError = true)]
public static extern int PostMessage(IntPtr hWnd, int Msg, Keys wParam, int lParam);
public const int WM_CHAR = 256;
private void button1_Click(object sender, EventArgs e)
{
textBox1.Focus();
PostMessage(textBox1.Handle, 256, Keys.A, 2);
}
模擬組合鍵:CTRL + A
如下方式可能會失效,所以最好採用上述兩種方式
public const int WM_KEYDOWN = 256;
public const int WM_KEYUP = 257;
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Focus();
keybd_event(Keys.ControlKey, 0, 0, 0);
keybd_event(Keys.A, 0, 0, 0);
PostMessage(webBrowser1.Handle, WM_KEYDOWN, Keys.A, 0);
keybd_event(Keys.ControlKey, 0, KEYEVENTF_KEYUP, 0);
}
相關文章
- 12.2 實現鍵盤模擬按鍵
- MyBatis中主鍵回填的兩種實現方式MyBatis
- 移動端頁面鍵盤出現“搜尋”按鍵且實現提交功能
- SSK:超級鍵盤模擬器,呼叫底層,可模擬所有按鍵
- springAOP的三種實現方式Spring
- 鍵盤按鍵錯亂怎麼恢復 電腦鍵盤字母錯亂三種解決方法
- unity 實現輪盤方式的按鈕滾動效果Unity
- PAT1029 舊鍵盤(java實現)Java
- js實現繼承的三種方式JS繼承
- python 三種方式實現截圖Python
- C#非同步有多少種實現方式?C#非同步
- vue3中使用simple-keyboard實現虛擬鍵盤(帶中文切換數字鍵盤)Vue
- android實現底部彈出框與軟鍵盤衝突(全面屏虛擬鍵適配)Android
- Java鍵盤錄入的兩種方式Java
- PAT1033 舊鍵盤打字(java實現)Java
- Go定時器的三種實現方式Go定時器
- 單點登入的三種實現方式
- Java中Singleton的三種實現方式解析Java
- 實現圖片染色效果的三種方式
- 鍵盤失靈按什麼鍵恢復 win10鍵盤恢復按鍵Win10
- STM32--矩陣鍵盤的設計實現矩陣
- PHP 三種方式實現鏈式操作PHP
- Java中Elasticsearch 實現分頁方式(三種方式)JavaElasticsearch
- promise的模擬實現Promise
- Tickeys for Mac鍵盤音效模擬工具Mac
- C# 呼叫 C++ 生成的 dll 關鍵實現部分C#C++
- Spring實現IOC容器的兩種實現方式Spring
- 實現ABAP條件斷點的三種方式斷點
- Java實現多執行緒的三種方式Java執行緒
- 實現布隆過濾器的三種方式過濾器
- 前端實現文字跑馬燈的三種方式前端
- 三欄式佈局的幾種實現方式
- 實現圖片懶載入的三種方式
- 去掉鍵盤的方式
- vxe-table 全鍵盤操作,按鍵編輯方式設定,覆蓋方式與追加方式
- 艾爾登法環鍵盤操作介紹 艾爾登法環鍵盤按鍵方式說明
- 鍵盤亂鍵怎麼處理 電腦鍵盤按鍵錯亂
- java鍵盤監聽之視窗監聽的實現Java
- 盤點用jQuery框架實現“for迴圈”的四種方式!jQuery框架