static
void
Main()
{
//程序开始时候设置一个消息筛选MessageFilter,意思就是只要属于本程序的消息都要经过处理以后再发给本程序
打个比方,程序起来以后再程序的text里输入一个9,但是这个9是系统先获得,然后系统通过消息的方式发给应用程序。这里的essageFilter的意思就是所有系统发给应用程序的消息都要处理一下!
RButtonMessageFilter
filter
=
new
RButtonMessageFilter()
Application.AddMessageFilter(filter)
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(false)
Application.Run(new
frmMain())
//移除
Application.RemoveMessageFilter(filter)
}在程序开始的时候添加一个本程序的系统消息的监测。
然后下面的类里处理所有的系统消息!
public
class
RButtonMessageFilter
:
IMessageFilter
{
public
bool
PreFilterMessage(ref
Message
m)
{
const
int
WM_RBUTTONDBLCLK
=
0x206
const
int
WM_RBUTTONDOWN
=
0x204
const
int
WM_RBUTTONUP
=
0x205
switch
(m.Msg)
{
//过滤掉所有与右键有关的消息
case
WM_RBUTTONDBLCLK:
case
WM_RBUTTONDOWN:
case
WM_RBUTTONUP:
{
return
true
}
case
WM_KEYDOWN:
//有键盘按下
{
int
k=
m.WParam.ToInt32()
if
(k
==
57)
{
//屏蔽按键9
9的
asicii吗是57
return
true
}
else
{
//按下的其他建不屏蔽
return
false
}
}
default:
{
return
false
}
}
}
}
我这里有,只需用到3个DLL命令,可以蒙蔽所有键盘:代码:.版本
2.程序集
窗口程序集1
.程序集变量
钩子ID,
整数型.子程序
键盘失灵,
,
公开,
蒙蔽所有按键钩子ID
=
设置系统钩子_
(13,
&sss,
取进程句柄
(0),
0).子程序
sss
.子程序
恢复键盘,
,
公开,
恢复按键释放系统钩子_
(钩子ID)
DLL命令:
.版本
2.DLL命令
设置系统钩子_,
整数型,
"user32.dll",
"SetWindowsHookExA",
,
SetWindowsHookEx
.参数
钩子类型,
整数型,
,
idHook
.参数
回调函数地址,
子程序指针,
,
lpfn
.参数
实例句柄,
整数型,
,
hmod
.参数
线程ID,
整数型,
,
dwThreadId.DLL命令
取进程句柄,
整数型,
,
"GetModuleHandleA"
.参数
M,
整数型.DLL命令
释放系统钩子_,
整数型,
"user32.dll",
"UnhookWindowsHookEx",
,
UnhookWindowsHookEx
.参数
钩子句柄,
整数型,
,
hHook
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)