首页
社区
课程
招聘
[求助]vs对战平台屏蔽键盘钩子如何开启
发表于: 2013-6-4 10:37 5231

[求助]vs对战平台屏蔽键盘钩子如何开启

2013-6-4 10:37
5231
求教啊,我写了个辅助工具,用键盘钩子开启,但vs屏蔽了,我是按下home的时候开启功能,但vs里不行 了,我想知道怎么屏蔽键盘钩子,然后我再怎么开启啊,SetWindowsHookEx还是运行的,就是按下home键后没有反应。谢谢!!

我试了鼠标中键也是不好用啊!

[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1839
活跃值: (310)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
2
原因:vs优先获取了键盘消息,并处理了。

解决办法:用鼠标中键钩子。

安装钩子:
function InstallHook(nkey: DWord): Boolean; stdcall;
begin
  Result := False;
  if nKey <> 0 then exit;
  if ghNextHookMouse = 0 then
    ghNextHookMouse := SetWindowsHookEx(WH_MOUSE, @MouseHook, HInstance, 0);
  Result := true;
end;

钩子处理函数:
function MouseHook(nCode: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  Result := 0;
  if nCode < 0 then
  begin
    Result := CallNextHookEx(ghNextHookMouse, nCode, wParam, lParam);
    exit;
  end;
  if wParam = 520 then   //520就是鼠标中键消息
  begin
    if (GetModuleHandle(pcClientProcessName) > 0) then
    begin
      if not bHook then
      begin
        //UpdateAddr();
        InsetCode() ;
        frmHook := TfrmHook.Create(Application);
        frmHook.Show ;
        bHook := True ;
      end
      else
        frmHook.Visible := true ;
    end;
  end ;
end ;
2013-6-4 13:02
0
雪    币: 171
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那vs是怎么提前获取键盘消息的呢?
2013-6-4 14:34
0
雪    币: 1839
活跃值: (310)
能力值: ( LV9,RANK:370 )
在线值:
发帖
回帖
粉丝
4
你按Home启动你的辅助,当你按下Home的时候,你的辅助还没有启动,
这个时候消息是传递给了VS,VS有用到home这个键,所以优先处理了。

处理之后的消息,就不会再调用  CallNextHookEx(ghNextHookKey, nCode, wParam, lParam);
也就是不会再往下传递了。

所以你改成鼠标中键,肯定没问题。我已经测试过了。
2013-6-5 09:11
0
雪    币: 171
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
这是我的代码
LRESULT CALLBACK MouseProc(
                                                          int code,       // hook code
                                                          WPARAM wParam,  // virtual-key code
                                                          LPARAM lParam   // keystroke-message information
                                                          )
{

        if(wParam==WM_MBUTTONUP)//VK_HOME
        {
               

        MyVirtual();
        mywar();
        //MyGetLocalPlayerGai();
        MessageBox(NULL,NULL,"开始",MB_OK);
                }
        return CallNextHookEx(hHook,code,wParam,lParam);
}
void _stdcall setHook()
{
        enableDebugPriv();
        HWND h1=::FindWindow(NULL,"Warcraft III");
        if (h1==NULL)
        {
                MessageBox(NULL,"没有找到游戏!","提示",MB_OK);
                exit(0);
        }
        DWORD pid=0;
        DWORD tid=0;

        tid=::GetWindowThreadProcessId(h1,&pid);
hHook=SetWindowsHookEx(WH_MOUSE,MouseProc,::GetModuleHandle("war3MHDll.dll"),tid);
}
单机测试没有问题,进vs就没有反应,已经改为鼠标中键了啊!
求指教啊
2013-6-5 13:55
0
游客
登录 | 注册 方可回帖
返回