我一直玩一个网游,游戏中有时候需要不停的点击鼠标刷怪,因此我就用mouse_event来代替我按鼠标,最近游戏更新后,发现游戏中拦截了鼠标消息,再发送WM_LBUTTONDOWN消息已经无效了。搜索了一下,有人说用驱动,有人说用虚拟鼠标,有的说修改mouse_event消息,这个游戏是有NP保护的,我想有没有一种简单的方法,既然他拦截WM_LBUTTONDOWN,我能不能自定义一个消息,内容还是鼠标单击,但是消息不是LBUTTONDOWN呢?另外,我们实际按鼠标左键的时候,不也是发送WM_LBUTTONDOWN消息么?NP是怎么判断我是真的按了鼠标还是发送的模拟消息呢?百思不得其解

解决方案 »

  1.   

    可以在winio上面做手脚,NP就是这么做的,发消息算是很上层的东西了
      

  2.   

    參考這裡:  http://wenku.baidu.com/view/37609cccda38376baf1fae05.html
      

  3.   

    就是用了楼上说的方法,如果不开游戏是好的,游戏一开,因为有NP保护,执行就报错procedure SetByte(Por,Cod : Byte);
    begin
        Sleep(1);
        asm
            PUSH EAX
            PUSH EDX
            //等待状态寄存器标志位OBF置0
            @Loop:
      IN  AL,$64//这里报错privileged instruction
            AND AL,01b
            JNZ @Loop
            //写入数据
            MOV AL,Cod
            MOV DL,Por
            MOV DH,0
            OUT DX,AL        POP EDX
            POP EAX
        end;
    end;上面红色报错,privileged instruction
      

  4.   

    特权指令要内核态才能用,Ring0级别
      

  5.   

    建议你用winio导出
    http://www.delphitop.com/html/yingjian/152.html