Delphi

本类阅读TOP10

·游戏外挂设计技术探讨①
·如何使用Delphi设计强大的服务器程序
·分布式网络考试系统原型分析及实现
·用DLL方式封装MDI子窗体。
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·url编码与解码工具附代码
·工人线程中关闭窗体的实现
·hdsi2.0 sql注入部分抓包分析语句
·Borland Delphi 2005 下载

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
通过api和键盘钩子彻底屏蔽任务条和开始菜单。

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

在一些碰到过的多媒体软件编制过程中通常需要彻底屏蔽任务条,通常的办法是调用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.




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有