关于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