|
导读当我们打开“控制面板”以后,能看到许多项目,如:系统、显示器等。不过,这些项目并非指向某些可执行的程序,其实,它们是一些特殊的动态链接库,在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下运行通过。 |
温馨提示:喜欢本站的话,请收藏一下本站!