看流星社区

 找回密码
 注册账号
查看: 2886|回复: 3

[VB] 按键HOOK的问题

[复制链接]

该用户从未签到

发表于 2011-4-7 07:34:54 | 显示全部楼层 |阅读模式
我用VC写了个监测键盘按键状态的HOOK,在VB里调用实现系统热键功能,但是用VB编译后在游戏里使用就出现有点卡的现象,这是为什么啊?

该用户从未签到

发表于 2011-4-7 07:35:07 | 显示全部楼层
奇怪,既然能用VC,为什么要转回VB呢,VB对底层支持不太理想。

该用户从未签到

发表于 2011-4-7 07:35:26 | 显示全部楼层
我自己直接用vb写的也没出现过卡的现象
估计你hook程序没有写好

该用户从未签到

发表于 2011-4-7 07:35:37 | 显示全部楼层
以下是我keybhook.DLL中的keybhook.CPP中的代码,编译后成keybhook.DLL在VB中调用就卡,为什么哦?

#include <windows.h>
#include <windowsx.h>
#include <tchar.h>

#include "keybhook.h"

HINSTANCE g_hinstDll = NULL;

#pragma data_seg(".drectve")
static char szLinkDirectiveShared[] = "-section:Shared,rws";
#pragma data_seg()
#pragma data_seg("Shared")

HHOOK g_hhook      = NULL;
HWND  g_hwndPost  = NULL;
UINT  g_uMsgNotify = WM_USER;

#pragma data_seg()

static LRESULT WINAPI KeyboardHook_HookProc (int nCode,WPARAM wParam, LPARAM lParam)  
{

  LRESULT lResult = CallNextHookEx(g_hhook, nCode, wParam, lParam);

  if (nCode == HC_ACTION)  
  {
      PostMessage(g_hwndPost, g_uMsgNotify, wParam, lParam);
  }
  return(lResult);
}

BOOL WINAPI SetKeyboardHook (HWND hWndPost, UINT Msg)  
{
  HHOOK hhook;

  if (g_hhook != NULL) return(FALSE);

  g_hwndPost  = hWndPost;
  g_uMsgNotify = Msg;
  Sleep(0);

  hhook = SetWindowsHookEx(WH_KEYBOARD, KeyboardHook_HookProc, g_hinstDll, 0);
  InterlockedExchange((PLONG) &g_hhook, (LONG) hhook);
  return(g_hhook != NULL);
}

BOOL WINAPI ReleaseKeyboardHook()  
{
  BOOL fOK = TRUE;

  if (g_hhook != NULL)  
  {
      fOK = UnhookWindowsHookEx(g_hhook);
      g_hhook = NULL;
  }
  return(fOK);
}

BOOL WINAPI DllMain (HINSTANCE hinstDll, DWORD fdwReason, LPVOID lpvReserved)  
{
  switch (fdwReason)  
  {
      case DLL_PROCESS_ATTACH:
        g_hinstDll = hinstDll;
        break;
  }
  return(TRUE);
}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-23 16:54

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表