利用Dephi5編寫控制台程式

來源:互聯網
上載者:User

利用Dephi5編寫控制台程式

www.applevb.com

    在Windows中提供了一個控制台視窗,一個控制台視窗就象Windows的控制中心。
在視窗中有諸如 “系統”、“多媒體”表徵圖,通過雙擊這些不同的表徵圖,就可以開啟不
同的控制台程式查看系統狀況和對系統進行設定了。
    如何在控制台中添加自己的控制台程式呢?首先來瞭解以下控制台程式的原
理。一個控制台程式就是一個動態串連庫(DLL)。在庫檔案中必須建立一個名稱為
CPLApplet的輸出回呼函數,在函數中加入對Windows調用的響應代碼,編輯成動態串連
庫檔案。庫檔案將庫檔案的副檔名改為CPL,然後將檔案拷貝到 Windows/System子目錄
下,系統在啟動時會自動搜尋副檔名為Cpl的檔案。搜尋到檔案之後,系統會裝入檔案
並調用CPLApplet函數,這時函數中的代碼就開始工作,執行彈出系統設定視窗等操作。
    是不是很複雜,你必須對於系統調用DLL的工作原理和回呼函數有比較深刻的瞭解
才能編寫控制台程式,而且必須無法在編程軟體的整合視窗中調試,而必須先編譯
好以後拷貝到 Windows/System 目錄下觀察運行效果,然後再對來源程式除錯,再編譯。
    幸好在Delphi5中提供了方便建立控制台程式的方式。在Delphi5的菜單中選
File | New ,在New Items視窗中會看到有一個 Control Panel Application 選項,
點擊這個選項,然後再按OK鍵,就可以建立一個基本的控制台程式。在這個程式的
工程檔案包中包含兩個檔案,一個是工程檔案 Project1.dpr。按Ctrl+F12開啟
View Units視窗開啟Project1,可以看到代碼的第一行是library Project1; ,另外
在代碼中還有一行:exports CPlApplet; ,這說明程式已經自動建立了輸出回呼函數。
另一個檔案是控制台程式控制檔案(姑且這麼稱呼它)Unit1.pas。這個程式碼
中建立了一個TAppletModule類,這個類就是控制台程式控制類。同時程式還會建立
一個調試、控制視窗AppletModule1。在視窗左邊的列表框中有一項 AppletModule1,
右鍵點擊該項,在快顯功能表中選Install Control Panel Applet項編譯並安裝控制台
程式。如果安裝成功,再右鍵點擊AppletModule1,在快顯功能表中選Launch Control
Panel運行控制台。怎麼樣?在控制台中是不是增加了一個 AppletModule1項?
    當然,現在這個程式還很簡單,沒有漂亮的表徵圖,雙擊它也沒有反應,在下面我就要
介紹對這個程式的擴充。
    首先要讓它響應滑鼠的雙擊。首先按Shift+F12鍵,在View Form視窗中選擇AppletModule1
開啟調試、控制視窗。在視窗左邊的Object Inspector中點擊Events頁面,在Events列表
中的第一項就是OnActive事件,你也許猜到了,對,這個事件就是控制台程式被啟用
(也就是你雙擊控制台中的程式表徵圖時發生的事件)時產生的事件。
    下面來編寫代碼響應事件。在Delphi菜單中選 File | New,在New Items視窗中選
Form項添加一個新的視窗。將檔案儲存為Unit2.pas,然後在Unit1.pas中添加
Uses Unit2; (該句要添加在implementation後面),在Events列表中雙擊OnActive
事件,在事件中添加如下代碼:
procedure TAppletModule1.AppletModuleActivate(Sender: TObject;
  Data: Integer);
begin
  with TForm2.Create(Application) do begin
    if ShowModal = mrOK then
    Free;
  end;
end;
最後記住將Project1中的Application.CreateForm(TForm2, Form2); 行給刪除掉。
    接下來設定程式表徵圖,點擊AppletModule1的Object Inspector視窗,點擊Properties
頁面,選AppletIcon項,就可以為控制台程式添加表徵圖了。改變Caption項的值就可以為
程式設定不同的標題。
    表徵圖和程式標題設定好以後,再重複上面的Install Control Panel Applet編譯並
安裝程式,然後再選Launch Control Panel運行。雙擊建立立的程式表徵圖,看看,建立
一個控制台程式就是這麼簡單!
    當然,這隻是一個最簡單的控制台程式,它只是響應OnActive事件並彈出一個視窗,
在OnActive事件中的Data是一個比較重要的參數,它是控制台程式調用程式傳遞給程式
的參數,利用這個參數可以對不同的調用彈出不同的視窗,例如你要建立一個時間/日期
調整控製程序,你可以做以下代碼:
procedure TAppletModule1.AppletModuleActivate(Sender: TObject;
  Data: Integer);
begin
  with TForm2.Create(Application) do begin file://以下是虛擬碼:
    Case Data of
 1:DoChangeTime;  file://顯示改變系統時間視窗
 2:DoChangeDate;  file://顯示改變系統日期視窗
    end;
  end;
end;
    這樣當外部程式以不同的參數調用程式時,程式能彈出不同的視窗,例如 RunDll32 app.cpl 1
就將彈出改變系統時間視窗。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.