为了在按下按键时指定那些不显示的字符,例如 ENTER 或 TAB 以及那些表示动作而非字符的按键,请使用下列代码:
按键
代码
BACKSPACE
{BACKSPACE}, {BS}, 或 {BKSP}
BREAK
{BREAK}
CAPS LOCK
{CAPSLOCK}
DEL or DELETE
{DELETE} 或 {DEL}
DOWN ARROW
{DOWN}
END
{END}
ENTER
{ENTER}或 ~
ESC
{ESC}
HELP
{HELP}
HOME
{HOME}
INS or INSERT
{INSERT} 或 {INS}
LEFT ARROW
{LEFT}
NUM LOCK
{NUMLOCK}
PAGE DOWN
{PGDN}
PAGE UP
{PGUP}
PRINT SCREEN
{PRTSC}
RIGHT ARROW
{RIGHT}
SCROLL LOCK
{SCROLLLOCK}
TAB
{TAB}
UP ARROW
{UP}
F1
{F1}
F2
{F2}
F3
{F3}
F4
{F4}
F5
{F5}
F6
{F6}
F7
{F7}
F8
{F8}
F9
{F9}
F10
{F10}
F11
{F11}
F12
{F12}
F13
{F13}
F14
{F14}
F15
{F15}
F16
{F16}
为了指定那些与 SHIFT、CTRL 及 ALT 等按键结合的组合键,可在这些按键码的前面放置一个或多个代码,这些代码列举如下:
按键
代码
SHIFT
+
CTRL
^
ALT
%
为了说明在按下其它按键时应同时按下 SHIFT、CTRL、及 ALT 的任意组合键,请把那些按键的码放在括号当中。例如,为了说明按下 E 与 C 的时候同时按下 SHIFT 键,请使用 "+(EC)"。为了说明在按下 E 的时候同时按下 SHIFT 键,但接着按 C 而不按 SHIFT,则使用 "+EC"。
为了指定重复键,使用 {key number} 的形式。必须在 key 与 number 之间放置一个空格。例如,{LEFT 42} 意指 42 次按下 LEFT ARROW 键;{h 10} 则是指 10 次按下 H 键。
注意 不能用 SendKeys 将按键消息发送到这样一个应用程序,这个应用程序并没有被设计成在 Microsoft Windows or Macintosh中运行。Sendkeys 也无法将 PRINT SCREEN 按键 {PRTSC} 发送到任何应用程序。
我们如果想发送键命令,可以用 SENDKEYS ,但要发送 WINDOWS 微标键怎么做?(MSDN中没有给出WINDOWS键 的键码) 下面是可以执行的代码:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk AsByte, ByVal bScan AsByte, ByVal dwFlags AsLong, ByVal dwExtraInfo AsLong) PrivateConst VK_LWIN =&H5B 'Left Windows key (Microsoft Natural keyboard) PrivateConst VK_RWIN =&H5C 'Right Windows key (Natural keyboard) PrivateSub Command1_Click() 'left windows keybd_event VK_LWIN, 0, &H1, 0 keybd_event VK_LWIN, 0, &H2, 0 End Sub PrivateSub Command2_Click() 'right windows keybd_event VK_RWIN, 0, &H1, 0 keybd_event VK_RWIN, 0, &H2, 0 End Sub
vbAccelerator - Contents of code file: cSendKeys.clsVERSION 1.0 CLASS BEGIN MultiUse =-1'True END Attribute VB_Name ="cSendKeys" Attribute VB_GlobalNameSpace =False Attribute VB_Creatable =True Attribute VB_PredeclaredId =False Attribute VB_Exposed =False OptionExplicit Public Enum MoreKeyConstants VK_LWIN =&H5B 'Left Windows key (Microsoft Natural keyboard) VK_RWIN =&H5C 'Right Windows key (Natural keyboard) VK_APPS =&H5D 'Applications key (Natural keyboard) VK_SLEEP =&H5F 'Computer Sleep key VK_RMENU =&HA5 ' Right MENU key VK_BROWSER_BACK =&HA6 'Windows 2000/XP: Browser Back key VK_BROWSER_FORWARD =&HA7 'Windows 2000/XP: Browser Forward key VK_BROWSER_REFRESH =&HA8 'Windows 2000/XP: Browser Refresh key VK_BROWSER_STOP =&HA9 'Windows 2000/XP: Browser Stop key VK_BROWSER_SEARCH =&HAA 'Windows 2000/XP: Browser Search key VK_BROWSER_FAVORITES =&HAB 'Windows 2000/XP: Browser Favorites key VK_BROWSER_HOME =&HAC 'Windows 2000/XP: Browser Start and Home key VK_VOLUME_MUTE =&HAD 'Windows 2000/XP: Volume Mute key VK_VOLUME_DOWN =&HAE 'Windows 2000/XP: Volume Down key VK_VOLUME_UP =&HAF 'Windows 2000/XP: Volume Up key VK_MEDIA_NEXT_TRACK =&HB0 'Windows 2000/XP: Next Track key VK_MEDIA_PREV_TRACK =&HB1 'Windows 2000/XP: Previous Track key VK_MEDIA_STOP =&HB2 'Windows 2000/XP: Stop Media key VK_MEDIA_PLAY_PAUSE =&HB3 'Windows 2000/XP: Play/Pause Media key VK_LAUNCH_MAIL =&HB4 'Windows 2000/XP: Start Mail key VK_LAUNCH_MEDIA_SELECT =&HB5 'Windows 2000/XP: Select Media key VK_LAUNCH_APP1 =&HB6 'Windows 2000/XP: Start Application 1 key VK_LAUNCH_APP2 =&HB7 'Windows 2000/XP: Start Application 2 key VK_OEM_1 =&HBA 'Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the ';:' key VK_OEM_PLUS =&HBB 'Windows 2000/XP: For any country/region, the '+' key VK_OEM_COMMA =&HBC 'Windows 2000/XP: For any country/region, the ',' key VK_OEM_MINUS =&HBD 'Windows 2000/XP: For any country/region, the '-' key VK_OEM_PERIOD =&HBE 'Windows 2000/XP: For any country/region, the '.' key VK_OEM_2 =&HBF 'Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '/?' key VK_OEM_3 =&HC0 'Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '`~' key ' C1D7 Reserved ' D8DA Unassigned VK_OEM_4 =&HDB 'Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '[{' key VK_OEM_5 =&HDC 'Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the '|' key VK_OEM_6 =&HDD 'Used for miscellaneous characters; it can vary by keyboard Windows 2000/XP: For the US standard keyboard, the ']}' key VK_OEM_7 =&HDE ' Used for miscellaneous characters; it can vary by keyboard. Windows 2000/XP: For the US standard keyboard, the 'single-quote/double-quote' key VK_OEM_8 =&HDF 'Used for miscellaneous characters; it can vary by keyboard. E0 Reserved '- E1 OEM specific VK_OEM_102 =&HE2 'Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard ' E3E4 OEM specific VK_PROCESSKEY =&HE5 'Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key ' E6 OEM specific VK_PACKET =&HE7 'Windows 2000/XP: Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP ' E8 Unassigned ' E9F5 OEM specific VK_ATTN =&HF6 'Attn key VK_CRSEL =&HF7 'CrSel key VK_EXSEL =&HF8 'ExSel key VK_EREOF =&HF9 'Erase EOF key VK_PLAY =&HFA 'Play key VK_ZOOM =&HFB 'Zoom key VK_NONAME =&HFC 'Reserved for future use VK_PA1 =&HFD 'PA1 key VK_OEM_CLEAR =&HFE 'Clear key End Enum Private m_colKeyMap AsNew Collection Private Declare Sub keybd_event Lib "user32" ( _ ByVal bVk AsByte, ByVal bScan AsByte, _ ByVal dwFlags AsLong, ByVal dwExtraInfo AsLong) PrivateConst KEYEVENTF_EXTENDEDKEY =&H1 PrivateConst KEYEVENTF_KEYUP =&H2 Private Declare Function GetVersion Lib "kernel32" () AsLong Private Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanA" ( _ ByVal cChar AsByte) AsInteger Private Declare Function VkKeyScanW Lib "user32" ( _ ByVal cChar AsInteger) AsInteger Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _ lpvDest As Any, lpvSource As Any, ByVal cbCopy AsLong) PrivateFunction nextChar(ByRef sString AsString, ByVal iPos AsLong, Optional ByVal lLen AsLong=0) AsString If (lLen =0) Then lLen =Len(sString) If (iPos +1<= lLen) Then