展会信息港展会大全

Delphi编写后台监控软件
来源:互联网   发布日期:2016-01-19 12:49:43   浏览:2269次  

导读:后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按Ctrl+Alt+Del出现的任务列表中也不显示,管理员可以通过热键调出隐藏的运行界面。要作到这些,必须把当前进程变为一个系统服 ...

后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按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; externalKERNEL32.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中运行通过。

赞助本站

人工智能实验室

相关热词: 后台监控 Delphi

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港