键盘钩子 为何我的钩子钩不到windows键?

freesky918 2007-12-04 09:54:11
我搞了个全局钩子,
本来只想钩掉windows键的,但是却发现钩不到。

于是就直接在KeyboardProc下用return 1返回,打算钩掉所有按键。
但却发现其它键都不能用了,而windows键还能用。
怎么这个windows键就钩不住呢?
大家帮帮忙!
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
passionhip 2007-12-06
  • 打赏
  • 举报
回复
帮顶,等结果。。
freesky918 2007-12-06
  • 打赏
  • 举报
回复
谢了,问题解决了。
以后打魔兽就不怕按到windows键呵呵。
注:
在xp下用WH_KEYBOARD_LL钩子,
需要加以下几句:

#define WH_KEYBOARD_LL 13 //缺少这句会提示WH_KEYBOARD_LL没定义

typedef struct tagKBDLLHOOKSTRUCT { //缺少此结构体的定义,会提示KBDLLHOOKSTRUCT没定义。
//此结构体是从winuser.h里面拷过来的
DWORD vkCode;
DWORD scanCode;
DWORD flags;
DWORD time;
DWORD dwExtraInfo;
} KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;


结贴。谢谢大家。
freesky918 2007-12-06
  • 打赏
  • 举报
回复
那位兄弟帮帮忙?

自己顶顶。

csdn越来越冷清了,唉
tiger波波 2007-12-06
  • 打赏
  • 举报
回复
网上搜的,看看有没用


因为系统键在调用WH_KEYBOARD钩子之前就已经被处理了,你在WH_KEYBOARD钩子中无法处理。在Windows 9x下要禁用系统键可以参考QA000295 "如何封锁“CTRL+ALT+DEL”和“ALT+ESC”组合键"、QA000171 "如何封锁ALT-TAB、ALT-CTRL-DEL键以及不让Windows的任务栏出现"。
在Windows NT 4.0 SP3以后的版本可以使用WH_KEYBOARD_LL钩子。

某人的的意见:
建议用日志钩子,他在系统处理前处理。
an_bachelor 2007-12-05
  • 打赏
  • 举报
回复
Ctrl+Alt+Del這個組和鍵不能用鈎子來屏蔽
freesky918 2007-12-05
  • 打赏
  • 举报
回复
谢谢。
不过我只想屏蔽windows键,
就是ctrl和alt之间的那个键,按下后弹出开始菜单的那个。
三:程序的设计: I:设置 设置是通过SetWindowsHookEx ()的API函数. 原形: HHOOK SetWindowsHookEx(int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId) idhook:装入的类型. lpfn: 进程的入口地址 hMod: 应用程序的事件句柄 dwThreadId: 装入的线程标示 参数: idHook: 这个参数可以是以下值: WH_CALLWNDPROC、WH_CALLWNDPROCRET、WH_CBT、WH_DEBUG、WH_FOREGROUNDIDLE、WH_GETMESSAGE、WH_JOURNALPLAYBACK、WH_JOURNALRECORD、WH_KEYBOARD、 WH_KEYBOARD_LL、WH_MOUSE、WH_MOUSE_LL、WH_MSGFILTER、WH_SHELL、WH_SYSMSGFILTER。 对于这些参数,我不想一一加以解释,因为MSDN中有关于他们的详细注解。我只挑选其中的几个加以中文说明。 WH_KEYBOARD:一旦有敲打消息(的按下、的弹起),在这个消息被放在应用程序的消息队列前,WINDOWS将会调用你的函数。函数可以 改变和丢弃敲打消息。 WH_MOUSE:每个鼠标消息在被放在应用程序的消息队列前,WINDOWS将会调用你的函数。函数可以改变和丢弃鼠标消息。 WH_GETMESSAGE:每次当你的应用程序调用一个GetMessage()或者一个PeekMessage()为了去从应用程序的消息队列中要求一个消息时,WINDOWS都会调用你的函数。 而函数可以改变和丢弃这个消息。 II:释放 的释放使用的是UnhookWindowsHookEx()函数 原形:BOOL UnhookWindowsHookEx( HHOOK hhk ) UnhookWindowsHookEx()函数将释放的是链中函数SetWindowsHookEx所装入的进程。 hhk: 将要释放的进程的句柄。 III:进程 进程使用函数HookProc;其实HookProc仅仅只是应用程序定义的符号。比如你可以写成KeyBoardHook.但是参数是不变的。Win32 API提供了诸如:CallWndProc、 GetMsgProc、DebugProc、CBTProc、MouseProc、KeyboardProc、MessageProc等函数,对于他们的详细讲解,可以看MSDN我在此只讲解一下KeyBoardHook的含义。 原形:LRESULT CALLBACK KeyBoardHook (int nCode, WPARAM wParam, LPARAM lParam) 说明:进程是一些依附在一个上的一些函数,因此进程只被WINDOWS调用而不被应用程序调用,他们有时就需要作为一个回调函数(CALLBACK)。 参数说明: nCode:代码,进程使用代码去决定是否执行。而代码的值是依靠的种类来定的。每种种类都有他们自己一系列特性的代码。比如对于WH_KEYBOARD, 代码的参数有:HC_ACTION,HC_NOREMOVE。HC_ACTION的意义:参数wParam 和lParam 包含了敲打消息的信息,HC_NOREMOVE的意义:参数wParam 和lParam包含了 敲打消息的信息,并且,敲打消息一直没有从消息队列中删除。(应用程序调用PeekMessage函数,并且设置PM_NOREMOVE标志)。也就是说当nCode等于HC_ACTION时, 进程必须处理消息。而为HC_NOREMOVE时,进程必须传递消息给CallNextHookEx函数,而不能做进一步的处理,而且必须有CallNextHookEx函数的返回值。 wParam:敲打所产生的消息,的虚拟代码。 lParam:包含了消息细节。 注意:如果进程中nCode小于零,进程必须返回(return) CallNextHookEx(nCode,wParam,lParam);而进程中的nCode大于零,但是进程并不处理消息, 作者推荐你调用CallNextHookEx并且返回该函数的返回值。否则,如果另一个应用程序也装入WH_KEYBOARD ,那么该将不接受通知并且返回一个不正确的值。 如果进程处理了消息,它可能返回一个非零值去阻止系统传递该信息到其它剩下的或者windows进程。所以最好在进程的最后都返回CallNextHookEx的返回
KeyDefender是新一代输入保护软件,它不再使用原输入通道进行数据传输,而是为用户开辟了专用的加密输入通道,当用户通过输入数据时,KeyDefender对输入信息加密后通过该通道传输至目标程序,同时,还不停的释放干扰值,使各种记录软件无法获得任何有意义的信息。它能为各种软件提供输入保护,让您的任何输入比银行提供的网银保护更安全。 四大技术特性 1.内核级防护 KeyDefender不像其他输入保护软件只在应用层提供安全防护,KeyDefende提供的所有保护全在Windows内核中完成,让您的输入享受无语伦比的安全。 2.全方位保护 KeyDefender通过独立的安全输入通道、值加密、虚拟值干扰、防恶意输入等多种创新技术为您的输入提拱从应用层到内核层的全方位安全保护,能轻松阻断通过、低级、GetKeyState、GetAsyncKeyState、GetKeyboardState、DirectX、GetRawInput、过滤驱动等各种技术实现记录的盗号软件。 3.超强的适用性 KeyDefender具有超强的适用性,它能为QQ、QQ游戏、IE浏览器、火狐浏览器、360浏览器、微博、博客、支付宝、PayPal、Word、Excel、阿里旺旺、云存储(如:网盘、云笔记)等各种浏览器、聊天软件、游戏、办公软件、云存储、账户登录、网上支付系统等提供防盗号、反记录保护。当您在公共场所或其他可能存在安全隐患的场合(如:网吧、办公场所等)进行输入时,您所使用的计算机可能已被安装了各种病毒、木马、盗号软件等,不用担心,只要您在输入敏感信息前开启KeyDefender保护,将不会有任何病毒、木马、盗号软件能盗走您的输入信息。 4.难以置信的易用性 KeyDefender的使用相当容易,只需鼠标左单击一下或按下一热,即可开启所有保护,不需要用户再进行任何的判断,所有工作都将由KeyDefender替您完成,而且您可以随意开启、停止、退出KeyDefender,它的一切完全由您撑控。 您再不用为不停的判断是否放行某操作而头痛,也不用因为软件无法退出而烦恼。 系统要求 支持的操作系统有(32bit)Win7、Windows XP、WindowsServer 2003。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧