通过api和键盘钩子彻底屏蔽任务栏和开始菜
2013-03-07 16:58
435 查看
通过api和键盘钩子彻底屏蔽任务栏和开始菜
大学城栏目:居民空间消息快播|空间栏目:Θ Delphi
收藏到我的学习空间
收藏到我的课堂魔方
全屏
发表时间:2011-12-12 16:40:17
浏览:97
评论:0
在一些碰到过的多媒体软件编制过程中通常需要彻底屏蔽任务条,通常的办法是调用ShowWindow(h,SW_hide)来隐藏任务条,但是不能屏蔽开始菜单,通过键盘的win功能键还是可以打开开始菜单,所以配合键盘钩子,来屏蔽开始菜单。
library
HIDE;
{ Important note about DLL memory management: ShareMem must be
the
first unit in your library\'s USES clause AND your project\'s
(select
Project-View Source) USES clause if your DLL exports any procedures
or
functions that pass strings as parameters or function results.
This
applies to all strings passed to and from your DLL--even those
that
are nested in records and classes. ShareMem is the interface unit
to
the BORLNDMM.DLL shared memory manager, which must be deployed
along
with your DLL. To avoid using BORLNDMM.DLL, pass string
information
using PChar or ShortString parameters.
}
uses
SysUtils,
Classes,
windows,
messages;
var
hHk
:HHOOK;
type
PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;
KBDLLHOOKSTRUCT
= record
vkCode: DWORD;
ScanCode: DWORD;
Flags: DWORD;
Time:
DWORD;
dwExtraInfo: DWORD;
end;
{$R *.res}
function ycxsks(
yc:Boolean): Boolean;stdcall;
//隐藏-显示任务条
var
h:THandle;
begin
if yc = True
then
begin
h:=FindWindow(\'Shell_TrayWnd\',nil);
ShowWindow(h,SW_hide);
//隐藏任务条
end
else
begin
h:=FindWindow(\'Shell_TrayWnd\',nil);
ShowWindow(h,SW_SHOW);
//显示任务条
end;
Result:=true;
end;
function keyHookProc(nCode:
Integer;WParam: WPARAM;LParam: LPARAM):
LRESULT;stdcall;
//调用键盘钩子,屏蔽左右win功能键
var
p:
PKBDLLHOOKSTRUCT;
y: integer;
begin
if nCode<0
then
Result:=
CallNextHookEx(hHk,nCode,WParam,LParam)
else
begin
y :=
0;
case WParam of
WM_KEYDOWN,WM_SYSKEYDOWN:
//按键后判断所按键
begin
p:=PKBDLLHOOKSTRUCT(Lparam);
if p^.vkCode =
VK_LWIN then
y := 1;
if p^.vkCode = VK_RWIN then
y :=
1;
end;
WM_KEYUP,WM_SYSKEYUP:
//松开按键后判断所按键
begin
p:=PKBDLLHOOKSTRUCT(Lparam);
if p^.vkCode =
VK_LWIN then
y := 1;
if p^.vkCode = VK_RWIN then
y :=
1;
end;
end;
if y=1 then
Result:=1
//如果为WIN功能键则屏蔽
else
Result:= CallNextHookEx(hHk,nCode,WParam,LParam);
//其他键放下一个钩子
end
end;
function Enablehide:Boolean;stdcall;export;
//外部调用
begin
if hHk = 0 then
begin
hHk :=
SetWindowsHookEx(13,@keyHookProc,HInstance,0);
Result :=
True;
end
else
Result :=
False;
ycxsks(true);
end;
function Disablehide:Boolean; stdcall;
export; //外部调用
begin
if hHk <> 0
then
begin
UnHookWindowsHookEx(hHk);
hHk := 0;
Result :=
True;
end
else
Result :=
False;
ycxsks(False);
end;
exports
Enablehide,
Disablehide;
end
除非注明,本站文章均为原创,
相关文章推荐
- Delphi中通过API和键盘钩子彻底屏蔽任务栏和开始菜单
- Delphi中通过API和键盘钩子彻底屏蔽任务栏和开始菜单
- 通过API和键盘钩子彻底屏蔽任务条和开始菜单
- 通过api和键盘钩子彻底屏蔽任务条和开始菜单。
- C#钩子实现简单鼠标键盘的监控和屏蔽
- c# 钩子屏蔽键盘快捷键
- 通过对系统分派表的直接还原,防御内核本地API钩子(翻译) 分享
- C# HOOK钩子屏蔽键盘代码
- 如何屏蔽windows mobile手机按键 pda手机键盘钩子/HOOK
- 利用底层键盘钩子屏蔽任意按键
- 低级键盘钩子屏蔽Win键、Alt+Tab键的响应
- 通过对系统分派表的直接还原,防御内核本地API钩子(翻译)
- //以下代码在Delphi7 + XP SP3下测试通过 //button1为注册钩子屏蔽,button2为卸载钩子取消屏蔽F1 unit Unit1; interface uses Windo
- 一个很简短的屏蔽(不是卸载)低级键盘钩子的程序及解释
- 低级键盘钩子屏蔽Win键、Alt+Tab键的响应
- C#通过托管调用Win32 api获取键盘状态
- C#屏蔽ComboBox系统右键菜单介绍(通过API拦截消息)
- [Winform]通过钩子监控键盘操作和鼠标移动
- C#用鼠标钩子屏蔽任务栏右键弹出菜单
- c# 钩子屏蔽键盘快捷键