用钩子函数屏蔽掉所有的按键消息和鼠标消息会怎么样
答案:3 悬赏:0 手机版
解决时间 2021-02-18 22:36
- 提问者网友:遁入空寂
- 2021-02-18 14:03
用钩子函数屏蔽掉所有的按键消息和鼠标消息会怎么样
最佳答案
- 五星知识达人网友:三千妖杀
- 2021-02-18 15:23
大部分的鼠标键盘消息全都不会响应了。不过ctrl+alt+del键是特殊的,系统保留,所以你还可以调出任务管理器好像。我之前实验过一次,不过貌似那次按什么都没有了,直接强制关机解决的。呵呵···
关机代码可以这样:
void SetHookMouse( HWND hwnd )
{
g_hMouseDll = ::SetWindowsHookEx( WH_MOUSE,MouseProcDll,::GetModuleHandle("Hook") , 0 ) ;
}
void SetKeybroadDll( HWND hwnd )
{
g_hwnd = hwnd ;
g_hKeybroadDll = ::SetWindowsHookEx( WH_KEYBOARD,KeybroadProcDll,::GetModuleHandle("Hook") , 0 ) ;
}
关机代码可以这样:
void SetHookMouse( HWND hwnd )
{
g_hMouseDll = ::SetWindowsHookEx( WH_MOUSE,MouseProcDll,::GetModuleHandle("Hook") , 0 ) ;
}
void SetKeybroadDll( HWND hwnd )
{
g_hwnd = hwnd ;
g_hKeybroadDll = ::SetWindowsHookEx( WH_KEYBOARD,KeybroadProcDll,::GetModuleHandle("Hook") , 0 ) ;
}
全部回答
- 1楼网友:蓝房子
- 2021-02-18 17:09
[STAThread]
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;
}
}
}
}
另外,虚机团上产品团购,超级便宜
- 2楼网友:一袍清酒付
- 2021-02-18 15:42
类似一种死机的状态……最好不要乱弄,即使你发现能调出任务管理器,你也 会发现你不能对它进行任何操作
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯