我想用msghook动态监测某一window上是否出现某些字样,是的话就对window发送如F1,A,B等的键盘指令,请教如何编程?

解决方案 »

  1.   

    发键盘指令用
    SENDKEYS就可以吧
      

  2.   

    SendKeys "{F1}"
    SendKeys "A"
      

  3.   

    把问题描述得再详细一些//动态监测某一window上是否出现某些字样在什么位置?如果是标准控件的话还好办,如果是用api函数画上去的,那麻烦就大了模拟键盘操作可用vb提供的SendKeys,也可用sendmessage发送wm_char消息,或使用keybd_event发送wm_char消息的例子Option Explicit
    Private Const WM_CHAR = &H102
    Private Const VK_RETURN = &HD
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Sub Command1_Click()
        SendMessage Text1.hwnd, WM_CHAR, Asc("a"), ByVal 0&
    End Sub
    使用keybd_event的例子: 
    Const VK_H = 72
    Const VK_E = 69
    Const VK_L = 76
    Const VK_O = 79
    Const KEYEVENTF_EXTENDEDKEY = &H1
    Const KEYEVENTF_KEYUP = &H2
    Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Sub Form_KeyPress(KeyAscii As Integer)
        'Print the key on the form
        Me.Print Chr$(KeyAscii);
    End Sub
    Private Sub Form_Paint()
        'Clear the form
        Me.Cls
        keybd_event VK_H, 0, 0, 0   ' press H
        keybd_event VK_H, 0, KEYEVENTF_KEYUP, 0   ' release H
        keybd_event VK_E, 0, 0, 0  ' press E
        keybd_event VK_E, 0, KEYEVENTF_KEYUP, 0  ' release E
        keybd_event VK_L, 0, 0, 0  ' press L
        keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0  ' release L
        keybd_event VK_L, 0, 0, 0  ' press L
        keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0  ' release L
        keybd_event VK_O, 0, 0, 0  ' press O
        keybd_event VK_O, 0, KEYEVENTF_KEYUP, 0  ' release O
    End Sub
      

  4.   

    请教 rainstormmaster(rainstormmaster) 大侠及其他大侠:
    (1)Const WM_CHAR = &H102
    Const VK_RETURN = &HD
    Const VK_H = 72
    Const VK_E = 69
    Const VK_L = 76
    Const VK_O = 79---分别是什么意思?为什么要这样定义?
    (2)这三句话:
        SendMessage Text1.hwnd, WM_CHAR, Asc("a"), ByVal 0&
        keybd_event VK_H, 0, 0, 0   ' press H
        keybd_event VK_H, 0, KEYEVENTF_KEYUP, 0   ' release H
        --各个参数分别是什么意思?这句话是什么意思?
    请教请教!
      

  5.   

    window是c/s中的client window,文字出现是随机的,估计不是标准控件,我想要用鼠标定坐标和定时copy某位置上是否出现某些字,请教如何编程?
    另外我用msghook,
    WinText = "client"
    Handle = FindWindow(vbNullString, WinText)Msghook1.HwndHook = Handle
    的时候,运行时益出,请教原因,要怎么编?
      

  6.   

    如果可以截取到server发给client的文字信息,就最好了,可以直接分析文字,不用那么麻烦
      

  7.   

    Msghook1.HwndHook = form1.hwnd
    将msghook1绑顶到form1上Handle = FindWindow(vbNullString, WinText)??
    这个应该是空的然后在拦截消息