后臺(tái)監(jiān)控軟件,為了達(dá)到隱蔽監(jiān)控的目的,應(yīng)該滿足正常運(yùn)行時(shí),不顯示在任務(wù)欄上,在按Ctrl+Alt+Del出現(xiàn)的任務(wù)列表中也不顯示,管理員可以通過(guò)熱鍵調(diào)出隱藏的運(yùn)行界面。要作到這些,必須把當(dāng)前進(jìn)程變?yōu)橐粋€(gè)系統(tǒng)服務(wù),并且定義全局熱鍵。
一、把當(dāng)前進(jìn)程變?yōu)橐粋€(gè)系統(tǒng)服務(wù):
目的是在任務(wù)列表中把程序隱藏起來(lái)。調(diào)用API函數(shù)ReGISterServiceProcess實(shí)現(xiàn)。
二、定義全局熱鍵(本例中定義熱鍵Ctrl+Del+R),步驟:
1、定義捕獲Windows消息WM_HOTKEY的鉤子函數(shù),即:procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
2、向Windows加入一個(gè)全局原子 Myhotkey: GlobalAddAtom(’MyHotkey’), 并保留其句柄。
3、向Windows登記熱鍵:調(diào)用API函數(shù)RegisterHotKey實(shí)現(xiàn)。
三、源程序:
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
{熱鍵標(biāo)識(shí)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;
一、把當(dāng)前進(jìn)程變?yōu)橐粋€(gè)系統(tǒng)服務(wù):
目的是在任務(wù)列表中把程序隱藏起來(lái)。調(diào)用API函數(shù)ReGISterServiceProcess實(shí)現(xiàn)。
二、定義全局熱鍵(本例中定義熱鍵Ctrl+Del+R),步驟:
1、定義捕獲Windows消息WM_HOTKEY的鉤子函數(shù),即:procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
2、向Windows加入一個(gè)全局原子 Myhotkey: GlobalAddAtom(’MyHotkey’), 并保留其句柄。
3、向Windows登記熱鍵:調(diào)用API函數(shù)RegisterHotKey實(shí)現(xiàn)。
三、源程序:
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
{熱鍵標(biāo)識(shí)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;

