分享
 
 
 

關於 SENDKEYS 的 代碼

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

關於 SENDKEYS 的 代碼

關於 SENDKEYS 的 代碼 sendkeys 的用法(MSDN): SendKeys 语句 将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。语法SendKeys string[, wait]SendKeys 语句的语法具有以下几个命名参数:部分 描述 string 必需的。字符串表达式,指定要发送的按键消息。 Wait 可选的。指定等待方式的 BooleandefBooleanDataType@veendf98.chm 值。如果为 False(缺省值),则控件在按键发送出去之后立刻返回到过程。如果为 True,则按键消息必须在控件返回到过程之前加以处理。 说明每个按键由一个或多个字符表示。为了指定单一键盘字符,必须按字符本身的键。例如,为了表示字母 A,可以用 "A" 作为 string。为了表示多个字符,就必须在字符后面直接加上另一个字符。例如,要表示 A、B 及 C,可用 "ABC" 作为 string。对 SendKeys 来说,加号 (+)、插入符 (^)、百分比符号 (%)、上划线 (~) 及圆括号 ( ) 都具有特殊意义。为了指定上述任何一个字符,要将它放在大括号 ({}) 当中。例如,要指定正号,可用 {+} 表示。方括号 ([ ]) 对 SendKeys 来说并不具有特殊意义,但必须将它们放在大括号中。在其它应用程序中,方括号有特殊意义,在出现动态数据交换 (DDE) 的时候,它可能具有重要意义。为了指定大括号字符,请使用 {{} 及 {}}。为了在按下按键时指定那些不显示的字符,例如 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 中运行。Sendkeys 也无法将 PRINT SCREEN 按键 {PRTSC} 发送到任何应用程序。我們如果想發送鍵盤命令,可以用 SENDKEYS ,但要发送 WINDOWS 微标键怎么做?(MSDN中没有给出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 VK_LWIN = &H5B 'Left Windows key (Microsoft Natural keyboard)Private Const VK_RWIN = &H5C 'Right Windows key (Natural keyboard) Private Sub Command1_Click() 'left windows keybd_event VK_LWIN, 0, &H1, 0 keybd_event VK_LWIN, 0, &H2, 0 End SubPrivate Sub Command2_Click() 'right windowskeybd_event VK_RWIN, 0, &H1, 0keybd_event VK_RWIN, 0, &H2, 0End Sub详细的解释可参看SENDKEYS 类(http://www.vbaccelerator.com/home/VB/Tips/SendKeys_using_the_API/SendKeys_Demonstration_zip_cSendKeys_cls.asp):vbAccelerator - Contents of code file: cSendKeys.clsVERSION 1.0 CLASSBEGIN MultiUse = -1 'TrueENDAttribute VB_Name = "cSendKeys"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = TrueAttribute VB_PredeclaredId = FalseAttribute VB_Exposed = FalseOption ExplicitPublic 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 keyEnd EnumPrivate m_colKeyMap As New CollectionPrivate 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_EXTENDEDKEY = &H1Private Const KEYEVENTF_KEYUP = &H2Private Declare Function GetVersion Lib "kernel32" () As LongPrivate Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanA" ( _ ByVal cChar As Byte) As IntegerPrivate Declare Function VkKeyScanW Lib "user32" ( _ ByVal cChar As Integer) As IntegerPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _ lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)Private Function nextChar(ByRef sString As String, ByVal iPos As Long, Optional ByVal lLen As Long = 0) As String If (lLen = 0) Then lLen = Len(sString) If (iPos + 1 0) Then sChar = colBrace(colBrace.Count) ' send key up Select Case sChar Case "+" KeyUp vbKeyShift Case "~" KeyUp vbKeyControl Case "%" KeyUp vbKeyMenu End Select colBrace.Remove colBrace.Count iPos = iPos + 1 Else ' Invalid sendkeys command: sMsg = "Invalid sendkeys command: unmatched ) at position " & iPos GoTo errorHandler End If Case "{" ' special key If (iPos + 2 iLen) Then sMsg = "Invalid sendkeys command; opening { without content or closing } at position " & iPos GoTo errorHandler Else iNextPos = InStr(iPos + 2, sKeys, "}") If (iNextPos = 0) Then sMsg = "Invalid sendkeys command; opening { without closing } at position " & iPos GoTo errorHandler Else sContent = Mid$(sKeys, iPos + 1, iNextPos - iPos - 1) iPos = iNextPos + 1 ' is this a key/presses pair? iNextPos = InStr(sContent, " ") If (iNextPos 0) Then sKey = Left$(sContent, iNextPos - 1) sCount = Mid$(sContent, iNextPos + 1) If Not (IsNumeric(sCount)) Then sMsg = "Invalid sendkeys command; key repetitions '" & sCount & "' is invalid near position " & iPos lCount = CLng(sCount) End If Else sKey = sContent lCount = 1 End If KeyPress sKey, lCount End If End If Case Else ' send the key as is KeyPress sChar, 1 iPos = iPos + 1 End Select Loop If (colBrace.Count 0) Then sMsg = "Invalid sendkeys command: more open brackets than close brackets." GoTo errorHandler End If Exit Sub errorHandler: If Len(sMsg) = 0 Then sMsg = Err.Description lErr = Err.Number End If ' If we don't clear up the shift/control/alt keys, ' then you might find other apps on the system are hard to ' use. ' Make sure you have Break on Unhandled Errors switched ' on. Do While colBrace.Count 0 sChar = colBrace(colBrace.Count) ' send key up Select Case sChar Case "+" KeyUp vbKeyShift Case "~" KeyUp vbKeyControl Case "%" KeyUp vbKeyMenu End Select colBrace.Remove colBrace.Count Loop On Error GoTo 0 Err.Raise lErr, App.EXEName & ".cSendKeys", sMsg Exit SubEnd SubPublic Sub KeyPress(ByVal sKey As String, Optional ByVal lCount = 1)Dim vKey As KeyCodeConstantsDim l As Long On Error Resume Next vKey = m_colKeyMap(sKey) On Error GoTo 0 If (vKey = 0) Then ' translate string into v key code vKey = KeyCode(sKey) End If If (vKey 0) Then For l = 1 To lCount KeyDown vKey KeyUp vKey Next l Else Err.Raise 9, , "Key " & sKey & " could not be interpreted." End If End SubPublic Sub KeyDown(ByVal vKey As KeyCodeConstants) keybd_event vKey, 0, KEYEVENTF_EXTENDEDKEY, 0End SubPublic Sub KeyUp(ByVal vKey As KeyCodeConstants) keybd_event vKey, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0End SubPublic Function KeyCode(ByVal sChar As String) As KeyCodeConstantsDim bNt As BooleanDim iKeyCode As IntegerDim b() As ByteDim iKey As IntegerDim vKey As KeyCodeConstantsDim iShift As ShiftConstants ' Determine if we have Unicode support or not: bNt = ((GetVersion() And &H80000000) = 0) ' Get the keyboard scan code for the character: If (bNt) Then b = sChar CopyMemory iKey, b(0), 2 iKeyCode = VkKeyScanW(iKey) Else b = StrConv(sChar, vbFromUnicode) iKeyCode = VkKeyScan(b(0)) End If KeyCode = (iKeyCode And &HFF&)End FunctionPrivate Sub Class_Initialize() m_colKeyMap.Add vbKeyBack, "BACKSPACE" m_colKeyMap.Add vbKeyBack, "BS" m_colKeyMap.Add vbKeyBack, "BKSP" m_colKeyMap.Add vbKeyPause, "BREAK" m_colKeyMap.Add vbKeyCapital, "CAPSLOCK" m_colKeyMap.Add vbKeyDelete, "DELETE" m_colKeyMap.Add vbKeyDelete, "DEL" m_colKeyMap.Add vbKeyDown, "DOWN" m_colKeyMap.Add vbKeyEnd, "END" m_colKeyMap.Add vbKeyReturn, "ENTER" m_colKeyMap.Add vbKeyReturn, "~" m_colKeyMap.Add vbKeyEscape, "ESC" m_colKeyMap.Add vbKeyHelp, "HELP" m_colKeyMap.Add vbKeyHome, "HOME" m_colKeyMap.Add vbKeyInsert, "INS" m_colKeyMap.Add vbKeyInsert, "INSERT" m_colKeyMap.Add vbKeyLeft, "LEFT" m_colKeyMap.Add vbKeyNumlock, "NUMLOCK" m_colKeyMap.Add vbKeyPageDown, "PGDN" m_colKeyMap.Add vbKeyPageUp, "PGUP" m_colKeyMap.Add vbKeyPrint, "PRTSC" m_colKeyMap.Add vbKeyRight, "RIGHT" m_colKeyMap.Add vbKeyScrollLock, "SCROLLLOCK" m_colKeyMap.Add vbKeyTab, "TAB" m_colKeyMap.Add vbKeyUp, "UP" m_colKeyMap.Add vbKeyF1, "F1" m_colKeyMap.Add vbKeyF2, "F2" m_colKeyMap.Add vbKeyF3, "F3" m_colKeyMap.Add vbKeyF4, "F4" m_colKeyMap.Add vbKeyF5, "F5" m_colKeyMap.Add vbKeyF6, "F6" m_colKeyMap.Add vbKeyF7, "F7" m_colKeyMap.Add vbKeyF8, "F8" m_colKeyMap.Add vbKeyF9, "F9" m_colKeyMap.Add vbKeyF10, "F10" m_colKeyMap.Add vbKeyF11, "F11" m_colKeyMap.Add vbKeyF12, "F12" m_colKeyMap.Add vbKeyF13, "F13" m_colKeyMap.Add vbKeyF14, "F14" m_colKeyMap.Add vbKeyF15, "F15" m_colKeyMap.Add vbKeyF16, "F16"End Sub

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有