当前位置: 首页 > 图文教程 > 开发语言 > Delphi > Delphi编写后台监控软件

Delphi
Delphi在网络数据库中的应用
组件技术在Delphi中的实现(1)
如何在Delphi中操作Excel
巧用Delphi制作溅射屏幕
如何在Delphi中实现ASP编程
用Delphi编写可以断开Internet连接的程序
在DELPHI中利用API实现网格内组件的嵌入
你的大写数字规范吗
用Delphi实现打印功能
Delphi控件,我们也可以(4)
Delphi控件,我们也可以(3)
Delphi控件,我们也可以(2)
Delphi控件,我们也可以(1)
Delphi让你发送Flash电子邮件(2)
Delphi让你发送Flash电子邮件(1)
Delphi实现随时随刻知道自己的IP
从问题到结果 ――EXE2SWF的开发手记
用Delphi 6编程实现自动标注汉语拼音
在窗口标题区添加按钮
Delphi让你发送Flash电子邮件

Delphi编写后台监控软件


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 70 ::
收藏到网摘: n/a

  一、把当前进程变为一个系统服务:

  目的是在任务列表中把程序隐藏起来。调用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中运行通过。