mouse_event VB声明 
Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) 
说明 
模拟一次鼠标事件 
参数表 
参数 类型及说明 
dwFlags Long,下述标志的一个组合 
MOUSEEVENTF_ABSOLUTE dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元 
MOUSEEVENTF_MOVE 移动鼠标 
MOUSEEVENTF_LEFTDOWN 模拟鼠标左键按下 
MOUSEEVENTF_LEFTUP 模拟鼠标左键抬起 
MOUSEEVENTF_RIGHTDOWN 模拟鼠标右键按下 
MOUSEEVENTF_RIGHTUP 模拟鼠标右键按下 
MOUSEEVENTF_MIDDLEDOWN 模拟鼠标中键按下 
MOUSEEVENTF_MIDDLEUP 模拟鼠标中键按下 
dx Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相对运动 
dy Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直方向的绝对位置或相对运动 
cButtons Long,未使用 
dwExtraInfo Long,通常未用的一个值。用GetMessageExtraInfo函数可取得这个值。可用的值取决于特定的驱动程序 
注解 
进行相对运动的时候,由SystemParametersInfo函数规定的系统鼠标轨迹速度会应用于鼠标运行的速度
 

解决方案 »

  1.   

    发送键盘按下消息太不方便、稳定
    我早就不用了
    设置记事本的文本:
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const WM_PASTE = &H302
    Private Const WM_SETTEXT = &HCPrivate Sub Command1_Click()
        Dim TemphWnd As Long
        
        TemphWnd = FindWindow("Notepad", vbNullString)
        TemphWnd = FindWindowEx(TemphWnd, 0, "Edit", vbNullString)
        If TemphWnd Then
            ''-- 将Text1中的文本粘贴到记事本
            'VB.Clipboard.SetText Text1.Text
            'SendMessage TemphWnd, WM_PASTE, 0, ByVal 0&
            
            '把记事本的内容设置为Text1中的文本
            SendMessage TemphWnd, WM_SETTEXT, 0, ByVal CStr(Text1.Text)
            
        End If
        
    End Sub
      

  2.   

    ..能不能给简单点的.比如
    直接输入这样的代码即执行鼠标移到330,320的位置
    mov=330,320
    执行下一个操作
    mlup=点击左键
    mrup=点击右键
    顺便问个小问题~怎么我老是截取不了全屏的坐标的色彩?
    不是为的时候是截全屏的吗??
    Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As LongPrivate Sub Command1_Click()
        c = GetPixel(0{<----为0截取不了全屏!!},tx.Text, ty.Text)
        Label1.Caption = "当前点颜色值为:" & Format(c)
    End Sub
      

  3.   

    Private Sub Command1_Click()
        Dim TemphDC
        TemphDC=GetDC(0)
        c = GetPixel(TemphDC,tx.Text, ty.Text)
        ReleaseDC 0, TemphDC
        Label1.Caption = "当前点颜色值为:" & Format(c)
    End Sub
      

  4.   

    玩游戏啊.那游戏左上角有魔法图标的.通过截色来判断当前那种魔法用过没有.
    如果没有用过移动鼠标到一定位置再进行一个操作就可以完成自动加魔法的过程,即自动挂机了.
    而魔法不止一种的啊.我那账号现在就有五种魔法需要练的.需要根据屏幕色彩的不同进行不种不同的操作.
    如果全部都用
    MOUSEEVENTF_MOVE 330,320
    ...好像很长吧?直接缩成mov=330,320多方便对不?呵呵~~~
    而且有个掉鱼的...需要截色后判断数字的值进行加法计算,然后结果再进行文本输入...所以..
    需要用到这些这些.希望能用简短些的变量搞定嘛?
      

  5.   

    to:zyl910(910:分儿,我来了!) 
    再帮我简化一下呀