[摘要]当我们打开“控制面板”以后,能看到许多项目,如:系统、显示器等。不过,这些项目并非指向某些可执行的程序,其实,它们是一些特殊的动态链接库,在Windows里注册的类型是“控制面板扩展”,文件的扩展名...
   当我们打开“控制面板”以后,能看到许多项目,如:系统、
显示器等。不过,这些项目并非指向某些可执行的程序,其实,它
们是一些特殊的动态链接库,在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下运行通过。  
关键词:创建“控制面板”的新项目