当前位置:首页 > 网络编程 > 软件语言 > DELPHI > 编写后台监控软件的技巧

编写后台监控软件的技巧

点击次数:65 次 发布日期:2008-11-09 08:39:18 作者:源代码网
源代码网推荐
广告载入中
后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按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中运行通过。


源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华