我用VC编写了一个游戏外挂想模拟按键按下的动作, 我用了两种方法 1.编写一个全局的HOOK 然后用keybdevent()函数模拟按键按下。2 。枚举找到窗口的句柄(句柄是对的能接受关闭消息)然后想窗口发送WM_KEYDOWN 和WM_CHAR消息。 
可是两种方法都没有成功 ,我想问下到底是哪里出了问题,还有就是用什么方法可以实现模拟按键按下动作。

解决方案 »

  1.   

    什么游戏?
    一般都有反外挂的
    可用WinIO驱动级模拟
      

  2.   

    你的第2种方法是没有问题的,关键你得确认找到了游戏窗口而且它还得能够接收相应的消息才行,可用spy++测试一下,spy++若能接收到的消息,你就能发给它。
    例如:
    ::PostMessage(hwndLogin,WM_MOUSEMOVE,0,MAKELPARAM(26,6));
    Sleep(50);
    ::PostMessage(hwndLogin,WM_LBUTTONDOWN,MK_LBUTTON,MAKELPARAM(26,6));
    Sleep(50);
    ::PostMessage(hwndLogin,WM_LBUTTONUP,0,MAKELPARAM(26,6));
    消息延时不能少的,否则就收不到
      

  3.   

    6楼我想请问下我具体怎么确认 能接受WM_CLOSE 消息算不算找到游戏窗口 ,spy++怎么用能确定是游戏窗口?
      

  4.   

    winio还没听说过 ,不知道怎么运用 你介绍下吧 
      

  5.   

    DDV 低调虚拟http://www.bt-baidu.com这个好用.
      

  6.   

    游戏不同可能性无数种,例如游戏耶可能HOOK了keybdevent()
    方法只有比其更底层
      

  7.   

    keybdevent()
    是在当前屏幕上的操作,而且还要注意键盘按下之后记得抬起
    SendMessage(hWnd,wm_char,0,0);
    这个我之前也试过,行不通  你想直接发送一个按键消息给一个指定窗口?游戏外挂编程不是这做的。 这个只是最简单而且最麻烦的按键精灵我之前弄过游戏外挂,是基于VC内联汇编的。模拟消息。
    我教你怎么做外挂:
    工具:OD调试器   CE调试器   代码注入器  
    先学会用这三个东西,找游戏call   然后用代码注入器 测试
    最后用VC++内联汇编实现代码最好找个游戏更新慢的,我当初就是因为诛仙更新太快了,懒得找了。就实现了几个功能。还有更高级的游戏外挂制作:截获数据包   这个就更难了,我没去试过。