隐藏当前进程

图由55

图由55

2016-02-19 17:27

今天图老师小编要向大家分享个隐藏当前进程教程,过程简单易学,相信聪明的你一定能轻松get!

  恢复当前窗口的程序,由于当前进程有可能在全屏模式下运行,所以需要通过指定特定的热键使程序窗口消失,且不出现在任务栏上。下面介绍如何用Delphi实现。主要需要解决两个问题,即隐藏窗口和设定热键。

  一. 隐藏窗口

  通过API函数GETACTIVEWINDOW获取当前窗口;函数ShowWindow(HWND,nCmdShow)的参数nCmdShow取SW_HIDE时将之隐藏,取SW_SHOW时将之显示。例如:showwindow(getactivewindow,sw_hide)。隐藏好窗体后,须记住窗体句柄以便恢复。

  二. 键盘监控

  为了实现键盘监控须用到钩子。

  以下是程序的源文件:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  

---HKHide.pas---unit HKHide;interfaceuses Windows, Messages, sysutils;var hNextHookHide: HHook; HideSaveExit: Pointer; hbefore:longint;function KeyboardHookHandler(iCode: Integer;wParam: WPARAM;     lParam: LPARAM): LRESULT; stdcall; export;function EnableHideHook: BOOL; export;function DisableHideHook: BOOL; export;procedure HideHookExit; far;implementationfunction KeyboardHookHandler(iCode: Integer;wParam: WPARAM;     lParam: LPARAM): LRESULT; stdcall; export;const _KeyPressMask = $80000000;var f:textfile; temp:string;begin Result := 0; If iCode  0 Then begin  Result := CallNextHookEx(hNextHookHide, iCode, wParam, lParam);  Exit; end;// 侦测 Ctrl + Alt + F12 组合键 if ((lParam and _KeyPressMask) = 0) //按下时生效  and (GetKeyState(vk_Control)  0)  and (getkeystate(vk_menu)0) and (wParam = vk_F12) then begin  Result := 1;  //文件不存在则创建  if not fileexists(c:test.txt) then  begin   assignfile(f,c:test.txt);   rewrite(f);   writeln(f,0);   closefile(f);  end  else begin   assignfile(f,c:test.txt);   reset(f);   readln(f,temp);   hbefore:=strtoint(temp);   begin    hbefore:=getactivewindow;    temp:=inttostr(hbefore);    rewrite(f);    writeln(f,temp);    closefile(f);    ShowWindow(hbefore, SW_HIDE);   end   else begin    showwindow(hbefore,sw_show);    rewrite(f);    writeln(f,0);    closefile(f);   end;  end; end;end;function EnableHideHook: BOOL; export;begin Result := False; if hNextHookHide  0 then Exit; // 挂上 WH_KEYBOARD 这型的 HOOK, 同时, 传回值必须保留下 // 来, 免得 HOOK 呼叫链结断掉 hNextHookHide := SetWindowsHookEx(WH_KEYBOARD, KeyboardHookHandler,HInstance,0); Result := hNextHookHide  0;end;function DisableHideHook: BOOL; export;begin if hNextHookHide  0 then begin  Result:=True;  UnhookWindowshookEx(hNextHookHide); // 解除 Keyboard Hook  hNextHookHide:=0; end else  Result:=False;end;procedure HideHookExit;begin // 如果忘了解除 HOOK, 自动代理解除的动作 if hNextHookHide  0 then DisableHideHook; ExitProc := HideSaveExit;end;end.---HKPHide.dpr---library HKPHide;uses HKHide in HKHide.pas;exports EnableHideHook, DisableHideHook;begin hNextHookHide := 0; hbefore:=0; HideSaveExit := ExitProc; ExitProc := @HideHookExit;end.文件制作好后选Build All编译成HKPHide.dll。新建一个工程Project1---Unit1.pas---unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm)  Button1: TButton;  Button2: TButton;  procedure Button1Click(Sender: TObject);  procedure Button2Click(Sender: TObject); private  { Private declarations } public  { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}function EnableHideHook: BOOL; external HKPHide.DLL;function DisableHideHook: BOOL; external HKPHide.DLL;procedure TForm1.Button1Click(Sender: TObject);begin if EnableHideHook then ShowMessage(HotKey Testing...);end;procedure TForm1.Button2Click(Sender: TObject);begin if DisableHideHook then ShowMessage(HotKey Testing..., DONE!!);end;end.

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  运行程序按Button1后启动钩子,这时运行其他程序,按Ctrl+Alt+F12可将之隐藏,再按一下则恢复。以下程序在Delphi 4下通过。

展开更多 50%)
分享

猜你喜欢

隐藏当前进程

编程语言 网络编程
隐藏当前进程

查看当前进程,或死锁进程,并能自动杀掉死进程

SQLServer
查看当前进程,或死锁进程,并能自动杀掉死进程

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

四种方法实现VC枚举系统当前进程

编程语言 网络编程
四种方法实现VC枚举系统当前进程

图钉如何隐藏当前位置?

手机软件 应用软件
图钉如何隐藏当前位置?

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

IE浏览器前进后退键的隐藏功能

浏览器
IE浏览器前进后退键的隐藏功能

在代码隐藏中遍历当前页的所有控件

电脑网络
在代码隐藏中遍历当前页的所有控件

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

浅谈网站收费

浅谈网站收费

修改(破解)MDE(ADE)报表和窗体

修改(破解)MDE(ADE)报表和窗体
下拉加载更多内容 ↓