如题, 我想要在不激活后台程序ss的情况下, 向后台程序发送鼠标或键盘消息.
其效果有些类似某些游戏外挂所做的那样.

解决方案 »

  1.   

    这是我已随手写的外挂中的一小段代码,仅供参考。大话西游的,试试吧!keybd_event(VK_CONTROL,mapvirtualkey(VK_CONTROL,0),0,0);
      keybd_event(65,mapvirtualkey(65,0),0,0);
      keybd_event(65,mapvirtualkey(65,0),keyeventf_keyup,0);
      keybd_event(VK_CONTROL,mapvirtualkey(VK_CONTROL,0),keyeventf_keyup,0);
      getcursorpos(point);
      setcursorpos(ranpoint(80,windowX),ranpoint(80,windowY));
      mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
      mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
      setcursorpos(point.x,point.y);
      

  2.   

    谢谢, 不过我的问题是如何向"后台运行"的程序发送鼠标和键盘消息,并且不能激活它.简单说就是我一边做我自己的事情,比如上网聊天,然后一边在后台玩我的游戏,游戏窗体是被最小化了的,所以用Setcursorpos恐怕不能移动鼠标到正确的位置吧? 同样地keybd_event也只能发送到具有焦点的窗口, 我没有理解错吧?我知道有些外挂是通过分析游戏的通讯协议来设计自动玩的, 但是如果我不这样做, 可不可行呢?
      

  3.   

    这样恐怕不行吧,因为外挂的三种基本形式里面没有呀,呵呵.sendmessage双只能发送键盘操作.如果可以还是自已模拟游戏封包写一下发送封包的东东吧.
      

  4.   

    senmessage(handle, wm_lbuttondown,wparam,lparam)
    看一下sdk
    在wparam和lparam里面有关于鼠标的属性
    如位置等
      

  5.   

    写消息处理过程
    send消息,截获,看是什么消息
    case wparam of 
      VK_up:  ;
      .
      .
    end;
      

  6.   

    handle:=findwindow(nil,'接收消息的窗口标题');
        postmessage(handle,msg,0,0);
      

  7.   

    HOOK, 做一个DLL,里面有HOOK程序
    调API函数
    定义一个过程序函数,名字名HOOKPROC, SetWindowsHookEx(Keyboard, HookProc, wparam, lparam): lresult;