最近玩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來的,不喜自己查。
謝謝~~