Call keybd_event(82, 0, 0, 0) '模拟按下"R"键
 还要模拟弹起r键

解决方案 »

  1.   

    Public Function 取色(ByVal x As Long, ByVal y As Long, ByRef r As Boolean) As Long
        Dim Ia As Long, lDc As Long    Ia = FindWindow(vbNullString, "冒险岛")
        If Ia <> 0 Then
            lDc = GetWindowDC(Ia)                              '取得桌面窗口的设备场景
            取色 = GetPixel(lDc, x, y)
            ReleaseDC Ia, lDc
            r = True
        End IfEnd FunctionPrivate Sub Timer1_Timer()
        Dim 色 As Long, r As Long, g As Long, b As Long, r As Boolean
        色 = 取色(222, 588, r)
        If r Then
            If 色 = RGB(255, 255, 255) Then                     '这个颜色我是随便写的
                Call keybd_event(82, 0, 0, 0)                  '模拟按下"R"键
            Else
                Call keybd_event(83, 0, 0, 0)                  '模拟按下"S"键
            End If
        End If
    End Sub
      

  2.   

    Private Sub Timer1_Timer()
        Dim 色 As Long, r As Long, g As Long, b As Long, x As Boolean
        色 = 取色(222, 588, x)
        If x Then
            If 色 = RGB(255, 255, 255) Then                     '这个颜色我是随便写的
                Call keybd_event(82, 0, 0, 0)                  '模拟按下"R"键
            Else
                Call keybd_event(83, 0, 0, 0)                  '模拟按下"S"键
            End If
        End If
    End Sub
      

  3.   

    Private Sub Timer1_Timer()
        Dim 色 As Long, r As Long, g As Long, b As Long, r As Boolean
        色 = 取色(222, 588, r)
        If r Then
            If 色 = RGB(255, 255, 255) Then                     '这个颜色我是随便写的
                Call keybd_event(82, 0, 0, 0)                  '模拟按下"R"键
            Else
                Call keybd_event(83, 0, 0, 0)                  '模拟按下"S"键
            End If
        End If
    End Sub
    这段里面有2个r定义!!! r As Long去掉
      

  4.   

    你现在发了2个timer1的事件,那个才是正确的?
      

  5.   

    '这个是正确的
    Private Sub Timer1_Timer()
        Dim 色 As Long, r As Long, g As Long, b As Long, x As Boolean
        色 = 取色(222, 588, x)
        If x Then
            If 色 = RGB(255, 255, 255) Then                     '这个颜色我是随便写的
                Call keybd_event(82, 0, 0, 0)                  '模拟按下"R"键
            Else
                Call keybd_event(83, 0, 0, 0)                  '模拟按下"S"键
            End If
        End If
    End Sub
      

  6.   

    //就算这个游戏没有打开,也一直按"R"键判断一下即可:Private Sub Timer1_Timer()
        Dim 色 As Long, r As Long, g As Long, b As Long    
        Dim Ia As Long, lDc As Long,取色 as long
        Ia = FindWindow(vbNullString, "冒险岛")
        if Ia<>0 then
            lDc = GetWindowDC(Ia) '取得桌面窗口的设备场景
            取色 = GetPixel(lDc, x, y)
            ReleaseDC Ia, lDc
            色 = 取色
            If 色 = RGB(255, 255, 255) Then'这个颜色我是随便写的
                Call keybd_event(82, 0, 0, 0) '模拟按下"R"键
                Call keybd_event(82, 0, 2, 0) '模拟释放"R"键
            Else
                Call keybd_event(83, 0, 0, 0) '模拟按下"S"键
                Call keybd_event(83, 0, 2, 0) '模拟释放"S"键
            End If
        end if
    End Sub
      

  7.   

    现在我详细的说一下状况吧.
    现在是实现了没有开游戏不会模拟按键,出的情况是游戏有开,但是一直疯狂乱按
    以下是相关信息
    游戏的窗口名称"冒险岛"
    NP[蓝]的坐标是(168,74)
    颜色值是RGB(137,170,229)
    ------------------------------
    还有刚才都没有说到转换RGB值的事,我这里补上
    颜色转换
        r = 色 Mod 256
        g = (色 \ 256) Mod 256
        b = 色 \ 256 \ 256
    ----------------------------------------------
    请高手回答我一下.到底是那里出错了,一直搞不明白
      

  8.   

    //颜色一直判断错误.郁闷这个颜色和你肉眼看到的可能有差异,可以用其他工具取出颜色试试也可能是HDC的问题,将程序中的GetWindowDC用GetDC代替试试也能是坐标错误还可能是要获取颜色的区域被其它控件所遮挡
      

  9.   

    看看高手newdraw写的代码,也是个mxd外挂http://spaces.msn.com/newdraw/