一个简单的CONTROL程序(转自《DELPHI深度历险》)

来源:互联网 发布:国学大师软件下载 编辑:程序博客网 时间:2024/05/21 17:13

首先手工编写一个资源文件,代码如下:

 

Hello.rc

STRINGTABLE

BEGIN

1 "HELLO WORLD!"

2 "HOW DO YOU DO"

END

5 "ICON Face.ico"

 

确定同一目录下存放有Face.ico文件后,在命令行输入命令编译RC文件:brcc32 Hello.rc,如果一切无误,编译会生成Hello.res文件!

由于CPL本质是一个DLL文件,只不过带有CplApplet导出函数。所以接下来我们创建一个DLL程序,代码如下:

 

Library HelloCpl;

 

uses Windows,SysUtils,Dialogs,CPL;   //  编写控制面板程序必须引用此单元

 

{$R Hello.res}  // 连接资源文件

 

Procedure MsgBox(const Msg: string);

begin

  MessageBox(0,PChar(Msg),'Notice',Mb_OK + Mb_IconInformation);

end;

 

function CplApplet(hwndCPL: HWND;uMsg: UINT;lparam1: LPARAM;lparam2: LPARAM): LongInt;stdcall;

var pInfo: PCPLInfo;

begin

  case uMsg of

  CPL_INIT: Result := 1;    // 0--失败;非0成功。一般用于完成变量或内存配置等初始化工作

  CPL_GETCOUNT: Result := 1;   //返回所包含组件数目

  CPL_INQUIRE:                 // 取得控件面板组件信息

  begin

    pINfo := PCPLInfo(lPrarm2);

    with pInfo^ do

    begin

      idName := 1;       //  名称的资源ID

      idInffo := 2;    //  描述的资源ID

      idIcon := 5;    //  图标的资源ID

      lData := 0;    //  不需要用户自定义数据

    end;

    Result := 0;   //  成功

  end;

  CPL_NEWINQUIRE: Result := 0;  //  成功

  CPL_DBLCLK:                       //  激活某面板组件,一般是显示一SHOWMODAL对话框

  begin

    MsgBox('嘿嘿~应该在这里弹出界面!');

    Result := 0;  //  成功

  end;

  CPL_STOP: Result := 0;  //  成功

  CPL_EXIT: Result := 0;  //  成功

end;

 

exports CplApplet;

 

begin

end.

 

程序写完编译完成后,可以通过控制面板或RUNDLL32.EXE来执行!下面提供测试的BAT文件:

TestRun.bat

del hellocpl.cpl

ren hellocpl.dll *.cpl

rundll32 shell32.dll,Control_RunDll hellocpl.cpl

和安装的BAT文件:

Install.bat

del c:/windows/system32/hellocpl.cpl

copy hellocpl.dll c:/windows/system32/*.cpl

至于删除就更简单了,只要把控制面板关闭,然后直接删除系统目录下的文件就可以了!

 

写完了才发现,原来D的FILE  NEW中已经有了CONTROL PANEL APPLICATION!  -_-#!!!

原创粉丝点击