Delphi编写后台监控软件 |
后盾监控软件,为了达到 隐秘监控的 目标,应该满足 畸形运行时,不显示在 使命栏上,在按Ctrl+Alt+Del浮现的 使命列表中也不显示,治理员 可以通过热键调出 潜藏的运行界面 。要作到这些,必须把目前 历程变为一个系统服务,而且定义全局热键 。 一、把目前 历程变为一个系统服务: 目标是在 使命列表中把程序 潜藏起来 。调用API函数RegisterServiceProcess实现 。 二、定义全局热键(本例中定义热键Ctrl+Del+R),步骤: 1、定义 拿获Windows 信息WM_HOTKEY的钩子函数,即:procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY; 2、向Windows加入一个全局原子 Myhotkey: GlobalAddAtom(’MyHotkey’), 并保留其句柄 。 3、向Windows 注销热键:调用API函数RegisterHotKey实现 。 三、源程序: unit Unit1; interface uses Windows, Messages, Forms, Dialogs, Classes, Controls, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private {热键标识ID} id: Integer; procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY; { Privat-Declarations} public { Public-Declarations} end; var Form1 : TForm1; implementation const RSP_SIMPLE_SERVICE=1; function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; stdcall; external ’KERNEL32.DLL’; {$R *.DFM} { 拿获热键 信息} procedure TForm1.WMHotKey (var Msg : TWMHotKey); begin if msg.HotKey = id then ShowMessage(’Ctrl+Alt+R键被按下!’); form1.Visible :=true; end; procedure TForm1.FormCreate(Sender: TObject); Const {ALT、CTRL和R键的 虚构键值} MOD_ALT = 1; MOD_CONTROL = 2; VK_R = 82; begin {首先推断程序是不是已经运行} if GlobalFindAtom(’MyHotkey’) = 0 then begin {注册全局热键Ctrl + Alt + R} id:=GlobalAddAtom(’MyHotkey’); RegisterHotKey(handle,id,MOD_CONTROL+MOD_Alt,VK_R); end else halt; end; {把目前 历程变为一个系统服务,从而在 使命列表中把程序 潜藏起来} procedure TForm1.Button1Click(Sender: TObject); begin RegisterServiceProcess(GetCurrentProcessID,RSP_SIMPLE_SERVICE); form1.Hide; end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; {退出时 开释全局热键} procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin UnRegisterHotKey(handle,id); GlobalDeleteAtom(id); end;
end. 四、 注明: 在 后盾监控软件中 使用以上 性能,可真正实现 隐秘运行,热键调出,便于治理员进行治理 。程序在Win98,Delphi5.0中运行通过 。 |