程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Delphi編寫後台監控軟件

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中運行通過。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved