首页
社区
课程
招聘
[求助]全局键盘钩子实现WarIII 改建功能
发表于: 2009-11-11 11:31 7445

[求助]全局键盘钩子实现WarIII 改建功能

2009-11-11 11:31
7445
RT,功能大体就这样了
我大体说下细节上的东西
SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)KeyboardProc,hins,0);
我用的是更底层的 WH_KEYBOARD_LL 这样可以屏蔽WIN键盘

回调函数是这样的
LRESULT __declspec(dllexport)__stdcall  CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
	if(HC_ACTION==nCode)
	{
		KBDLLHOOKSTRUCT* pStruct = (KBDLLHOOKSTRUCT*)lParam;
		if (pStruct->vkCode == 'A')
		{	
			return TRUE;
		}

	}
	LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );	
	return  RetVal;
}


这样实现的功能是屏蔽了  A 键,那我现在想 实现 按A键的时候 出现B,请问应该如何做?恳请各位大虾不吝赐教~~~

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 2523
活跃值: (520)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
if (pStruct->vkCode == 'A')
    {  
      pStruct->vkCode = 'B';
    }

偷梁换柱~LZ自行测试是否可行
2009-11-11 11:55
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
我已经试过了 不行
我请教我同事,已经解决了
是这样的
		KBDLLHOOKSTRUCT* pStruct = (KBDLLHOOKSTRUCT*)lParam;
		if (pStruct->vkCode == 'A')
		{	
			if (wParam == 256)
			{
				keybd_event('B', MapVirtualKey('B', 0), 0, 0);//键下键                                      
			}

			if (wParam == 257)
			{
				keybd_event('B', MapVirtualKey('B', 0), KEYEVENTF_KEYUP, 0);//放开键。
			}

			return TRUE;
		}


模拟键盘消息,分就给你了吧  呵呵就你一个人回答我的问题
2009-11-11 12:17
0
雪    币: 34
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
keybd_event这个函数可以.
2009-11-11 14:05
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
一般用PostMessage,还不会影响其他程序
2009-11-11 16:09
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
6
回楼上,PostMessage的话  那第一个参数句柄传什么?感觉好像无法定位将要post的窗体句柄,再说了PostMessage只能对有窗体的应用程序管用,个人见解。。。
2009-11-11 16:33
0
雪    币: 371
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hyp
7
建议楼主去找几个现成的改建源码参考参考
2009-11-11 18:33
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
你只是做魔兽改键,不是做其他程序的改键
魔兽是有窗体的
更多功能请参考VS的War3KeyTool.dll
也可以直接拿来用,这个DLL封装的很好
2009-11-11 21:14
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
9
非常感谢~~
2009-11-12 09:43
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
keybd_event才是正解
2010-4-24 02:44
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
好东西~感谢分享~!
2010-8-18 16:24
0
游客
登录 | 注册 方可回帖
返回
//