社区
Windows SDK/API
帖子详情
如何屏蔽系统热键的问题!
tianlei521
2003-07-08 09:09:21
在程序中如何屏蔽掉系统的热键?分不够再加!
...全文
99
5
打赏
收藏
如何屏蔽系统热键的问题!
在程序中如何屏蔽掉系统的热键?分不够再加!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
痞子酷
2003-07-08
打赏
举报
回复
win9x:
SystemParametersInfo(SPI_SCREENSAVERRUNNING,true,NULL,0);//屏蔽
SystemParametersInfo(SPI_SCREENSAVERRUNNING,false,NULL,0);//恢復
win2k,winxp,win2003:
你自己编写吧,很麻烦。
tianlei521
2003-07-08
打赏
举报
回复
不行啊,是不是在不同的操作系统下不一样用啊!
编译失败
2003-07-08
打赏
举报
回复
SystemParametersInfo(SPI_SCREENSAVERRUNNING,true,NULL,0);//屏蔽
SystemParametersInfo(SPI_SCREENSAVERRUNNING,false,NULL,0);//恢復
jishiping
2003-07-08
打赏
举报
回复
你向屏蔽哪些热键?有些可以屏蔽,有些不可以屏蔽(比如Ctrl+Alt+Del,需要用到一些
非常特殊的方法,以前CSDN上有好几个这样的帖子)。对于一般的系统热键,可以通过低级
键盘钩子(系统钩子)来实现。代码需要做在一个DLL里面。下面是实现低级键盘钩子的DLL
的源程序。EXE中调用DLL的EnableKBHook(TRUE);就可以了:
//---------------------------------------------------------------------------
#include <windows.h>
//---------------------------------------------------------------------------
HHOOK OldHook=NULL;
HINSTANCE DllHinst;
BOOL CALLBACK EnableKBHook(BOOL);
int WINAPI DllEntryPoint(HINSTANCE hinst, DWORD dwReason, void*)
{
if (dwReason==DLL_PROCESS_ATTACH)
DllHinst = hinst;
else if(dwReason==DLL_PROCESS_DETACH)
EnableKBHook(FALSE);
return 1;
}
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==VK_ESCAPE &&
GetAsyncKeyState(VK_CONTROL)<0)
return 1; //Disable CTRL+ESC
if (pkbhs->vkCode==VK_TAB && pkbhs
->flags&LLKHF_ALTDOWN)
return 1; //Disable ALT+TAB
if (pkbhs->vkCode==VK_ESCAPE &&
pkbhs->flags&LLKHF_ALTDOWN)
return 1; //Disable ALT+ESC
if (pkbhs->vkCode==VK_SNAPSHOT)
return 1; //Disable Print Screen
return CallNextHookEx(OldHook,
code, wParam, lParam);
}
__declspec(dllexport)
BOOL CALLBACK __export EnableKBHook(BOOL Enable)
{
if (Enable) {
if (OldHook == NULL)
OldHook = SetWindowsHookEx(
WH_KEYBOARD_LL, (HOOKPROC
)KeyProc, DllHinst, NULL);
return OldHook ? TRUE : FALSE;
}
else {
if (OldHook==NULL) return TRUE;
if (!UnhookWindowsHookEx(OldHook))
return FALSE;
OldHook = NULL; return TRUE;
}
}
tianlei521
2003-07-08
打赏
举报
回复
我要的就是2K和XP下面的啊!怎么实现啊!
C#
屏蔽
系统
热键
C#
屏蔽
系统
热键
C#
屏蔽
系统
热键
C#
屏蔽
系统
热键
C#
屏蔽
系统
热键
屏蔽
系统
热键
ctrl+alt+delete
钩子类,
屏蔽
系统
热键
,应用
系统
api
屏蔽
系统
功能键,ctrl+Tab, ctrl+alt, ctrl+alt+delete
设置和
屏蔽
系统
热键
设置和
屏蔽
系统
热键
,C#编写的,可以参考一下
VisualC 实效编程 47
屏蔽
系统
热键
和隐藏任务栏
VisualC 实效编程 47
屏蔽
系统
热键
和隐藏任务栏VisualC 实效编程 47
屏蔽
系统
热键
和隐藏任务栏VisualC 实效编程 47
屏蔽
系统
热键
和隐藏任务栏VisualC 实效编程 47
屏蔽
系统
热键
和隐藏任务栏VisualC 实效编程 47
屏蔽
...
c#
屏蔽
系统
热键
namespace _0000000 { public partial class main : Form { public main() { string xx = Environment.CurrentDirectory; InitializeComponent(); ... #region 窗体加载 ...想做
系统
屏蔽
的亲们绝对得实用……
Windows SDK/API
1,221
社区成员
8,136
社区内容
发帖
与我相关
我的任务
Windows SDK/API
C++ Builder Windows SDK/API
复制链接
扫一扫
分享
社区描述
C++ Builder Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章