VB6: API如何发送键盘事件

来源:互联网 发布:网络大电影投资回报率 编辑:程序博客网 时间:2024/05/17 03:10

Windows的键盘事件被分解成: KeyDown + KeyUp, 按键按顺序分别发送

如: Ctrl + Delete按键事件, 在Windows中响应为

  1. KeyDown + Control
  2. KeyDown + Delete
  3. KeyUp + Delete
  4. KeyUp + Control
下面的示例, 显示了如何向指定窗口发送Ctrl + Del事件

Option ExplicitPublic Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPublic Const WM_KEYUP = &H101Public Const WM_KEYDOWN = &H100Public Const VK_CONTROL = &H11Public Const VK_DELETE = &H2EPublic Sub Main()    Dim hWnd    As Long    hWnd = 1836342          '' 这是我的测试窗口    APISendKeys hWnd, Array(VK_CONTROL, VK_DELETE)End Sub'' 使用API将一个或多个按键消息发送到活动窗口(将按键事件分解成基本元素)Public Sub APISendKeys(ByVal hWnd As Long, ByRef aKeys As Variant)    Dim i       As Long    Dim nUBound As Long    nUBound = SafeUBound(aKeys)    If nUBound < 0 Then Exit Sub    For i = 0 To nUBound        If Not IsNumeric(aKeys(i)) Then Exit Sub        If aKeys(i) < 0 Then Exit Sub    Next 'i    '' 逐元素发送    For i = 0 To nUBound        PostMessage hWnd, WM_KEYDOWN, aKeys(i), 0    Next 'i    For i = nUBound To 0 Step -1        PostMessage hWnd, WM_KEYUP, aKeys(i), 0    Next 'iEnd Sub'' 安全UBoundPublic Function SafeUBound(ByRef aArray As Variant)    On Error GoTo label_error:    SafeUBound = UBound(aArray)    Exit Functionlabel_error:    SafeUBound = -1End Function


原创粉丝点击