關於C# 調用windows API組合鍵。栗子 CTRL+V


最近玩windows api ,想觸發個復制粘貼。

各種百度,各種google。網上大部分都是說使用

 SendMessage 先觸發ctrl 消息,然后再觸發V消息。

然而小炮。(我)試炸了,PostMessage方法也試了,只能觸發最后一個V字母。

查了原因好像說是什么鬼sendMessage不支持ctrl按鈕。

后來不了了之了~~~~~~

 

開玩笑。后來還是查到了一種方法:

[DllImport("User32.dll", EntryPoint = "keybd_event ")]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int SendMessage(int hWnd, int wMsg, uint wParam, uint lParam);

keybd_event(VK_CONTROL, 0, 0, 0);  //按下ctrl,在下面釋放之前,他的狀態一直還是被按下的,不信你試下找個地方按 v  
SendMessage(hwdn, WM_KEYDOWN, VK_V, 0);  //按下 V 鍵
Thread.Sleep(10);  //這個懶得說,不會
SendMessage(hwdn, WM_KEYUP, VK_V, 0);  //部分系統可能不需要觸發這個,自動釋放V鍵,建議開始加上比較好
keybd_event(VK_CONTROL, 0, 0x02, 0);  //釋放 ctrl 鍵

 全是百度、Google來的,不喜自己查。

謝謝~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM