谢谢

解决方案 »

  1.   

    创建“控制面板”的新项目当我们打开“控制面板”以后,能看到许多项目,如:系统、显示器等。
    不过,这些项目并非指向某些可执行的程序,其实,它们是一些特殊的
    动态链接库,在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:Result:=1; 
     CPL_GETCOUNT:Result:=1; 
     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就显示出来。