怎样屏蔽掉printscreen键?

Z27149 2004-10-15 09:25:37
要求程序在非激活状态下,也能屏蔽掉printscreen键
谢谢
...全文
180 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinglh 2004-10-28
  • 打赏
  • 举报
回复
好东东~! 收藏!!学习!
真如实观 2004-10-18
  • 打赏
  • 举报
回复
楼上的在NT系统可以,但在win9x该如何呢?
Maconel 2004-10-18
  • 打赏
  • 举报
回复
这段代码贴过至少7、8次了,可给我赚了不少分^_^。

//定义句柄
HHOOK OldHook;// 钩子 句柄

//键盘钩子 封锁 windows 热键
long CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT *pkbhs;

if (code < 0)
{
return CallNextHookEx(OldHook,
code, wParam, lParam);
}

pkbhs = (KBDLLHOOKSTRUCT*) lParam;

if (pkbhs->vkCode==91)//封锁win键
{
return 1;
}

if (pkbhs->vkCode==VK_ESCAPE &&
GetAsyncKeyState(VK_CONTROL)<0)
{
return 1; //封锁 CTRL+ESC
}

if (pkbhs->vkCode==VK_TAB && pkbhs
->flags&LLKHF_ALTDOWN)
{
return 1; //封锁 ALT+TAB
}

if (pkbhs->vkCode==115 && pkbhs
->flags&LLKHF_ALTDOWN)
{
return 1; //封锁 ALT+F4
}

if (pkbhs->vkCode==VK_ESCAPE &&
pkbhs->flags&LLKHF_ALTDOWN)
{
return 1; //封锁 ALT+ESC
}

if (pkbhs->vkCode==VK_SPACE &&
GetAsyncKeyState(VK_CONTROL)<0)
{
return 1; //封锁 CTRL+ ' '
}

return CallNextHookEx(OldHook,
code, wParam, lParam);
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
//注册 钩子
OldHook = SetWindowsHookEx(WH_KEYBOARD_LL,
(HOOKPROC)KeyProc, HInstance, 0);
}

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
// 销毁 钩子
UnhookWindowsHookEx(OldHook);
}

Z27149 2004-10-17
  • 打赏
  • 举报
回复
我是菜鸟啊,教教我吧
Z27149 2004-10-17
  • 打赏
  • 举报
回复
up
ghiewa 2004-10-16
  • 打赏
  • 举报
回复
设置钩子啊 ,在系统处理printscreen按键消息前 先执行你的程序,比如这里直接返回好了(屏蔽掉系统的操作)
Z27149 2004-10-16
  • 打赏
  • 举报
回复
up
xmx0632 2004-10-15
  • 打赏
  • 举报
回复
用全局的hook好像是可以的吧
纯冰糖 2004-10-15
  • 打赏
  • 举报
回复
up,study

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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