RT,
主要是怎样对鼠标的坐标,移动进行控制。不要转一些没有意义的贴子,网上winio/mouse找过很多,都没有好用的.有demo可以传给我个最好,好用的话马上给分,[email protected]
有这方面的技术资料也可以。
期待高手帮下忙.谢谢

解决方案 »

  1.   

    首先不要骂我其次MS DDK能做这些东西之后正在尝试API实现
      

  2.   

    首先谢谢大家帮忙顶贴你是要做远程鼠标控制还是别的什么
    ________________________________对啊,就是用想用模拟鼠标控制些东西啊,postmessage可以控制些,不过还有些是控制不了的,如XX游戏,卡巴斯基等..
    所以想用WINIO底层模拟控制.但就是一直在网上没找到合理的控制方法,也不知道该查些什么样的书籍,资料等DDK能做这些东西之后正在尝试API实现
    ______________________________DDK不是很懂,而且弄起DDK来好像很麻烦,而且也不知道DDK如何去实现..而且...
    即然WINIO可以模拟键盘及鼠标的控制,我想最好的方法应该还是采用WINIO了,鼠标点击可以实现,只是坐标不知道如何控制,键盘控制没有问题,只是这样..等待高手来帮帮忙吧
      

  3.   

    从一个VB程序里看到的,试了一下,还有点用:
    void CTestKBDlg::MouseMove(int Fun,int x,int y,int z)//参数说明:功能,x,y,z坐标位置
    {
    KBCWait4IBE();
    SetPortVal(100,211,1);
    KBCWait4IBE();
    SetPortVal(96,Fun,1); KBCWait4IBE();
    SetPortVal(100,211,1);
    KBCWait4IBE();
    SetPortVal(96,x,1); KBCWait4IBE();
    SetPortVal(100,211,1);
    KBCWait4IBE();
    SetPortVal(96,y,1); KBCWait4IBE();
    SetPortVal(100,211,1);
    KBCWait4IBE();
    SetPortVal(96,z,1);
    }/*
    MouseMove(9, 0, 0, 0   )//左键按下
    MouseMove(8, 0, 0, 0   )//左键放开
    MouseMove(10, 0, 0, 0  )//右键按下
    MouseMove(8, 0, 0, 0   )//右键放开
    MouseMove(12, 0, 0, 0  )//中键按下
    MouseMove(8, 0, 0, 0   )//中键放开
    MouseMove(8, 0, 5, 0   )//上移5象素
    MouseMove(40, 0,(255 xor 5),0   )//下移5象素
    MouseMove(24,(255 xor 5), 0, 0  )//左移5象素
    MouseMove(8, 5, 0, 0            )//右移5象素
    */
    看我打了这么多字,剩120分都给我算了,嘿嘿
      

  4.   

    呵呵
    给你分不是问题
    问题是你发的这个我在网上早看过了啊
    你说你试了一下?
    OK那么你说的有点用是指什么?
    可以的话你把帮我把上面的代码改成
    void MoveMouseToPos(POINT)这样一个函数,并让他正常工作么?
    能的话,给你120分再给你补80分
    你看成不?
      

  5.   

    如果网上直接找不到,建议LZ还是自己去好好研究MSDN吧
      

  6.   

    这么想不开呀移动用API点击用WINIO
      

  7.   

    这段WINIO的代码,怎么在我的WINXP上面运行的时候鼠标不能定位,
    气死人了,每次都会在屏幕上移动, 期待高人能点拨下,好让我们这些菜菜们早日找到明灯
      

  8.   

    form
    Dim I As Integer
    Private Sub Command1_Click()
    Command2.Enabled = True
    Timer1.Interval = Text5.Text
    Command1.Enabled = False
    End SubPrivate Sub Command2_Click()
    Command1.Enabled = TrueCommand2.Enabled = FalseTimer1.Interval = 0
    End SubPrivate Sub Form_Load()
     If InitializeWinIo = False Then
      '痰InitializeWinIo?鑒?潼???埼,???????true,?橙??false
        MsgBox "failed"
        Unload Me
     End If
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    ShutdownWinIo '?埼?監珂??痰ShutdownWinIo?鑒菌潼???埼
     End
    End SubPrivate Sub Timer1_Timer()
    Dim k
    For k = 1 To CInt(Text6.Text)
    MyMouseKey Text1.Text, Text2.Text, Text3.Text, Text4.TextMyMouseKey 8, Text2.Text, Text3.Text, Text4.Text
    Next
    I = I + 1
    Label1.Caption = I
    If I = 2000 Then
    Command2_Click
    End If
    End SubbasDeclare Function MapPhysToLin Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysSize As Long, ByRef PhysMemHandle) As Long
    Declare Function UnmapPhysicalMemory Lib "WinIo.dll" (ByVal PhysMemHandle, ByVal LinAddr) As Boolean
    Declare Function GetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByRef PhysVal As Long) As Boolean
    Declare Function SetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysVal As Long) As Boolean
    Declare Function GetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByRef PortVal As Long, ByVal bSize As Byte) As Boolean
    Declare Function SetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByVal PortVal As Long, ByVal bSize As Byte) As Boolean
    Declare Function InitializeWinIo Lib "WinIo.dll" () As Boolean
    Declare Function ShutdownWinIo Lib "WinIo.dll" () As Boolean
    Declare Function InstallWinIoDriver Lib "WinIo.dll" (ByVal DriverPath As String, ByVal Mode As Integer) As Boolean
    Declare Function RemoveWinIoDriver Lib "WinIo.dll" () As BooleanDeclare Function MapVirtualKey Lib "User32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As LongPublic Const KBC_KEY_CMD = &H64    '键盘命令端口
    Public Const KBC_KEY_DATA = &H60   '键盘数据端口Public Const KEYEVENTF_KEYUP = &H2
     Sub KBCWait4IBE()   '等待键盘缓冲区为空
      Dim dwVal As Long
      Do
        GetPortVal &H64, dwVal, 1
      Loop While (dwVal And &H2)
    End Sub
    Sub MyKeyDown(ByVal vKeyCoad As Long)  '模拟按下键,vKeyCoad传入按键的虚拟码
      Dim btScancode As Long
      btScancode = MapVirtualKey(vKeyCoad, 0)
      
      KBCWait4IBE   '发送数据前应该先等待键盘缓冲区为空
      SetPortVal KBC_KEY_CMD, &HD2, 1     '发送键盘写入命令  KBCWait4IBE
      SetPortVal KBC_KEY_DATA, btScancode, 1  '写入按键信息,按下键
        End SubSub MyKeyUp(ByVal vKeyCoad As Long)  '模拟释放键,vKeyCoad传入按键的虚拟码
      Dim btScancode As Long
      btScancode = MapVirtualKey(vKeyCoad, 0)
      
      KBCWait4IBE   '等待键盘缓冲区为空
      SetPortVal KBC_KEY_CMD, &HD2, 1  '发送键盘写入命令
      KBCWait4IBE
      SetPortVal KBC_KEY_DATA, (btScancode Or &H80), 1  '写入按键信息,释放键
    End SubSub MyKeyDownEx(ByVal vKeyCoad As Long)   '偌??铟?湮,??vKeyCoad憷?铟?钴???
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)    KBCWait4IBE   '怎逾??????亡
        SetPortVal KBC_KEY_CMD, &HD2, 1     '?彡???忑伽值
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, &HE0, 1  '?忑?铟??颏汜阌
        
        
        KBCWait4IBE   '怎逾??????亡
        SetPortVal KBC_KEY_CMD, &HD2, 1     '?彡???忑伽值
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, btScancode, 1  '?忑湮?汜阌,湮?
        
        
    End Sub
    Sub MyKeyUpEx(ByVal vKeyCoad As Long)   '偌??铟??衙
    Dim btScancode As Long
    btScancode = MapVirtualKey(vKeyCoad, 0)    KBCWait4IBE   '怎逾??????亡
        SetPortVal KBC_KEY_CMD, &HD2, 1     '?彡???忑伽值
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, &HE0, 1  '?忑?铟??颏汜阌
        
        
        KBCWait4IBE   '怎逾??????亡
        SetPortVal KBC_KEY_CMD, &HD2, 1     '?彡???忑伽值
        KBCWait4IBE
        SetPortVal KBC_KEY_DATA, (btScancode Or &H80), 1  '?忑湮?汜阌,?郫?
        
    End Sub'MyKeyDownEx VK_LEFT   '湮瘰郯?
    'Sleep 200             '媾?200酴
    'MyKeyUpEx VK_LEFT     '?郫瘰郯?
    '
    'Sleep 500
    'MyKeyDown VK_SPACE   '湮亡太?,窦腧椹?彡?蟓
    'MyKeyDown VK_SPACE
    'Sleep 200
    'MyKeyUp VK_SPACE     '?郫亡太?
    Sub MyMouseKey(MouseFun As Long, MyMouseX As Long, MyMouseY As Long, MyMouseZ As Long)
    '   左键按下(MouseFun=9)。MyMouseX、MyMouseY、MyMouseZ   为0
    '   右键按下(MouseFun=10)。MyMouseX、MyMouseY、MyMouseZ   为0
    '   中键按下(MouseFun=12)。MyMouseX、MyMouseY、MyMouseZ   为0
    '   任意键放开(MouseFun=8)。MyMouseX、MyMouseY、MyMouseZ   为0
    '   ------------------------------------
    '   鼠标上移(MouseFun=8)。MyMouseY为移动距离,最大为255,最小为1。MyMouseX、MyMouseZ   为0
    '   鼠标下移(MouseFun=40)。MyMouseY为移动距离,最大为1,最小为255。MyMouseX、MyMouseZ   为0
    '   鼠标左移(MouseFun=24)。MyMouseX为移动距离,最大为1,最小为255。MyMouseY、MyMouseZ   为0
    '   鼠标右移(MouseFun=8)。MyMouseX为移动距离,最大为255,最小为1。MyMouseY、MyMouseZ   为0
    '   ------------------------------------
    KBCWait4IBE       '等待缓冲区为空
    SetPortVal 100, 211, 1                 '发送鼠标写入命令
    KBCWait4IBE       '等待缓冲区为空
    SetPortVal 96, MouseFun, 1                 '发送鼠标动作命令
    '-------------------------------------
    KBCWait4IBE       '等待缓冲区为空
    SetPortVal 100, 211, 1                 '发送鼠标写入命令
    KBCWait4IBE       '等待缓冲区为空
    SetPortVal 96, MyMouseX, 1                 '发送鼠标动作命令
    '-------------------------------------
    KBCWait4IBE       '等待缓冲区为空
    SetPortVal 100, 211, 1                 '发送鼠标写入命令
    KBCWait4IBE       '等待缓冲区为空
    SetPortVal 96, MyMouseY, 1                 '发送鼠标动作命令
    '-------------------------------------
    KBCWait4IBE       '等待缓冲区为空
    SetPortVal 100, 211, 1                 '发送鼠标写入命令
    KBCWait4IBE       '等待缓冲区为空
    SetPortVal 96, MyMouseZ, 1                 '发送鼠标动作命令
    End Sub
      

  9.   

    留个mail,我发给你,不过是c++的,不是vb的