程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 創建“控制面板”的新項目

創建“控制面板”的新項目

編輯:Delphi

  當我們打開“控制面板”以後,能看到許多項目,如:系統、顯示器等。不過,這些項目並非指向某些可執行的程序,其實,它們是一些特殊的動態鏈接庫,在Windows裡注冊的類型是“控制面板擴展”,文件的擴展名是“CPL”。

  這種“控制面板擴展”與普通動態鏈接庫(DLL)類似,但必須符合以下的要求:

  1.該動態鏈接庫必須輸出一個CplApplet函數,這個函數包含了一些消息,函數的原型如下:

  function CPlApplet(hwndCPL: HWND; uMsg: UINT;

  lParam1: LPARAM; lParam2: LPARAM): LongInt; stdcall;

  2.該動態鏈接庫的擴展名是“CPL”,位於Windows的系統目錄下,通常是“\Windows\System”;

  3.函數CplApplet必須處理的消息包括:CPL—INIT、CPL—GETCOUNT、CPL—NEWINQUIRE、CPL—DBLCLK等:

  CPL—INIT:表示程序被(控制面板)發現,返回True或False表示是否繼續進行下去。

  CPL—GETCOUNT:確定程序在控制面板中顯示的個數,返回值為顯示的個數。

  CPL—NEWINQUIRE:用於填寫程序的信息。

  CPL—DBLCLK:當圖標被雙擊時觸發,這時可以顯示一個Form。

  在Delphi中新建一個工程,選擇“DLL”,Delphi就會自動創建一個動態鏈接庫的框架,先把這個工程存為“myCPL.dpr”,然後新建一個Form,保存為main.pas。

  myCPL.dpr的內容如下:

  library mycpl;

  uses

   Windows,

   SysUtils,

   CPL,

   Forms,

   main in ′main.pas′ {MainForm};

  {$E cpl}  //表示擴展名是CPL

  {$R *.res}

  function CPlApplet(hwndCPL: HWND; uMsg: UINT;

   lParam1: LPARAM; lParam2: LPARAM) : LongInt; stdcall;

  var

   pNewInfo: PNewCPlInfo;

  begin

   case uMsg of

    CPL—INIT:

    begin

   Result := 1;

  end;

  CPL—GETCOUNT:

  begin

   Result := 1;

  end;

  CPL—NEWINQUIRE:

  begin

   pNewInfo:=PNewCPlInfo(lParam2);

   with pNewInfo^ do

   begin

    dwSize:=sizeof(TNewCPLInfo);

    dwFlags:=0;

   StrPLCopy(szName,′新建項目′, 31);

   StrPLCopy(szInfo, ′我的選項′, 63);

   end;

  end;

  CPL—DBLCLK:

  begin

   with TMainForm.Create(Application) do

    ShowModal;

   Result:=0;

  end;

   end;

  end;

  exports

   CPlApplet;

  begin

  end.

  把編譯好的mycpl.cpl拷貝到Windows的System目錄下後,打開“控制面板”,你會發現多了一個“新建項目”,用鼠標選中,窗口的狀態欄顯示:“我的選項”。用鼠標雙擊,一個Form就顯示出來,剩下的事情就不用多說了。

  以上程序在Windows 95、Delphi 4.0下運行通過。

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