利用Dephi5編寫控制皮膚程式 (轉)

worldblog發表於2007-12-04
利用Dephi5編寫控制皮膚程式 (轉)[@more@]

利用Dephi5編寫控制皮膚


  在中提供了一個控制皮膚視窗,一個控制皮膚視窗就象Windows的控制中心。
在視窗中有諸如 “”、“多”圖示,透過雙擊這些不同的圖示,就可以開啟不
同的控制皮膚程式檢視系統狀況和對系統進行設定了。
  如何在控制皮膚中新增自己的控制皮膚程式呢?首先來了解以下控制皮膚程式的原
理。一個控制皮膚程式就是一個動態連線庫(DLL)。在庫中必須建立一個名稱為
CPLApplet的輸出回撥,在函式中加入對Windows的響應程式碼,編輯成動態連線
庫檔案。庫檔案將庫檔案的副檔名改為CPL,然後將檔案複製到 WindowsSystem子目錄
下,系統在啟動時會自動搜尋副檔名為Cpl的檔案。搜尋到檔案之後,系統會裝入檔案
並呼叫CPLApplet函式,這時函式中的程式碼就開始工作,彈出視窗等操作。
  是不是很複雜,你必須對於系統呼叫DLL的工作原理和回撥函式有比較深刻的瞭解
才能編寫控制皮膚程式,而且必須無法在的整合視窗中,而必須先編譯
好以後複製到 WindowsSystem 目錄下觀察執行效果,然後再對源程式除錯,再編譯。
  幸好在5中提供了方便建立控制皮膚程式的方式。在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
開啟除錯、控制視窗。在視窗左邊的 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 下是虛擬碼:
  Case Data of
 1:DoChangeTime; 示改變系統時間視窗
 2:DoChangeDate; 示改變系統日期視窗
  end;
  end;
end;
  這樣當外部程式以不同的引數呼叫程式時,程式能彈出不同的視窗,例如 RunDll32 app.cpl 1
就將彈出改變系統時間視窗。

 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-987995/,如需轉載,請註明出處,否則將追究法律責任。

相關文章