利用Delphi编写Windows控制面板组件及实例
3、CPL_INIT消息处理结束后,CONTROL.EXE立刻向CPLApplet发送一条CPL_GETCOUNT消息,CPL返回支持的组件数。
4、CPL_GETCOUNT消息处理结束后,CONTROL.EXE立刻向CPLApplet发送一条CPL_NEWINQUIRE消息,CPL_NEWINQUIRE每次发送一条,以取得每个组件的图标、名称、提示内容(显示在控制面板的状态栏)等信息。lParam1是指定对话框的数值,该值应在0到(CPL_GETCOUNT - 1)之间。如果CPL_NEWINQUIRE处理成功,返回0。
说明:
◆在Windows3.X系统中,CONTROL.EXE发送的是CPL_INQUIRE消息。为向下兼容,该消息被保留。基于Win32的CPL应使用CPL_NEWINQUIRE。
◆通过判断lParam1的值,可对一个CPL支持的多个组件的图标、名称、提示内容等进行控制。
5、控制面板显示所有查找到的组件图标。鼠标双击任一组件图标,控制面板向其CPL发送一条CPL_DBLCLK消息,CPL显示相应对话框,供用户改变系统设置。
说明:
◆通过检测lParam1的值,可判断用户双击的是一个CPL支持的多个组件中的哪个图标,并运行相应程序。
6、控制面板关闭时,向每个组件发送一条CPL_STOP消息,然后对每个CPL发送一条CPL_EXIT消息,CPL释放内存并卸载。
三、控制面板组件编写实例
1、编程步骤:
- 在Delphi IDE中选取菜单File-New-DLL-OK。
②在Project1中添加如图所示Form1、Form2……,根据需要设计窗体界面。为简略起见,本文仅以Form1为例。
③Form1主要代码:(为编写基于Win32的CPL,本文以读写Windows注册表为例)
- 在uses子句添加:Registry。//引用注册表单元
- 在type部分声明变量:
var
Form1: TForm1;
KeyHandle : HKEY;
ValSize : longint;
Option1 : Integer;
Option2 : Integer;
- TForm1.FormActivate代码://打开Windows注册表,读取某特定键值
procedure TForm1.FormActivate(Sender: TObject);
begin
RegOpenKey
《利用Delphi编写Windows控制面板组件及实例(第2页)》