如何在一个控制面板程序中加入窗体,当程序运行的时候显示窗体???????? 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 创建“控制面板”的新项目当我们打开“控制面板”以后,能看到许多项目,如:系统、显示器等。不过,这些项目并非指向某些可执行的程序,其实,它们是一些特殊的动态链接库,在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就显示出来。 图象 一元方程的画图 100分 如何对文件进行加密?急啊! 一个小问题 高分100求答案!数据库备份问题! 怎样将这个函数封装成dll ,供PB调用?? 如何直接对JPG图像进行矩形区域复制?分不够可以再加! 怎么在程序中创建一个表放到后台数据库中去 goomoo(古木) 來來拿分 请问在delphi中得到一个文件的大小的函数应该怎么写或是哪一个函数?在线等待! 我要工作了!!! 怎么样实现对数据的备份与恢复 如何得到任意一个月份的天数
不过,这些项目并非指向某些可执行的程序,其实,它们是一些特殊的
动态链接库,在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就显示出来。