如何单单屏蔽 Ctrl-ESC 键 ?

xiaohuilau 2000-05-31 11:55:00
我想请教各位,到底如何单单屏蔽 Ctrl-ESC 键 ?或其它Windows98快捷键(除 Alt-Tab、Ctrl-Alt-Del外)?
...全文
1587 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
h_lj 2001-06-01
  • 打赏
  • 举报
回复
只能用钩子解决
xiaohuilau 2001-06-01
  • 打赏
  • 举报
回复
难道难道了这么多人???
xiaohuilau 2001-05-30
  • 打赏
  • 举报
回复
我要的是单单屏蔽 CTRL+ESC。
BlueTrees 2001-03-28
  • 打赏
  • 举报
回复
装一个系统的钩子,截获键盘输入,然后修改键值,装系统钩子,使用API函数SetSystemHook或者是SetSystemHookEx,参考MSDN,又一个技巧,钩子函数按照标准说明要放在DLL中,但是对于键盘钩子,可以放在当前的EXE中,不过要导出钩子函数,方法和DLL中一样,应当注意的是,钩子函数不能直接使用程序中的变量等等,通讯要使用MappingFile,记住钩子是在IE的进程空间中运行的,使用MappingFile要注意同步,否则等着windows崩溃吧!
还可以设置系统热键,CTRL+ESC,但不要在传递了,这样就屏蔽了。
试试吧,很麻烦的罗
xiaohuilau 2001-03-28
  • 打赏
  • 举报
回复
屏蔽任务栏的“开始”按钮我已做到了,只是做不到屏蔽CTRL+ESC 及 键盘上的“开始”按钮
xiaohuilau 2001-03-27
  • 打赏
  • 举报
回复
屏蔽任务栏的“开始”按钮我已做到了,只是做不到屏蔽CTRL+ESC 及 键盘上的“开始”按钮
Kingron 2001-03-26
  • 打赏
  • 举报
回复
用API禁止开始菜单的按钮就可以了,屏蔽Ctrl+Esc是很难的。屏蔽开始菜单却是很容易的。
xiaohuilau 2001-03-26
  • 打赏
  • 举报
回复
我要的是如何禁止“开始”菜单的弹出!

Thank you!
halfone 2000-06-07
  • 打赏
  • 举报
回复
在什么地方COPY的我不记得了。改为DELPHI应该不难吧!
halfone 2000-06-07
  • 打赏
  • 举报
回复
在程序中禁止Alt-Tab

完成这一功能的最简单方法是使用RegisterHotKey函数。在调用该函数后你的进程回在ALT-TAB按下时比系统先得到通知。 你需要处理的消息是WM_HOTKEY,下面是相关代码讲解。

RegisterHotKey函数原型及说明:
BOOL RegisterHotKey(
HWND hWnd, // window to receive hot-key notification
int id, // identifier of hot key
UINT fsModifiers, // key-modifier flags
UINT vk // virtual-key code);
参数 id为你自己定义的一个ID值,对一个线程来讲其值必需在0x0000 - 0xBFFF范围之内,对DLL来讲其值必需在0xC000 - 0xFFFF 范围之内,在同一进程内该值必须唯一
参数 fsModifiers指明与热键联合使用按键,可取值为:MOD_ALT MOD_CONTROL MOD_WIN MOD_SHIFT
参数 vk指明热键的虚拟键码

// 初始化
CMainFrame::CMainFrame()
{
m_nHotKeyID = 100;

BOOL m_isKeyRegistered = RegisterHotKey(GetSafeHwnd(), m_nHotKeyID,
MOD_ALT, VK_TAB);

ASSERT(m_isKeyRegistered != FALSE);
}

//取消
CMainFrame::~CMainFrame()
{
BOOL m_iskeyUnregistered = UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID);
ASSERT(m_isKeyUnregistered != FALSE);
}

WM_HOTKEY消息含义:
idHotKey = (int) wParam; // identifier of hot key
fuModifiers = (UINT) LOWORD(lParam); // key-modifier flags
uVirtKey = (UINT) HIWORD(lParam); // virtual-key code
这三个值分别和调用RegisterHotKey时的id,fsModifiers,vk对应。
最后你需要在文件中定义ON_MESSAGE消息映射。
在头文件中:
class CMainFrame : public XXXX
{
afx_msg LONG OnHotKey(WPARAM wP,LPARAM lP);
}
在CPP文件中MESSAGE_MAP处添加:
ON_MESSAGE(WM_HOTKEY,OnHotKey)
Un1 2000-06-07
  • 打赏
  • 举报
回复
屏蔽系统按键的问题回答过好多次了,你还是到历史问题中找找吧!
xiaohuilau 2000-06-07
  • 打赏
  • 举报
回复
回复 fyje:照你的方法是不行的。因为只能当此程序被击活时才能截获。
fyje 2000-06-01
  • 打赏
  • 举报
回复
首先设置form的keypreview:=true;然后在keydown,keypress中就可以截获按了什么键,执行什么操作了.

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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