最近玩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来的,不喜自己查。
谢谢~~
关于C# 调用windows API组合键。栗子 CTRL+V
原文:http://www.cnblogs.com/heiDog/p/6395815.html