PB 代码模拟按键 API函数keybd_event 及相应的键值说明
键盘虚拟键值编码表 使用keybd
键盘虚拟键值编码表使用keybd_Event也是在cnblogs上找的,怕到时忘了,先记下来原文章:/nemolog/archive/2005/10/30/265035.ht ml模拟键盘输入首先要用到一个API函数:keybd_event。
我们是菜鸟,所以不必具体去理解它的详细用法,只要按以下方法使用即可了!呵呵!模拟按键有两个基本动作,即按下键和放开按键,所以我们每模拟一次按键就要调用两次该API函数,其方法是:例子1:模拟按下'A'键keybd_event(65,0,0,0);keybd_event(65,0,KEYEVENTF_KEYUP,0);例子2:模拟按下'ALT+F4'键keybd_event(18,0,0,0);keybd_event(115,0,0,0);keybd_event(115,0,KEYEVENTF_KEYUP,0);keybd_event(18,0,KEYEVENTF_KEYUP,0);例子3:在启动一个程序之前清空屏幕(按Win +D)[DllImport("User32.dll")]public static extern void keybd_event(Byte bVk, Byte bScan, Int32 dwFlags, Int32 dwEx traInfo);keybd_event(0x5b, 0, 0, 0);keybd_event(68, 0, 0, 0);keybd_event(0x5b, 0, 0x2, 0);keybd_event(68, 0, 0x2, 0);附:常用模拟键的键值对照表。
键盘键与虚拟键码对照表字母和数字键数字小键盘的键功能键其它键键键码键键码键键码键键码A650 96 F1 112 Backspace 8B66197 F2 113Tab 9C67 2 98 F3 114Clear12D68399 F4 115Enter13E69 4 100 F5 116Shift16F70 5 101 F6 117Control17G71 6102 F7 118 Alt18H72 7 103 F8 119Caps Lock20I73 8 104F9 120Esc27J74 9105F10121Spacebar32K75 * 106F11122Page Up33L76 + 107F12123Page Down34M77 Enter 108-- --End35N78 - 109-- -- Home36O79 . 110---- Left Arrow 37P80 / 111---- Up Arrow38Q81 -- ------ Right Arrow 39R82 -- ------ Down Arrow 40S83 -- ---- -- Insert45T84 -- ------ Delete46U85 -- ---- -- Help47V86 ------ -- Num Lock144W87X88Y89Z90048149250351452553654755856957----------------------------------与键盘上各键对应的键值在软件开发的过程中我们经常与键盘打交道,以下是我查MSDN 所得希望对各位有帮助。
用keybd_event在WINCE下实现按键功能
用keybd_event在WINCE下实现按键功能在Windows CE(WINCE)下,可以使用keybd_event函数来实现按键功能。
keybd_event函数会模拟键盘事件,包括按下和释放键盘上的按键。
keybd_event函数的原型如下:VOID keybd_eventBYTEbVk,BYTE bScan,DWORD dwFlags,DWORD dwExtraInfo其中,参数bVk指定了要模拟的键盘按键的虚拟键码,bScan指定了与按键关联的硬件扫描码,dwFlags指定了按键事件的标志,dwExtraInfo指定了与事件关联的附加信息。
要使用keybd_event函数实现按键功能,可以按照以下步骤进行:1. 获取要模拟的按键的虚拟键码。
可以使用GetAsyncKeyState函数来获取当前按下的键的虚拟键码。
例如,获取按下的A键的虚拟键码可以使用如下代码:BYTEbVk=VK_A;2. 调用keybd_event函数模拟按下键盘按键。
设置dwFlags参数为KEYEVENTF_EXTENDEDKEY , KEYEVENTF_KEYDOWN来模拟按下键盘按键。
例如,模拟按下A键可以使用如下代码:keybd_event(bVk, 0, KEYEVENTF_EXTENDEDKEY ,KEYEVENTF_KEYDOWN, 0);3. 延迟一段时间,模拟按键的持续时间。
可以使用Sleep函数来延迟一定的时间,以模拟按键的持续时间。
例如,延迟100毫秒可以使用如下代码:Sleep(100);4. 调用keybd_event函数模拟释放键盘按键。
设置dwFlags参数为KEYEVENTF_EXTENDEDKEY , KEYEVENTF_KEYUP来模拟释放键盘按键。
例如,模拟释放A键可以使用如下代码:keybd_event(bVk, 0, KEYEVENTF_EXTENDEDKEY , KEYEVENTF_KEYUP, 0);通过以上步骤,就可以使用keybd_event函数在Windows CE下实现按键功能。
VFP调用API实现代码模拟鼠标键盘动作
VFP调用API实现代码模拟鼠标键盘动作*--VFP调用API实现代码模拟鼠标.键盘动作*--模拟键盘协作,如 Ctrl+VDeclare keybd_event In Win32API Short bVk,Short bScan,Integer dwFlags, Integer deExtraInfokeybd_event(17, 0, 0, 0)keybd_event(Asc('V'), 0, 0, 0)keybd_event(Asc('V'), 0, 2, 0)keybd_event(17, 0, 2, 0)*或#Define VK_CONTROL 0x11#Define KEYEVENTF_KEYUP 0x02Declare Long keybd_event In "user32" Integer bVk , Integer bScan, Long dwFlags, Long dwExtraInfoClear Typeaheadkeybd_event(VK_CONTROL, 0, 0, 0) && 模拟按下 Ctrl 键keybd_event(Asc('V'), 0, 0 ,0) && 模拟按下 V 键keybd_event(Asc('V'), 0, KEYEVENTF_KEYUP, 0) && 松开 V 键keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0) && 松开 Ctrl 键* KEYEVENTF_KEYUP = &H2 ' Release key* VK_RETURN = &HD 'enter* VK_SHIFT = &H10 'Shift* VK_CONTROL = &H11 'Ctrl* VK_CAPITAL = &H14 'capslock* VK_ESCAPE = &H1B 'escape*--模拟鼠标动作,如单击左键MOUSEEVENTF_LEFTDOWN=0x2MOUSEEVENTF_LEFTUP=0x4MOUSEEVENTF_MIDDLEDOWN=0x20MOUSEEVENTF_MIDDLEUP=0x40MOUSEEVENTF_MOVE=0x1MOUSEEVENTF_ABSOLUTE=0x8000MOUSEEVENTF_RIGHTDOWN=0x8MOUSEEVENTF_RIGHTUP=0x10Declare mouse_event In Win32API Integer dwFlags,Integer dx,Integer dy,Integer cButtons,Integer dwExtraInfo*在鼠标坐标系统中,不管什么分辨率屏幕在水平和垂直方向上均匀分割成65535×65535个单元=mouse_event(MOUSEEVENTF_ABSOLUTE+MOUSEEVENTF _MOVE,10000,10000,0,0) &&移动鼠标到绝对位置10000,10000 =mouse_event(MOUSEEVENTF_LEFTDOWN+MOUSEEVENT F_LEFTUP,0,0,0,0) &&单击左键(按下再松开的组合)*=mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0)*=mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0)'--以下为VB模拟鼠标的说明及例子'-------------------------------------------'' 模拟鼠标的左键单击和右键单击''-------------------------------------------''程序说明:''本例采用API函数实现模拟的鼠标事件,程序运行后会''产生十分有趣的效果。
python keypressevent参数
python keypressevent参数
python中的KeyPressEvent参数是指在处理键盘按键事件时,传递给回调函数的参数。
这些参数包括按下的键的字符编码、键盘键的状态以及与按下的键相关的其他信息。
对于一个KeyPressEvent事件,常见的参数包括:
- event.char: 按下的键的字符编码,可以是一个ASCII字符或一个特殊字符(例如回车、退格等)的编码。
- event.keysym: 按下的键的名称,通常是一个字母或数字。
它与按下的键的位置无关,因此在不同的键盘布局下可能会有所不同。
- event.state: 按下键时的状态,如Shift、Ctrl、Alt等。
- event.keycode: 按下的键的虚拟键码,它唯一标识了按下的键。
这些参数可以帮助我们在处理键盘事件时进行相应的判断和处理,例如判断按下的是哪个键、是否按下了Shift键等。
- 1 -。
VS2010 C++ MFC 模拟按键
Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作。
Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息。
函数原型:VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo);共有四个参数:bVk:为按键的虚拟键码。
键码值必须在1~254之间,具体见键盘键值表。
bScan:为扫描码,一般置0即可。
dwFlags:为选项标志,如果为keydown则置0即可,如果为keyup则设成"KEYEVENTF_KEYUP"。
dwExtralnfo:一般置0即可。
返回值:该函数无返回值。
1.用Visual Studio 2010,新建一个“MFC应用程序”。
2.选择“MFC应用程序”,名称随便命名,这里改为“J1”,添加一个按钮做测试用。
具体步骤省略,详见/view/e11617f4af1ffc4ffe47acc83.在设计界面中,双击“开始”按钮,进入代码界面,在箭头处添加代码如下://执行结果:点击按钮后会打开一个记事本,输入“HELLO”。
ShellExecute(NULL,"open","notepad.exe",NULL,NULL,SW_SHOW);//打开记事本Sleep(1000);//等待1秒HWND hWnd = ::FindWindow("Notepad",NULL); //获取记事本窗口的句柄if (hWnd)//当窗口存在时{::SetForegroundWindow(hWnd); //将窗口前置并激活}elseMessageBox("记事本没打开","提示");//模拟按下'CAPS LOCK'键,用于大写keybd_event(20,0,0,0);keybd_event(20,0,KEYEVENTF_KEYUP,0);//模拟按下'H'键keybd_event(72,0,0,0);keybd_event(72,0,KEYEVENTF_KEYUP,0);//模拟按下'E'键keybd_event(69,0,0,0);keybd_event(69,0,KEYEVENTF_KEYUP,0);//模拟按下'L'键keybd_event(76,0,0,0);keybd_event(76,0,KEYEVENTF_KEYUP,0);//模拟按下'L'键keybd_event(76,0,0,0);keybd_event(76,0,KEYEVENTF_KEYUP,0);//模拟按下'O'键keybd_event(79,0,0,0);keybd_event(79,0,KEYEVENTF_KEYUP,0);//模拟按下'回车'键keybd_event(13,0,0,0);keybd_event(13,0,KEYEVENTF_KEYUP,0);12.先“生成解决方案”,编译没有错误话,接下来就是调试了,试试看吧。
delphi通过代码实现模拟按键的函数
delphi通过代码实现模拟按键的函数Windows API 的keybd_event 函数,它可以产生键盘消息。
实现向其他窗口模拟真实的按键动作。
例如:{按下A键}Edit1.SetFocus;keybd_event(VK_SHIFT, 0, 0, 0);keybd_event(ord('A'), 0, 0, 0);keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);{按下左Window键然后选择“运行”}keybd_event(VK_LWIN, 0, 0, 0);keybd_event(ord('R'), 0, 0, 0);keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);KEYBD_EVENT 的函数说明:函数功能:该函数合成一次击键事件。
系统可使用这种合成的击键事件来产生WM_KEYUP或WM_KEYDOWN消息,键盘驱动程序的中断处理程序调用keybd_event函数。
在Windows NT中该函数己被使用Sendlhput来替代它。
函数原型;VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo);参数:bVk:定义一个虚据拟键码。
键码值必须在1~254之间。
bScan:定义该键的硬件扫描码。
dwFlags:定义函数操作的名个方面的一个标志位集。
应用程序可使用如下一些预定义常数的组合设置标志位。
KEYEVENTF_EXETENDEDKEY:若指定该值,则扫描码前一个值为OXEO(224)的前缀字节。
DEYEVENTF_KEYUP:若指定该值,该键将被释放;若未指定该值,该键交被接下。
dwExtralnfo:定义与击键相关的附加的32位值。
根据这个API函数,整理一个完整的函数,方便操作:procedure PostKey(const mKey: Word; mShiftState: TShiftState; mCount: Integer = 1);constcExtended: set of Byte = [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT, VK_HOME, VK_END, VK_PRIOR, VK_NEXT, VK_INSERT, VK_DELETE];procedure pKeyboardEvent(mKey, mScanCode: Byte; mFlags: Longint);varvKeyboardMsg: TMsg;beginkeybd_event(mKey, mScanCode, mFlags, 0);while PeekMessage(vKeyboardMsg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE) dobeginTranslateMessage(vKeyboardMsg);DispatchMessage(vKeyboardMsg);end;end;procedure pSendKeyDown(mKey: Word; mGenUpMsg: Boolean);varvScanCode: Byte;vNumState: Boolean;vKeyBoardState: TKeyboardState;beginif (mKey = VK_NUMLOCK) thenbeginvNumState := ByteBool(GetKeyState(VK_NUMLOCK) and 1);GetKeyBoardState(vKeyBoardState);if vNumState thenvKeyBoardState[VK_NUMLOCK] := (vKeyBoardState[VK_NUMLOCK] and not 1)elsevKeyBoardState[VK_NUMLOCK] := (vKeyBoardState[VK_NUMLOCK] or 1);SetKeyBoardState(vKeyBoardState);Exit;end;vScanCode := Lo(MapVirtualKey(mKey, 0));if (mKey in cExtended) thenbeginpKeyboardEvent(mKey, vScanCode, KEYEVENTF_EXTENDEDKEY);if mGenUpMsg thenpKeyboardEvent(mKey, vScanCode, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP)end elsebeginpKeyboardEvent(mKey, vScanCode, 0);if mGenUpMsg then pKeyboardEvent(mKey, vScanCode, KEYEVENTF_KEYUP);end;end; { pSendKeyDown }procedure pSendKeyUp(mKey: Word);varvScanCode: Byte;beginvScanCode := Lo(MapVirtualKey(mKey, 0));if mKey in cExtended thenpKeyboardEvent(mKey, vScanCode, KEYEVENTF_EXTENDEDKEY and KEYEVENTF_KEYUP) elsepKeyboardEvent(mKey, vScanCode, KEYEVENTF_KEYUP);end;varI: Integer;beginfor I := 1 to mCount dobeginif ssShift in mShiftState then pSendKeyDown(VK_SHIFT, False);if ssCtrl in mShiftState then pSendKeyDown(VK_CONTROL, False);if ssAlt in mShiftState then pSendKeyDown(VK_MENU, False);pSendKeyDown(mKey, True);if ssShift in mShiftState then pSendKeyUp(VK_SHIFT);if ssCtrl in mShiftState then pSendKeyUp(VK_CONTROL);if ssAlt in mShiftState then pSendKeyUp(VK_MENU);end;end;另外一处函数也可以实现类似功能。
keyevent 键值表
`KeyEvent` 是Android 中用于表示按键事件的类。
每个按键都有一个唯一的键码(KeyCode),而`KeyEvent` 就用于描述这些按键事件的信息。
以下是一些常见的Android 键码及其对应的键值表:1. **数字键:**- `KeyEvent.KEYCODE_0` 到`KeyEvent.KEYCODE_9`2. **字母键:**- `KeyEvent.KEYCODE_A` 到`KeyEvent.KEYCODE_Z`3. **功能键:**- `KeyEvent.KEYCODE_F1` 到`KeyEvent.KEYCODE_F12`4. **控制键:**- `KeyEvent.KEYCODE_ENTER` - 回车键- `KeyEvent.KEYCODE_DEL` - 删除键- `KeyEvent.KEYCODE_ESCAPE` - 换码键(Esc键)- `KeyEvent.KEYCODE_TAB` - Tab键- `KeyEvent.KEYCODE_SPACE` - 空格键5. **方向键:**- `KeyEvent.KEYCODE_DPAD_UP` - 方向上键- `KeyEvent.KEYCODE_DPAD_DOWN` - 方向下键- `KeyEvent.KEYCODE_DPAD_LEFT` - 方向左键- `KeyEvent.KEYCODE_DPAD_RIGHT` - 方向右键6. **功能键:**- `KeyEvent.KEYCODE_HOME` - Home键- `KeyEvent.KEYCODE_BACK` - 返回键- `KeyEvent.KEYCODE_MENU` - 菜单键- `KeyEvent.KEYCODE_POWER` - 电源键7. **音量键:**- `KeyEvent.KEYCODE_VOLUME_UP` - 音量增加键- `KeyEvent.KEYCODE_VOLUME_DOWN` - 音量减小键8. **其他常见键:**- `KeyEvent.KEYCODE_MEDIA_PLAY` - 媒体播放键- `KeyEvent.KEYCODE_MEDIA_STOP` - 媒体停止键- `KeyEvent.KEYCODE_CAMERA` - 相机键- `KeyEvent.KEYCODE_CALL` - 拨号键- `KeyEvent.KEYCODE_ENDCALL` - 挂机键这只是一小部分可能用到的键码。
keybd_event使用方法
keybd_event使⽤⽅法Windows提供了⼀个模拟键盘API函数Keybd_event(),使⽤该函数可以相应的屏蔽键盘的动作。
Keybd_event()函数能触发⼀个按键事件,也就是说会产⽣⼀个WM_KEYDOWN或WM_KEYUP消息。
该函数原型如下: VOID keybd_event( BYTE bVk, // virtual-key code BYTE bScan, // hardware scan code DWORD dwFlags, // flags specifying various function options DWORD dwExtraInfo // additional data associated with keystroke ); 从原型可以看出,Keybd_event()共有四个参数:第⼀个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab(其他具体的参见附录:常⽤模拟键的键值对照表);第⼆个参数为扫描码,⼀般不⽤设置,⽤0代替就⾏;第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成"KEYEVENTF_KEYUP";第四个参数⼀般也是置0即可。
例⼦1:模拟按下'A'键 keybd_event(65,0,0,0); keybd_event(65,0,KEYEVENTF_KEYUP,0);例⼦2:模拟按下'ALT+F4'键 keybd_event(18,0,0,0); keybd_event(115,0,0,0); keybd_event(115,0,KEYEVENTF_KEYUP,0); keybd_event(18,0,KEYEVENTF_KEYUP,0);键盘键与虚拟键码对照表 字母和数字键数字⼩键盘的键功能键其它键 键 键码 键 键码 键 键码 键 键码 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 。
Windows api keybd_event说明文档
常数值描述vbKeyLButton 1 鼠标左键vbKeyRButton 2 鼠标右键vbKeyCancel 3 CANCEL 键vbKeyMButton 4 鼠标中键vbKeyBack 8 BACKSPACE 键vbKeyTab 9 TAB 键vbKeyClear 12 CLEAR 键vbKeyReturn 13 ENTER 键vbKeyShift 160 SHIFT 键vbKeyControl 162 CTRL 键vbKeyALT 164 ALT 键vbKeyMenu 18 菜单键vbKeyPause 19 PAUSE 键vbKeyCapital 20 CAPS LOCK 键vbKeyEscape 27 ESC 键vbKeySpace 32 SPACEBAR 键vbKeyPageUp 33 PAGEUP 键vbKeyPageDown 34 PAGEDOWN 键vbKeyEnd 35 END 键vbKeyHome 36 HOME 键vbKeyLeft 37 LEFT ARROW 键vbKeyUp 38 UP ARROW 键vbKeyRight 39 RIGHT ARROW 键vbKeyDown 40 DOWN ARROW 键vbKeySelect 41 SELECT 键vbKeyPrint 42 PRINT SCREEN 键vbKeyExecute 43 EXECUTE 键vbKeySnapshot 44 SNAP SHOT 键vbKeyInser 45 INS 键vbKeyDelete 46 DEL 键vbKeyHelp 47 HELP 键vbKeyNumlock 144 NUM LOCK 键A 键到Z 键与其ASCII 码的相应值'A' 到'Z' 是一致的常数值描述vbKeyA 65 A 键vbKeyB 66 B 键vbKeyC 67 C 键vbKeyD 68 D 键vbKeyE 69 E 键vbKeyF 70 F 键vbKeyG 71 G 键vbKeyH 72 H 键vbKeyI 73 I 键vbKeyJ 74 J 键vbKeyK 75 K 键vbKeyL 76 L 键vbKeyM 77 M 键vbKeyN 78 N 键vbKeyO 79 O 键vbKeyP 80 P 键vbKeyQ 81 Q 键vbKeyR 82 R 键vbKeyS 83 S 键vbKeyT 84 T 键vbKeyU 85 U 键vbKeyV 86 V 键vbKeyW 87 W 键vbKeyX 88 X 键vbKeyY 89 Y 键vbKeyZ 90 Z 键0 键到9 键与其ASCII 码的相应值'0' 到'9' 是一致的常数值描述vbKey0 48 0 键vbKey1 49 1 键vbKey2 50 2 键vbKey3 51 3 键vbKey4 52 4 键vbKey5 53 5 键vbKey6 54 6 键vbKey7 55 7 键vbKey8 56 8 键vbKey9 57 9 键数字小键盘上的键常数值描述vbKeyNumpad0 96 0 键vbKeyNumpad1 97 1 键vbKeyNumpad2 98 2 键vbKeyNumpad3 99 3 键vbKeyNumpad4 100 4 键vbKeyNumpad5 101 5 键vbKeyNumpad6 102 6 键vbKeyNumpad7 103 7 键vbKeyNumpad8 104 8 键vbKeyNumpad9 105 9 键vbKeyMultiply 106 乘号(*) 键vbKeyAdd 107 加号(+) 键vbKeySeparator 108 ENTER 键(在数字小键盘上)vbKeySubtract 109 减号(-) 键vbKeyDecimal 110 小数点(.) 键vbKeyDivide 111 除号(/) 键功能键常数值描述vbKeyF1 112 F1 键vbKeyF2 113 F2 键vbKeyF3 114 F3 键vbKeyF4 115 F4 键vbKeyF5 116 F5 键vbKeyF6 117 F6 键vbKeyF7 118 F7 键vbKeyF8 119 F8 键vbKeyF9 120 F9 键vbKeyF10 121 F10 键vbKeyF11 122 F11 键vbKeyF12 123 F12 键vbKeyF13 124 F13 键vbKeyF14 125 F14 键vbKeyF15 126 F15 键vbKeyF16 127 F16 键A 65 0 96 F1 112 Backspace 8B 66 1 97 F2 113 Tab 9C 67 2 98 F3 114 Clear 12D 68 3 99 F4 115 Enter 13E 69 4 100 F5 116 Shift 16F 70 5 101 F6 117 Control 17G 71 6 102 F7 118 Alt 18H 72 7 103 F8 119 Caps Lock 20I 73 8 104 F9 120 Esc 27J 74 9 105 F10 121 Spacebar 32K 75 * 106 F11 122 Page Up 33L 76 + 107 F12 123 Page Down 34 M 77 Enter 108 -- -- End 35N 78 - 109 -- -- Home 36O 79 . 110 -- -- Left Arrow 37P 80 / 111 -- -- Up Arrow 38Q 81 -- -- -- -- Right Arrow 39R 82 -- -- -- -- Down Arrow 40S 83 -- -- -- -- Insert 45T 84 -- -- -- -- Delete 46U 85 -- -- -- -- Help 47V 86 -- -- -- -- Num Lock 144W 87X 88Y 89Z 900 481 492 503 514 525 53扫描码键0x011b ESC0x3b00 F10x3c00 F20x3d00 F30x3e00 F40x3f00 F50x4000 F60x4100 F70x4200 F80x4300 F90x4400 F10主键盘区:0x2960 ~0x0231 10x0332 20x0433 30x0534 40x0736 60x0837 70x0938 80x0a39 90x0b30 00x0c2d -0x0d3d =0x2b5c \0x0e08 退格键0x0f09 Tab0x1071 q0x1177 w0x1265 e0x1372 r0x1474 t0x1579 y0x1675 u0x1769 i0x186f o0x1970 p0x1a5b [0x1b5d ]0x1e61 a0x1f73 s0x2064 d0x2166 f0x2267 g0x2368 h0x246a j0x256b k0x266c l0x273b ;0x2827 '0x1c0d 回车0x2c7a z0x2d78 x0x2e63 c0x2f76 v0x3062 b0x316e n0x326d m0x342e .0x352f /0x3920 空格键右边数字键盘:0x5200 Insert0x4700 Home0x4900 Page UP0x5300 Delete0x4f00 End0x5100 PageDown0x4800 上箭头0x4b00 左箭头0x5000 下箭头0x4d00 右箭头0x352f /0x372a *0x4a2d - (注意,这是数字键盘的) 0x4737 70x4838 80x4939 90x4b34 40x4c35 50x4d36 60x4e2b +0x4f31 10x5032 20x5133 30x5230 00x532e Del。
VB模拟鼠标键盘动作(转)
VB模拟鼠标键盘动作(转)2011-03-31 15:16来自网址:/share/detail/16221474VB模拟鼠标键盘动作有些时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就有了用程序来代替人们按键的方法,这样可以把很多重复性的键盘操作交给程序来模拟,省了很多精力,按键精灵就是这样的一个软件。
那么我们怎样才能用VB来写一个程序,达到与按键精灵类似的功能呢?那就让我们来先了解一下windows中响应键盘事件的机制。
当用户按下键盘上的一个键时,键盘内的芯片会检测到这个动作,并把这个信号传送到计算机。
如何区别是哪一个键被按下了呢?键盘上的所有按键都有一个编码,称作键盘扫描码。
当你按下一个键时,这个键的扫描码就被传给系统。
扫描码是跟具体的硬件相关的,同一个键,在不同键盘上的扫描码有可能不同。
键盘控制器就是将这个扫描码传给计算机,然后交给键盘驱动程序。
键盘驱动程序会完成相关的工作,并把这个扫描码转换为键盘虚拟码。
什么是虚拟码呢?因为扫描码与硬件相关,不具有通用性,为了统一键盘上所有键的编码,于是就提出了虚拟码概念。
无论什么键盘,同一个按键的虚拟码总是相同的,这样程序就可以识别了。
简单点说,虚拟码就是我们经常可以看到的像VK_A,VK_B这样的常数,比如键A的虚拟码是65,写成16进制就是&H41,注意,人们经常用16进制来表示虚拟码。
当键盘驱动程序把扫描码转换为虚拟码后,会把这个键盘操作的扫描码和虚拟码还有其它信息一起传递给操作系统。
然后操作系统则会把这些信息封装在一个消息中,并把这个键盘消息插入到消息列队。
最后,要是不出意外的话,这个键盘消息最终会被送到当前的活动窗口那里,活动窗口所在的应用程序接收到这个消息后,就知道键盘上哪个键被按下,也就可以决定该作出什么响应给用户了。
这个过程可以简单的如下表示:用户按下按键-----键盘驱动程序将此事件传递给操作系统-----操作系统将键盘事件插入消息队列-----键盘消息被发送到当前活动窗口明白了这个过程,我们就可以编程实现在其中的某个环节来模拟键盘操作了。
如何在PB中模拟按键
如何在PB中模拟按键如何在PB中模拟按键很多人都知道怎样在datawindow按下enter键模拟tab键的效果:在datawindow中扩展出pbm_dwnprocessenter事件: 加入代码Send( Handle( This),256,9,Long(0,0))Return 1这种方法曾经出现在晓通那一套天价的书上,网上各网站你抄我的,我抄你的,好象只有这一种方法,一种思路,不知误导了多少人。
今天我就来消清晓通的流毒。
这种方法其实效果也还可以,只不过是很久以前的Windows 3.1的技术了,在Windows95以上的版本,我们有更好,更规范,功能更强的方法来实现。
在windows95以上,特意增加了一个API调用,keybd_event,这个API调用的功能就是模拟键盘击键。
定义如下:subroutine keybd_event(uint bVk,uint bScan,long dwFlags,long dwExtraInfo ) library 'user32.dll'// 以下这段抄自MSDN,是关于各参数的说明ParametersbVkSpecifies a virtual-key code. The code must be a value in the range 1to 254.bScanSpecifies a hardware scan code for the key.dwFlagsA set of flag bits that specify various aspects of function operation.An application can use any combination of the following predefined constant values to set the flags. Value MeaningKEYEVENTF_EXTENDEDKEY If specified, the scan code was preceded by a prefix byte having the value 0xE0 (224).KEYEVENTF_KEYUP If specified, the key is being released. If not specified, the key is being depressed.dwExtraInfoSpecifies an additional 32-bit value associated with the key stroke.谁有耐心慢慢看去,以下只说明我们要用的两个参数bVk,指需要模拟的击键dwflags, =0 ,按下 = 2 ,释放下面我们看看如何实现以下功能:按下enter键以及下箭头,相当于按下tab键按下上箭头,相当于按下Shift-tab键如果是在datawindow下,扩展出pbm_dwnkey,增加如下代码: If key = KeyEnter! Or Key = KeyDownArrow! Thenkeybd_event ( 9, 0, 0 , 0 ) // 按下tabkeybd_event ( 9, 0, 2, 0 ) // 释放tabReturn 1End IfIf Key = KeyUpArrow! Thenkeybd_event ( 16, 0, 0, 0 ) // 按下shiftkeybd_event ( 9, 0, 0 , 0 ) // 按下tabkeybd_event ( 9, 0, 2, 0 ) // 释放tabkeybd_event ( 16, 0, 2, 0 ) // 释放shiftReturn 1End If我们也可以在window级实现以上功能,很简单,将上面代码加在window的key事件中即可.keybd_event还有一些很神奇的作用,比如以下代码打开windows的“开始菜单”keybd_event ( 91, 0, 0 , 0 ) // 按下win(不知道应该叫什么)键keybd_event ( 91, 0, 2, 0 ) // 放开。
keybd_event,mouse_event模拟产生键盘事件、鼠标事件的使用
keybd_event,mouse_event模拟产生键盘事件、鼠标事件的使用比如一个应用:自动关闭弹出的Messagox对话框(/dijkstar/article/details/8761481)(2013-04-05编辑)void CSimulateMouseView::OnLdbclick(){//将鼠标的位置放在窗口的标题条上POINT lpPoint;CRect rc;CWnd* pParent = AfxGetApp()->GetMainWnd();pParent->GetWindowRect(&rc);lpPoint.x = rc.left+50;lpPoint.y = rc.top+10;SetCursorPos(lpPoint.x, lpPoint.y);//双击该标题条mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);}void CSimulateMouseView::OnLclick(){//将鼠标的位置放在窗口的关闭按钮上POINT lpPoint;CRect rc;CWnd* pParent = AfxGetApp()->GetMainWnd();pParent->GetWindowRect(&rc);lpPoint.x = rc.right-5;lpPoint.y = rc.top +5;SetCursorPos(lpPoint.x, lpPoint.y);//单击mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_ABSOLUTE,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTUP|MOUSEEVENTF_ABS OLUTE,0,0,0,0);}BOOL CSimulateMouseView::PreTranslateMessage(MSG* pMsg){// TODO: Add your specialized code here and/or call the base classif (pMsg->message==WM_KEYDOWN && pMsg->wParam==0x41){::MessageBox(NULL, "A 键按下", "提示", MB_ICONQUESTION);return FALSE; //不翻译消息,直接将消息传递下去。
VB模拟按键终极教程
MakeKeyLparam = Val("&H" & s)
End Function
这个函数像这样调用,比如按下A键,那么lParam=MakeKeyLparam(VK_A,WM_KEYDOWN) ,很简单吧。值得注意的是,即使你发送消息时设置了lParam参数的值,但是系统在传递消息时仍然可能会根据当时的情况重新设置该参数,那么目标程序收到的消息中lParam的值可能会和你发送时的有所不同。所以,如果你很懒的话,还是直接把它设为0吧,对大多数程序不会有影响的,呵呵。
VB模拟按键终极教程
VB模拟按键终极教程VB(Visual Basic)是一种可视化的编程语言,在Windows操作系统中得到广泛应用。
VB可以通过模拟按键实现自动化操作,比如自动填写表单、自动点击按钮等。
本教程将详细介绍如何使用VB来模拟按键操作的终极方法。
首先,我们需要创建一个新的VB项目。
打开VB开发环境,点击“新建项目”并选择“Windows桌面向导”。
在下一步中,选择“Windows窗体应用程序”并命名项目。
点击“确定”开始创建项目。
```Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _ByVal bScan As Byte, _ByVal dwFlags As Long, _ByVal dwExtraInfo As Long)Private Const KEYEVENTF_KEYUP = &H2```上述代码声明了一个名为keybd_event的函数和一个名为KEYEVENTF_KEYUP的常量。
keybd_event函数用于模拟按键操作,KEYEVENTF_KEYUP常量用于指定按键的释放事件。
然后,在Form_Load事件处理程序中添加以下代码,实现模拟按键操作:```Private Sub Form_Loadkeybd_event(VBKeyLMenu, 0, 0, 0) '按下左Alt键keybd_event(Keys.F, 0, 0, 0) '按下F键keybd_event(Keys.F, 0, KEYEVENTF_KEYUP, 0) '释放F键keybd_event(VBKeyLMenu, 0, KEYEVENTF_KEYUP, 0) '释放左Alt键End Sub```上述代码会在窗体加载时模拟按下左Alt键和F键,并在F键释放后释放左Alt键。
最后,我们需要在按钮的Click事件处理程序中添加代码来触发模拟按键操作。
C#keybd_event模拟对照表以及用法.
C#keybd_event模拟对照表以及⽤法.Windows提供了⼀个模拟键盘API函数Keybd_event(),该函数能触发⼀个按键事件,也就是说会产⽣⼀个WM_KEYDOWN或WM_KEYUP消息。
[DllImport("user32.dll", EntryPoint = "keybd_event")]public static extern void keybd_event(byte bVk, //虚拟键值byte bScan,// ⼀般为0int dwFlags, //这⾥是整数类型 0 为按下,2为释放int dwExtraInfo //这⾥是整数类型⼀般情况下设成为 0);使⽤⽅法:keybd_event((byte)Keys.LWin, 0, 0, 0); //按下LWINkeybd_event((byte)Keys.D, 0, 0, 0); //按下Dkeybd_event((byte)Keys.LWin, 0, 2, 0); //释放LWINkeybd_event((byte)Keys.D, 0, 2, 0); //释放D补充:1.调⽤API函数记得引⽤:using System.Runtime.InteropServices;2.表格如下,是转过来的。
PS:如果上⾯(byte)keys.Alt等出现overflow 的问题,可以直接⽤表格的数字来代替。
虚拟键码对应值对应键VK_LBUTTON1⿏标左键VK_RBUTTON2⿏标右键VK_CANCEL3CancelVK_MBUTTON4⿏标中键VK_XBUTTON15VK_XBUTTON26VK_BACK8BackspaceVK_TAB9TabVK_CLEAR12ClearVK_RETURN13EnterVK_SHIFT16ShiftVK_CONTROL17CtrlVK_MENU18AltVK_PAUSE19PauseVK_CAPITAL20Caps LockVK_KANA21VK_HANGUL21VK_JUNJA23VK_FINAL24VK_HANJA25VK_KANJI25*VK_ESCAPE27EscVK_CONVERT28VK_NONCONVERT29VK_ACCEPT30VK_MODECHANGE31VK_SPACE32SpaceVK_PRIOR33Page UpVK_NEXT34Page DownVK_NEXT34Page Down VK_END35EndVK_HOME36HomeVK_LEFT37Left Arrow VK_UP38Up Arrow VK_RIGHT39Right Arrow VK_DOWN40Down Arrow VK_SELECT41SelectVK_PRINT42PrintVK_EXECUTE43Execute VK_SNAPSHOT44Snapshot VK_INSERT45InsertVK_DELETE46DeleteVK_HELP47Help48049150251352453554655756857965A66B67C68D69E70F71G72H73I74J75K76L77M78N79O80P81Q82R83S87W88X89Y90ZVK_LWIN91VK_RWIN92VK_APPS93VK_SLEEP95VK_NUMPAD096 0VK_NUMPAD4100 4 VK_NUMPAD5101 5 VK_NUMPAD6102 6 VK_NUMPAD7103 7 VK_NUMPAD8104 8VK_NUMPAD8104 8 VK_NUMPAD9105 9 VK_MULTIPLY106 *VK_ADD107 + VK_SEPARATOR108 Enter VK_SUBTRACT109 -VK_DECIMAL110 .VK_DIVIDE111 /VK_F1112VK_F2113VK_F6117VK_F7118VK_F8119VK_F9120VK_F10121VK_F11122VK_F12123VK_F13124VK_F14125VK_F15126VK_F16127VK_F21132VK_F22133VK_F23134VK_F24135VK_NUMLOCK144VK_SCROLL145VK_LSHIFT160VK_RSHIFT161VK_LCONTROL162VK_RCONTROL163VK_LMENU164VK_BROWSER_REFRESH168VK_BROWSER_STOP169VK_BROWSER_SEARCH170VK_BROWSER_FAVORITES171VK_BROWSER_HOME172VK_VOLUME_MUTE173VK_VOLUME_DOWN174VK_VOLUME_UP175VK_MEDIA_NEXT_TRACK176VK_MEDIA_PREV_TRACK177VK_MEDIA_STOP178VK_LAUNCH_APP2183VK_OEM_1186VK_OEM_PLUS187VK_OEM_COMMA188VK_OEM_MINUS189VK_OEM_PERIOD190VK_OEM_PERIOD190VK_OEM_2191VK_OEM_3192VK_OEM_4219VK_OEM_5220VK_OEM_6221VK_OEM_7222VK_OEM_8223VK_ATTN246VK_CRSEL247VK_EXSEL248VK_EREOF249VK_PLAY250VK_ZOOM251VK_NONAME252VK_PA1253VK_OEM_CLEAR254ASCII码键盘ASCII 码键盘ASCII 码键盘ASCII 码键盘27ESC32SPACE33!34"35#36$37%38& 39'40(41)42* 43+44'45-46.47/480491502 513524535546 55756857958: 59;60< 61=62> 63?64@65A66B 67C68D69E70F 71G72H73I74J 75K76L77M78N 79O80P81Q82R 83S84T85U86V 87W88X89Y90Z 91[92\93]94^ 95_96`97a98b 99c100d101e102f 103g104h105i106j 107k108l109m110n 111o112p113q114r 115s116t117u118v 119w120x121y122z 123{124|125}126~。
keyevent 参数值
keyevent 参数值“keyevent 参数值”在编程中是指用于触发某个特定按键的参数值。
在本文中,我们将详细讨论keyevent参数值的使用方法及其在不同编程语言中的应用。
首先,我们需要了解keyevent参数值的基本概念。
在编程中,通过keyevent参数值可以模拟用户按下或释放键盘上的特定按键,从而触发相应的操作或事件。
keyevent参数值通常是一个代表键盘上某个按键的整型数值或字符值。
在不同的编程语言中,使用keyevent参数值的方式略有不同。
接下来,我们将从三个最常见的编程语言(Java、Python和C++)中介绍如何使用keyevent参数值。
首先是Java。
在Java中,可以使用java.awt.event.KeyEvent类来处理键盘事件。
可以通过KeyEvent类的静态字段来表示不同按键的keyevent 参数值。
例如,KeyEvent.VK_ENTER表示回车键的keyevent参数值,KeyEvent.VK_SPACE表示空格键的keyevent参数值。
可以通过调用KeyEvent的静态方法getKeyCode()来获取按键的keyevent参数值。
接下来是Python。
在Python中,使用第三方库pynput来处理键盘事件。
通过导入pynput库中的keyboard模块,可以创建一个监听键盘事件的实例,并通过回调函数来处理按键事件。
可以通过pynput.keyboard.Key 枚举类来表示不同按键的keyevent参数值,例如,使用pynput.keyboard.Key.enter表示回车键的keyevent参数值。
最后是C++。
在C++中,可以使用Windows API函数来处理键盘事件。
使用GetAsyncKeyState函数来获取按键的状态,使用keyevent参数值来表示不同按键。
可以使用Windows API定义的常量来表示不同按键的keyevent参数值,例如,VK_RETURN表示回车键的keyevent参数值。
Pb中利用热键将所需的文本输入到当前程序的输入框中
Pb中利用热键将所需的文本输入到当前程序的输入框中用户对象forwardglobal type uo_ime from nonvisualobjectend typeend forwardshared variables//简体中文constant long IME_CHOTKEY_IME_NONIME_TOGGLE = 16 //切换中英文输入法constant long IME_CHOTKEY_SHAPE_TOGGLE = 17 //切换半角和全角constant long IME_CHOTKEY_SYMBOL_TOGGLE = 18 //切换中文标点和英文标点constant long IME_CHOTKEY_LAST = 47end variablesglobal type uo_ime from nonvisualobject autoinstantiateend typetype prototypesfunction long ImmSimulateHotKey(long h,long hkey) library 'IMM32.dll'function long GetKeyboardLayout(long h) library'user32.dll'function boolean ImmIsIME(long h) library 'IMM32.dll' end prototypestype variablesend variablesforward prototypespublic subroutine of_to_chinese (long h)public subroutine of_to_english (long h)public function boolean of_is_chinese (long h)end prototypespublic subroutine of_to_chinese (long h);longlcurrent_imelcurrent_ime = getkeyboardlayout(0)if not immisime(lcurrent_ime) thenImmSimulateHotKey(h,IME_CHOTKEY_IME_NONIME_TOGGLE)// hkey) end ifend subroutinepublic subroutine of_to_english (long h);long lcurrent_imelcurrent_ime = getkeyboardlayout(0)if immisime(lcurrent_ime) thenImmSimulateHotKey(h,IME_CHOTKEY_IME_NONIME_TOGGLE)end ifend subroutinepublic function boolean of_is_chinese (long h);long lcurrent_imelcurrent_ime = getkeyboardlayout(0)return immisime(lcurrent_ime)end functionon uo_ime.createcall super::createTriggerEvent( this, "constructor" )end onon uo_ime.destroyTriggerEvent( this, "destructor" )call super::destroyend oneventconstructor;/********************************************* *****中英文输入法切换对象:of_to_chinese( /*long h */) return (None)功能:把句柄为h的窗口的输入法切换为中文of_to_english( /*long h */) return (None)功能:把句柄为h的窗口的输入法切换为英文of_is_chinese( /*long h */) return boolean功能:判断句柄为h的窗口的输入法是否为中文New by njz Jysoft 2006-09-02**************************************************/ end event主窗体forwardglobal type w_main from windowend typetype st_2 from statictext within w_mainend typetype st_1 from statictext within w_mainend typetype sle_1 from singlelineedit within w_main end typeend forwardglobal type w_main from windowinteger width = 2075integer height = 720boolean titlebar = truestring title = "按F3将文本框内容复制到其他程序中" boolean controlmenu = trueboolean minbox = trueboolean maxbox = trueboolean resizable = truelong backcolor = 67108864string icon = "AppIcon!"boolean center = truest_2 st_2st_1 st_1sle_1 sle_1end typeglobal w_main w_maintype prototypesFUNCTION Integer GlobalAddAtom(ref string lpString) LIBRARY "kernel32.dll" ALIAS FOR "GlobalAddAtomA" //hwnd参数用于指定使用本热键的窗口句柄,id参数用于指定一个惟一的ID,fsModifiers参数指明辅助键值(Alt、Ctrl、Shift等),vk参数指明虚拟键的ASCII码FUNCTION ulong RegisterHotKey(ulong hwnd,ulongid,ulong fsModifiers,ulong vk) LIBRARY "user32.dll" FUNCTION ulong UnregisterHotKey( ulong hWnd, ulong id ) LIBRARY "user32.dll"Function int GetKeyState(integer VirtualKeycode) Library "User32.dll"SUBROUTINE keybd_event(INT bvk,INT bscan,INT dwflags, INT dwextrainfo) LIBRARY "user32.dll" FUNCTION ulong GetForegroundWindow() LIBRARY "user32.dll"FUNCTION ulong GetWindowText(ulong hwnd,ref string lpString,ulong cch) LIBRARY "user32.dll" ALIAS FOR "GetWindowTextA"Function long SendMessage(long hwnd,long wMsg,long wParam,string lParam) Library "user32.dll" Alias for "SendMessageA"end prototypestype variablesint atomidconstant integer MOD_ALT = 1constant integer MOD_CONTROL = 2constant integer MOD_SHIFT = 4//键盘常用ASCII码//~`键Constant integer VK_BackQuote = 192 //_-键Constant integer VK_Dash = 189//+=键Constant integer VK_Equal = 187//{[键Constant integer VK_LeftBracket = 219 //}]键Constant integer VK_RightBracket = 221 //|\键Constant integer VK_BackSlash = 220 //?/键Constant integer VK_Slash = 191//:;键Constant integer VK_SemiColon = 186 //"'键Constant integer VK_Quote = 222//<,键Constant integer VK_Comma = 188//>.键Constant integer VK_Period = 190//ESC键Constant integer VK_ESCAPE = 27 //回车键Constant integer VK_Enter = 13//TAB键Constant integer VK_TAB = 9//Caps Lock键Constant integer VK_CapsLock = 20 //Shift键Constant integer VK_SHIFT = 16//Ctrl键Constant integer VK_CONTROL = 17 //Alt键Constant integer VK_MENU = 18//空格键Constant integer VK_Spacebar = 32 //退格键Constant integer VK_BACK = 8//左徽标键Constant integer VK_LWIN = 91//右徽标键Constant integer VK_RWIN = 92//鼠标右键快捷键:Constant integer VK_APPS = 93////Insert键Constant integer VK_INSERT = 45//Home键Constant integer VK_HOME = 36//PageUpConstant integer VK_PageUp = 33 //PageDownConstant integer VK_PageDown = 34 //End键Constant integer VK_END = 35//Delete键Constant integer VK_DELETE = 46////方向键(←)Constant integer VK_LEFTArrow = 37//方向键(↑)Constant integer VK_UPArrow = 38//方向键(→)Constant integer VK_RightArrow = 39 //方向键(↓)Constant integer VK_DOWNArrow = 40 //F1键Constant integer VK_F1 = 112//F2键Constant integer VK_F2 = 113//F3键Constant integer VK_F3 = 114//F4键Constant integer VK_F4 = 115//F5键Constant integer VK_F5 = 116//F6键Constant integer VK_F6 = 117//F7键Constant integer VK_F7 = 118//F8键Constant integer VK_F8 = 119//F9键Constant integer VK_F9 = 120//F10键Constant integer VK_F10 = 121//F11键Constant integer VK_F11 = 122//F12键Constant integer VK_F12 = 123//////Num Lock键Constant integer VK_NUMLOCK = 144 //小键盘0Constant integer VK_NUMPAD0 = 96 //小键盘1Constant integer VK_NUMPAD1 = 97 //小键盘2Constant integer VK_NUMPAD2 = 98 //小键盘3Constant integer VK_NUMPAD3 = 99 //小键盘4Constant integer VK_NUMPAD4 = 100//小键盘5Constant integer VK_NUMPAD5 = 101 //小键盘6Constant integer VK_NUMPAD6 = 102 //小键盘7Constant integer VK_NUMPAD7 = 103 //小键盘8Constant integer VK_NUMPAD8 = 104 //小键盘9Constant integer VK_NUMPAD9 = 105 //小键盘.Constant integer VK_DECIMAL = 110 //小键盘*Constant integer VK_MULTIPLY = 106 //小键盘+Constant integer VK_ADD = 107//小键盘-Constant integer VK_SUBTRACT = 109 //小键盘/Constant integer VK_DIVIDE = 111//////Pause Break键Constant integer VK_PAUSE = 19//printscreenconstant integer VK_PRINTSCREEN = 44//Scroll Lock键Constant integer VK_SCROLL = 145end variablesforward prototypespublic subroutine wf_char_code (string as, ref integer ai_vk, ref boolean ab_shift)public subroutine wf_paste (string as)end prototypespublic subroutine wf_char_code (string as, ref integer ai_vk, ref boolean ab_shift);choose case ascase ' 'ai_vk = VK_Spacebarab_shift = falsecase '~~'ai_vk = VK_BackQuoteab_shift = truecase '`'ai_vk = VK_BackQuoteab_shift = falsecase '_'ai_vk = VK_Dashab_shift = truecase '-'ai_vk = VK_Dashab_shift = falsecase '+'ai_vk = VK_Equalab_shift = truecase '='ai_vk = VK_Equalab_shift = falsecase '{'ai_vk = VK_LeftBracketab_shift = truecase '['ai_vk = VK_LeftBracketab_shift = falsecase '}'ai_vk = VK_RightBracketab_shift = truecase ']'ai_vk = VK_RightBracketab_shift = falsecase '|'ai_vk = VK_BackSlashab_shift = truecase '\'ai_vk = VK_BackSlashab_shift = falsecase '?'ai_vk = VK_Slashab_shift = truecase '/'ai_vk = VK_Slashab_shift = falsecase ':'ai_vk = VK_SemiColonab_shift = truecase ';'ai_vk = VK_SemiColonab_shift = falsecase '"'ai_vk = VK_Quoteab_shift = truecase "'"ai_vk = VK_Quoteab_shift = falsecase '<'ai_vk = VK_Commaab_shift = truecase ','ai_vk = VK_Commaab_shift = falsecase '>'ai_vk = VK_Periodab_shift = truecase '.'ai_vk = VK_Periodab_shift = falsecase elseif isnumber(as) thenai_vk = asc(as)ab_shift = falseelseif len(as) <> 1 thenai_vk = 0returnend ifchoose case asc(as)case 65 to 90 //大写字母ai_vk = asc(as)ab_shift = truecase 97 to 122 //小写字母ai_vk = asc(UPPER(as))ab_shift = falsecase elseai_vk = 0returnend chooseend ifend chooseend subroutinepublic subroutine wf_paste (string as);int i, j, vk boolean lb_s, lb_capslockuo_ime lnstring lsls = space(255)GetWindowText(GetForegroundWindow(), ls, 255)//以下功能暂时没有实现//if not ln.of_is_chinese(GetForegroundWindow()) then //如果目标程序使用的是中文输入法,则切换到英文// keybd_event(VK_CONTROL,0,0,0)// keybd_event(VK_Spacebar,0,0,0)// keybd_event(VK_Spacebar,0,2,0)// keybd_event(VK_CONTROL,0,2,0)//end iflb_capslock = GetKeyState(VK_CapsLock) = 1j = len(as)for i = 1 to jwf_char_code( mid(as, i, 1), vk, lb_s)if vk <= 0 then continueif vk >= 65 and vk <= 90 thenif (lb_capslock and lb_s) or (not lb_capslock and not lb_s) thenkeybd_event(vk,0,0,0)keybd_event(vk,0,2,0)elsekeybd_event(VK_SHIFT,0,0,0)keybd_event(vk,0,0,0)keybd_event(vk,0,2,0)keybd_event(VK_SHIFT,0,2,0)end ifelseif not lb_s thenkeybd_event(vk,0,0,0)keybd_event(vk,0,2,0)elsekeybd_event(VK_SHIFT,0,0,0)keybd_event(vk,0,0,0)keybd_event(vk,0,2,0)keybd_event(VK_SHIFT,0,2,0)end ifend ifnextend subroutineon w_main.createthis.st_2=create st_2 this.st_1=create st_1 this.sle_1=create sle_1 this.Control[]={this.st_2,& this.st_1,&this.sle_1}end onon w_main.destroy destroy(this.st_2) destroy(this.st_1) destroy(this.sle_1)end onevent open;long ll-RC string ls-strls-str = "My atom ID"atomid = GlobalAddAtom(ls-str) //得到惟一的ID,保证不和其他应用程序发生冲突ll-RC = RegisterHotKey(Handle(this), atomid, 0, 114)// 114为‘F3’,注册的热键为F3if ll-RC = 0 thenmessagebox("错误","错误信息")end ifend eventevent other;IF wparam = atomid THEN//在这里编写处理程序if not keydown(keyf3!) then returnpost WF_PASTE(sle_1.text)END IFend eventevent close;UnregisterHotKey(handle(this),atomid) end eventtype st_2 from statictext within w_maininteger x = 69integer y = 140integer width = 965integer height = 64integer textsize = -9integer weight = 400fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable!string facename = "宋体"long textcolor = 33554432long backcolor = 67108864string text = "前提是当前焦点在其他程序上" boolean focusrectangle = falseend typetype st_1 from statictext within w_main integer x = 69integer y = 40integer width = 965integer height = 64integer textsize = -9integer weight = 400fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable!string facename = "宋体"long textcolor = 33554432long backcolor = 67108864string text = "按F3将文本框内容复制到其他程序中" boolean focusrectangle = falseend typetype sle_1 from singlelineedit within w_main integer x = 55integer y = 264integer width = 1851integer height = 96integer taborder = 10integer textsize = -9integer weight = 400fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable!string facename = "宋体"long textcolor = 33554432string text = "123456yuuoo;~'[~']p90877 4r"borderstyle borderstyle = stylelowered! end type。
keybd_怎么用keybd_event实现不停的按键盘1 2 3并按上ctrl键和点种鼠标 ..
你先去看看MSDN里的RegisterHotKey或SetWindowsHo搞定Ex的API解释,然后到网上找一下Code,还是比 较简单的. 注册热键Ctrl+Alt+Q: RegisterHotKey(Application->Handle,0x1000,MOD_CONTROL+MOD_ALT,'Q'); 怎麼搞的熱鍵變成F8, MOD_CONTROL 這段不能去掉到. 如果只有一个键的,RegisterHotKey确实帮不了你 ,只能用Ho搞定了. ho搞定好複雜, 你有沒相關的代碼啊. 謝謝你了,,結帖了,, HO搞定的問題,不懂再開帖..
} //--------------------------------------------------------------------------void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { Timer1->Enabled=false; UnregisterHotKey(Handle,0x1000); UnregisterHotKey(Handle,0x1001); } //--------------------------------------------------------------------------傲博技术知识库 /
keybd:怎麼用keybd_event實現不停的按鍵 盤1 2 3並按上ctrl鍵和點種鼠標右鍵。 要 有代碼啊。。?
傲博技术知识库 / ĵ:http://BCBAPI/Article132386.html 剛學c++ builder,看到別人用keybd_event,做的按鍵精靈,自己也想學下, 哪位有代碼, 最好有詳細說明啊...謝謝了...周未有事,沒時間看,現在學習中... UINT uScan = MapVirtualKey(uVK,0); 什麼意思哦.. 請問下,怎麼能實現按F8,就開始運行,按F7,就結束運行了.. UINT uScan = MapVirtualKey(uVK,0);是取得虚拟键(Virtual-Key)对应于你键盘上的扫描码. 你应该先研究一下MapVirtualKey和keybd_event的API解释. 另外,你说的"按F8,就開始運行,按F7,就結束運行”是运行什么呀? 哦.學習中... 我的意思是說,按鍵盤的F8.就運行Button1Click,按鍵盤的F7,就不運行Button1Click. 引用 6 楼 tianwei118 的 解答: 哦.學習中... 我的意思是說,按鍵盤的F8.就運行Button1Click,按鍵盤的F7,就不運行Button1Click.
CC++使用keybd_event模拟键盘按键
CC++使⽤keybd_event模拟键盘按键1 #include <stdio.h>2 #include <Windows.h>34/*5设置键盘⼤⼩写状态6 big:为TRUE则切换⼤写状态,否则切换⼩写状态7*/8 VOID MySetKeyBig(BOOL big = FALSE);910/*11模拟键盘按键,⽀持⼤⼩写12 str:需要按出的字符串13*/14 VOID MyAnalogKey(char *str);1516int main(void)17 {18// 当程序运⾏1.5s时再执⾏模拟按键,以便选择需要操作的窗⼝19 Sleep(1500);20 MyAnalogKey("Love life,Love BiaoGe.0123456789");21 system("pause");22return0;23 }2425 VOID MySetKeyBig(BOOL big)26 {27// 判断键盘CapsLock键是否开启状态,开启状态则为⼤写,否则为⼩写28if (GetKeyState(VK_CAPITAL))29 {30// 如果当前键盘状态为⼤写,要求改⼩写,则模拟按键CapsLock切换状态31if (!big)32 {33 keybd_event(VK_CAPITAL, NULL, KEYEVENTF_EXTENDEDKEY | 0, NULL);34 keybd_event(VK_CAPITAL, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);35 }36 }37else38 {39// 如果当前键盘状态为⼩写,要求改⼤写,则模拟按键CapsLock切换状态40if (big)41 {42 keybd_event(VK_CAPITAL, NULL, KEYEVENTF_EXTENDEDKEY | 0, NULL);43 keybd_event(VK_CAPITAL, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);44 }45 }46 }4748 VOID MyAnalogKey(char *str)49 {50int iLen = 0;51char *tmp = NULL;52 INPUT *keys = NULL;53 BOOL bOldState = FALSE;5455// 保存此操作前的键盘状态56 bOldState = (BOOL)GetKeyState(VK_CAPITAL);57 iLen = lstrlen(str);58 tmp = (char *)malloc(iLen);59 memmove(tmp, str, iLen);60for (int i = 0; i < iLen; i++)61 {62// 某些符号⾮直属键盘按键,这⾥只过滤转换两个,以后⽤到其它字符⾃⾏添加过滤63if (tmp[i] == '')64 {65// 产⽣⼀个击键消息步骤:按下->抬起66 keybd_event(VK_SPACE, NULL, KEYEVENTF_EXTENDEDKEY | 0, NULL);67 keybd_event(VK_SPACE, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);68 }69else if (tmp[i] == ',')70 {71 keybd_event(VK_OEM_COMMA, NULL, KEYEVENTF_EXTENDEDKEY | 0, NULL);72 keybd_event(VK_OEM_COMMA, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);73 }74else if (tmp[i] >= 'a' && tmp[i] <= 'z')75 { // 根据字符⼤⼩写切换键盘⼤⼩写状态76 MySetKeyBig(0);77// keybd_event只识别⼤写78 keybd_event((BYTE)tmp[i]-32, NULL, KEYEVENTF_EXTENDEDKEY | 0, NULL);79 keybd_event((BYTE)tmp[i]-32, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);80 }81else if ((tmp[i] >= 'A' && tmp[i] <= 'Z') || (tmp[i] >= '0' && tmp[i] <= '9'))82 {83 MySetKeyBig(1);84 keybd_event((BYTE)tmp[i], NULL, KEYEVENTF_EXTENDEDKEY | 0, NULL);85 keybd_event((BYTE)tmp[i], NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);86 }87else88 {89 keybd_event((BYTE)tmp[i]+64, NULL, KEYEVENTF_EXTENDEDKEY | 0, NULL);90 keybd_event((BYTE)tmp[i]+64, NULL, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, NULL);91 }92 }93// 恢复此操作之前的键盘状态94 MySetKeyBig(bOldState);95free(tmp);96 }。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
vbKeyPause 19 PAUSE 键
vbKeyCapital 20 CAPS LOCK 键
vbKeyEscape 27 ESC 键
vbKeySpace 32 SPACEBAR 键
vbKeyPageUp 33 PAGEUP 键
vbKeyPageDown 34 PAGEDOWN 键
vbKeyMButton 4 鼠标中键
vbKeyBack 8 BACKSPACE 键
vbKeyTab 9 TAB 键
vbKeyClear 12 CLEAR 键
vbKeyReturn 13 ENTER 键
vbKeyShift 16 SHIFT 键
vbKeyControl 17 CTRL 键
vbKeyF7 118 F7 键
vbKeyF8 119 F8 键
vbKeyF9 120 F9 键
vbKeyF10 121 F10 键
vbKeyF11 122 F11 键
vbKeyF12 123 F12 键
vbKeyF13 124 F13 键
vbKeyF14 125 F14 键
vbKey4 52 4 键
vbKey5 53 5 键
vbKey6 54 6 键
vbKey7 55 7 键
vbKey8 56 8 键
vbKey9 57 9 键
数字小键盘上的键
常数 值 描述
vbKeyNumpad0 96 0 键
vbKeyNumpad1 97 1 键
vbKeyN 78 N 键
vbKeyO 79 O 键
vbKeyP 80 P 键
vbKeyQ 81 Q 键
vbKeyR 82 R 键
vbKeyS 83 S 键
vbKeyT 84 T 键
vbKeyU 85 U 键
vbKeyV 86 V 键
vbKeyW 87 W 键
vbKeyF15 126 F15 键
vbKeyF16 127 F16 键
vbKeyD 68 D 键
vbKeyE 69 E 键
vbKeyF 70 F 键
vbKeyG 71 G 键
vbKeyH 72 H 键
vbKeyI 73 I 键
vbKeyJ 74 J 键
vbKeyK 75 K 键
vbKeyL 76 L 键
vbKeyM 77 M 键
// tab键的keyvalues为9,如下使用:
// keybd_event(9,0,0,0) //相当于键值为9的键被按下,即TAB键被按下。
// keybd_event(9,0,2,0) //相当于键值为9的键被释放,即TAB键被释放。
// shift 的键值为16.其它的你可以自己查资料。
vbKeyNumpad2 98 2 键
vbKeyNumpad3 99 3 键
vbKeyNumpad4 100 4 键
vbKeyNumpad5 101 5 键
vbKeyNumpad6 102 6 键
vbKeyNumpad7 103 7 键
vbKeyNumpad8 104 8 键
vbKeyX 88 X 键
vbKeyY 89 Y 键
vbKeyZ 90 Z 键
0 键到 9 键与其 ASCII 码的相应值 '0' 到 '9' 是一致的
常数 值 描述
vbKey0 48 0 键
vbKey1 49 1 键
vbKey2 50 2 键
vbKey3 51 3 键
keybd_event(lc_shift, char(0), 2, ll_ExtraInfo)//在窗口中声明如下的全局或局部外部函数: 代码触发按键
subroutine keybd_event(int bVk,int bScan,int dwFlags,int dwExtraInfo) Library "user32"
vbKeyDivide 111 除号 (/) 键
功能键
常数 值 描述
vbKeyF1 112 F1 键
vbKeyF2 113 F2 键
vbKeyF3 114 F3 键
vbKeyF4 115 F4 键
vbKeyF5 116 F5 键
vbKeyF6 117 F6 键
vbKeyEnd 35 END 键
vbKeyHome 36 HOME 键
vbKeyLeft 37 LEFT ARROW 键
vbKeyUp 38 UP ARROW 键
vbKeyRight 39 RIGHT ARROW 键
vbKeyDown 40 DOWN ARROW 键
vbKeyNumpad9 105 9 键
vbKeyMultiply 106 乘号 (*) 键
vbKeyAdd 107 加号 (+) 键
vbKeySeparator 108 ENTER 键(在数字小键盘上)
vbKeySubtract 109 减号 (-) 键
vbKeyDecimal 110 小数点 (.) 键
vbKeyHelp 47 HELP 键
vbKeyNumlock 144 NUM LOCK 键
A 键到 Z 键与其 ASCII 码的相应值'A' 到 'Z' 是一致的
常数 值 描述
vbKeyA 65 A 键
vbKeyB 66 B 键
vbKeyC 67 C 键
vbKeySelect 41 SELECT 键
vbKeyPrint 42 PRINT SCREEN 键
vbKeyExecute 43 EXECUTE 键
vbKeySnapshot 44 SNAP SHOT 键
vbKeyInser 45 INS 键
vbKeyDelete 46 DEL 键 Байду номын сангаас
VK_Down=40. VK_LEFT=37. VK_UP=38. VK_RIGHT=39
F1-F12分别对应112-123
键码常数
键码
常数 值 描述
vbKeyLButton 1 鼠标左键
vbKeyRButton 2 鼠标右键
vbKeyCancel 3 CANCEL 键
Subroutine keybd_event(char bVk, char bScan, ulong dwFlags, ref ulong dwExtraInfo) Library "USER32.DLL"
函数定义如:
ulong ll_ExtraInfo
char lc_shift, lc_tab
lc_shift=char(16)
lc_tab=char(9)
keybd_event(lc_shift, char(0), 0, ll_ExtraInfo)
keybd_event(lc_tab, char(0), 0, ll_ExtraInfo)
keybd_event(lc_tab, char(0), 2, ll_ExtraInfo)