您的位置:首页 > 编程语言 > Delphi

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

2007-01-15 17:50 405 查看

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

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! -_-#!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: