C#模拟PrtScn实现截屏预备知识--keybd_event使用方法
2015-08-20 09:55
417 查看
Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作。Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息。但是已经被SendInput取代。
语法:
VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,Ptr dwExtralnfo);
参数:
bVk:定义一个虚拟键码。键码值必须在1~254之间。
bScan: 定义该键的硬件扫描码。
dwFlags: 定义函数操作的各个方面的一个标志位集。应用程序可使用如下一些预定义常数的组合设置标志位。
KEYEVENTF_EXTENDEDKEY:若指定该值,则扫描码前一个值为OXEO(224)的前缀字节。
KEYEVENTF_KEYUP:若指定该值,该键将被释放;若未指定该值,该键将被按下。
dwExtralnfo:定义与击键相关的附加的32位值。
返回值:该函数无返回值。
在C#中导入keybd_event函数如下:
语法:
VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,Ptr dwExtralnfo);
参数:
bVk:定义一个虚拟键码。键码值必须在1~254之间。
bScan: 定义该键的硬件扫描码。
dwFlags: 定义函数操作的各个方面的一个标志位集。应用程序可使用如下一些预定义常数的组合设置标志位。
KEYEVENTF_EXTENDEDKEY:若指定该值,则扫描码前一个值为OXEO(224)的前缀字节。
KEYEVENTF_KEYUP:若指定该值,该键将被释放;若未指定该值,该键将被按下。
dwExtralnfo:定义与击键相关的附加的32位值。
返回值:该函数无返回值。
keybd_event(16,0,0,0);//按下Shift键 keybd_event('A',0,0,0);//按下a键 keybd_event('A',0,KEYEVENTF_KEYUP,0);//松开a键 keybd_event(16,0,KEYEVENTF_KEYUP,0);//松开Shift键
在C#中导入keybd_event函数如下:
[DllImport("user32.dll")] static extern void keybd_event ( byte bVk,// 虚拟键值 byte bScan,// 硬件扫描码 uint dwFlags,// 动作标识 IntPtr dwExtraInfo// 与键盘动作关联的辅加信息 ); **键盘键与虚拟键码对照表** 字母和数字键 数字小键盘的键 功能键 其它键 键 键码 键 键码 键 键码 键 键码 A 65 0 96 F1 112 Backspace 8 B 66 1 97 F2 113 Tab 9 C 67 2 98 F3 114 Clear 12 D 68 3 99 F4 115 Enter 13 E 69 4 100 F5 116 Shift 16 F 70 5 101 F6 117 Control 17 G 71 6 102 F7 118 Alt 18 H 72 7 103 F8 119 Caps Lock 20 I 73 8 104 F9 120 Esc 27 J 74 9 105 F10 121 Spacebar 32 K 75 * 106 F11 122 Page Up 33 L 76 + 107 F12 123 Page Down 34 M 77 Enter 108 -- -- End 35 N 78 - 109 -- -- Home 36 O 79 . 110 -- -- Left Arrow 37 P 80 / 111 -- -- Up Arrow 38 Q 81 -- -- -- -- Right Arrow 39 R 82 -- -- -- -- Down Arrow 40 S 83 -- -- -- -- Insert 45 T 84 -- -- -- -- Delete 46 U 85 -- -- -- -- Help 47 V 86 -- -- -- -- Num Lock 144 W 87 X 88 Y 89 Z 90 0 48 1 49 2 50 3 51 4 52 5 53 6 54 7 55 8 56 9 57
相关文章推荐
- C#模拟PrtScn实现截屏预备知识--keybd_event使用方法
- C#中ArrayList 与 string、string[]数组 的转换
- 模板约束
- Csharp: read excel file using Open XML SDK 2.5
- Csharp: read excel file using Open XML SDK 2.5
- 浅析C#中的结构体和类
- 浅析C#中的结构体和类
- C#:使用Hashtable实现输出那些用户发表主题最多的信息
- C# 中的 delegate, Lambda 表达式 和 event
- c# lambda distinct
- 编写高质量代码改善C#程序的157个建议——建议90:不要为抽象类提供公开的构造方法
- C#使用xsd文件验证XML 格式是否正确
- C#相关知识
- C# 事件驱动基础
- C#编程:写文件的bug
- C#实现深复制的两种方式
- 编写高质量代码改善C#程序的157个建议——建议89:在并行方法体中谨慎使用锁
- 编写高质量代码改善C#程序的157个建议——建议88:并行并不总是速度更快
- 编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型
- 编写高质量代码改善C#程序的157个建议——建议86:Parallel中的异常处理