关于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来的,不喜自己查。

谢谢~~

 

posted @ 2017-02-13 23:12  飞机大炮。  阅读(3697)  评论(0编辑  收藏  举报