请问如何调用控制面板程序?

AeLord 2002-12-28 08:00:18
比如Internet 选项、系统等等,尽可能详细些!多谢了。
...全文
127 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
AeLord 2002-12-31
  • 打赏
  • 举报
回复
多谢各位帮忙。
iec 2002-12-30
  • 打赏
  • 举报
回复
OK
invalid 2002-12-30
  • 打赏
  • 举报
回复
能否再全些?
自己参考上面的,拿cpl文件试验啊。
AeLord 2002-12-30
  • 打赏
  • 举报
回复
能否再全些?
AeLord 2002-12-29
  • 打赏
  • 举报
回复
多谢各位了。
invalid 2002-12-28
  • 打赏
  • 举报
回复
使用Rundll32.exe和Rundll.exe

    常用Windows9x的朋友一定对Rundll32.exe和Rundll.exe这两个档案不
会陌生吧,不过,由於这两个程式的功能原先只限於在微软内部使用,因而真正
知道如何使用它们的朋友想必不多。那么好,如果你还不清楚的话,那么
就让我来告诉你吧。
  首先,请你做个小实验(请事先保存好你正在执行的程式的结果,否则...):
点击“开始-程式-Ms-Dos方式”,进入Dos视窗,然後键入
"rundll32.exe user.exe,restartwindows",再按下回车键,这时你将看到,机
器被重启了!怎么样,是不是很有趣?
  当然,Rundll的功能绝不仅仅是重启你的机器。其实,Rundll者,顾名思义,
执行Dll也,它的功能就是以命令列的方式呼叫Windows的动态链结库,
Rundll32.exe与Rundll.exe的区别就在於前者是呼叫32位的链结库,而後者是运
用於16位的链结库,它们的命令格式是:
  RUNDLL.EXE ,,
  这里要注意三点:1.Dll档案名中不能含有空格,比如该档案位於
c:\Program Files\目录,你要把这个路径改成c:\Progra~1\;2.Dll档案名与Dll
入口点间的逗号不能少,否则程式将出错并且不会给出任何资讯!3.这是最重要的
一点:Rundll不能用来呼叫含返回值参数的Dll,例如Win32API中的GetUserName(),
GetTextFace()等。在Visual Basic中,提供了一条执行外部程式的指令Shell,格
式为:
  Shell “命令列”
  如果能配合Rundll32.exe用好Shell指令,会使您的VB程式拥有用其他方法难
以甚至无法实现的效果:仍以重启为例,传统的方法需要你在VB工程中先建立一
个模组,然後写入WinAPI的声明,最後才能在程式中呼叫。而现在只需一句:
  Shell “rundll32.exe user.exe,restartwindows”就搞定了!是不是方便
多了?
  实际上,Rundll32.exe在呼叫各种Windows控制面板和系统选项方面有著独特
的优势。下面,我就将本人在因特网上收集的有关Rundll的指令列举如下(很有
用的,能省去你很多呼叫Windows API的时间!!),供大家在程式设计中引用:
  命令列: rundll32.exe shell32.dll,Control_RunDLL
  功能: 显示控制面板
  命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
  功能: 显示“控制面板-辅助选项-键盘”选项视窗
  命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
  功能: 显示“控制面板-辅助选项-声音”选项视窗
  命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
  功能: 显示“控制面板-辅助选项-显示”选项视窗
  命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
  功能: 显示“控制面板-辅助选项-滑鼠”选项视窗
  命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
  功能: 显示“控制面板-辅助选项-传统”选项视窗
  命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
  功能: 执行“控制面板-添加新硬体”向导。
  命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter
  功能: 执行“控制面板-添加新印表机”向导。
  命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
  功能: 显示 “控制面板-添加/删除程式-安装/卸载” 面板。
  命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
  功能: 显示 “控制面板-添加/删除程式-安装Windows” 面板。
  命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
  功能: 显示 “控制面板-添加/删除程式-启动盘” 面板。
  命令列: rundll32.exe syncui.dll,Briefcase_Create
  功能: 在桌面上建立一个新的“我的公文包”。
  命令列: rundll32.exe diskcopy.dll,DiskCopyRunDll
  功能: 显示复制软碟视窗
  命令列: rundll32.exe apwiz.cpl,NewLinkHere %1
  功能: 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。
  命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0
  功能: 显示“日期与时间”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1
  功能: 显示“时区”选项视窗。
  命令列: rundll32.exe rnaui.dll,RnaDial [某个拨号连接的名称]
  功能: 显示某个拨号连接的拨号视窗。如果已经拨号连接,则显示目前的连接状态的视窗。
  命令列: rundll32.exe rnaui.dll,RnaWizard
  功能: 显示“新建拨号连接”向导的视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
  功能: 显示“显示属性-背景”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
  功能: 显示“显示属性-萤屏保护”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
  功能: 显示“显示属性-外观”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
  功能: 显示显示“显示属性-属性”选项视窗。
  命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder
  功能: 显示Windows的“字体”档案夹。
  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
  功能: 同样是显示Windows的“字体”档案夹。
  命令列: rundll32.exe shell32.dll,SHFormatDrive
  功能: 显示格式化软碟对话框。
  命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0
  功能: 显示“控制面板-游戏控制器-一般”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1
  功能: 显示“控制面板-游戏控制器-进阶”选项视窗。
  命令列: rundll32.exe mshtml.dll,PrintHTML (HTML文档)
  功能: 列印HTML文档。
  命令列: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
  功能: 显示Microsoft Exchange一般选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
  功能: 显示“控制面板-滑鼠” 选项 。
  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
  功能: 显示 “控制面板-键盘属性-速度”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1
  功能: 显示 “控制面板-键盘属性-语言”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
  功能: 显示Windows“印表机”档案夹。
  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
  功能: 显示Windows“字体”档案夹。
  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4
  功能: 显示“控制面板-输入法属性-输入法”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add
  功能: 执行“添加新调制解调器”向导。
  命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
  功能: 显示“控制面板-多媒体属性-音频”属性页。
  命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
  功能: 显示“控制面板-多媒体属性-视频”属性页。
  命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
  功能: 显示“控制面板-多媒体属性-MIDI”属性页。
  命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
  功能: 显示“控制面板-多媒体属性-CD音乐”属性页。
  命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
  功能: 显示“控制面板-多媒体属性-设备”属性页。
  命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
  功能: 显示“控制面板-声音”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
  功能: 显示“控制面板-网路”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl
  功能: 显示ODBC32资料管理选项视窗。
  命令列: rundll32.exe shell32.dll,OpenAs_RunDLL {drive:\path\filename}

  功能: 显示指定档案(drive:\path\filename)的“打开方式”对话框。
  命令列: rundll32.exe shell32.dll,Control_RunDLL password.cpl
  功能: 显示“控制面板-密码”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl
  功能: 显示“控制面板-电源管理属性”选项视窗。
  命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL
PrintersFolder
  功能: 显示Windows“印表机”档案夹。(同rundll32.exe shell32.dll,Control_RunDLL
main.cpl @2)
  命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
  功能: 显示“控制面板-区域设置属性-区域设置”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
  功能: 显示“控制面板-区域设置属性-数字”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
  功能: 显示“控制面板-区域设置属性-货币”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
  功能: 显示“控制面板-区域设置属性-时间”选项视窗。
  命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
  功能: 显示“控制面板-区域设置属性-日期”选项视窗。
  命令列: rundll32.exe desk.cpl,InstallScreenSaver [萤屏保护档案名]
  功能: 将指定的萤屏保护档案设置为Windows的屏保,并显示萤屏保护属性视窗。
  命令列: rundll32.exe shell32.dll,Control_Ru
invalid 2002-12-28
  • 打赏
  • 举报
回复
下面的应该够了吧。
Rundll32.exe主要用于执行动态联接库的函数,其使用格式如下:
Rundll32.exe <Dll文件名>,<函数名>,<可选参数>
例:打开控制面板
Rundll32.exe Shell32.dll,Control_Rundll
在如后加上 (空格)access.cpl,4 就可以打开鼠标的设置窗口。
下面列举出了Shell32.dll的很多用法,供大家参考:
'Control Panel ( CONTROL.EXE )
'--------------------------------
'Control Panel:
' rundll32.exe shell32.dll,Control_RunDLL
'
'Accessability Options ( ACCESS.CPL )
'---------------------------------------
'Accessability Properties (Keyboard):
' rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
'Accessability Properties (Sound):
' rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
'Accessability Properties (Display):
' rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
'Accessability Properties (Mouse):
' rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
'Accessability Properties (General):
' rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
'
'Add/Remove Programs ( APPWIZ.CPL )
'-------------------------------------
'Add/Remove Programs Properties (Install/Uninstall):
' rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
'Add/Remove Programs Properties (Windows Setup):
' rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
'Add/Remove Programs Properties (Startup Disk):
' rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
'
'Display Options ( DESK.CPL )
'-------------------------------
'Display Properties (Background):
' rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
'Display Properties (Screen Saver):
' rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
'Display Properties (Appearance):
' rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
'Display Properties (Settings):
' rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
'
'Regional Settings ( INTL.CPL )
'---------------------------------
'Regional Settings Properties (Regional Settings):
' rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
'Regional Settings Properties (Number):
' rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
'Regional Settings Properties (Currency):
' rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
'Regional Settings Properties (Time):
' rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
'Regional Settings Properties (Date):
' rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
'
'Joystick Options ( JOY.CPL )
'-------------------------------
'Joystick Properties (Joystick):
' rundll32.exe shell32.dll,Control_RunDLL joy.cpl
'
'Mouse/Keyboard/Printers/Fonts Options ( MAIN.CPL )
'-----------------------------------------------------
'Mouse Properties:
' rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
'Keyboard Properties:
' rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
'Printers:
' rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
'Fonts:
' rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
'Mail and Fax Options ( MLCFG32.CPL )
'---------------------------------------
'Microsoft Exchange Profiles (General):
' rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
'
'Multimedia/Sounds Options ( MMSYS.CPL )
'------------------------------------------
'Multimedia Properties (Audio):
' rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
'Multimedia Properties (Viedo):
' rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
'Multimedia Properties (MIDI):
' rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
'Multimedia Properties (CD Music):
' rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
'Multimedia Properties (Advanced):
' rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
' = = = = = = = = = = = = = = = = = = = = = = = = = = =
'Sounds Properties:
' rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
'
'Modem Options ( MODEM.CPL )
'------------------------------
'Modem Properties (General):
' rundll32.exe shell32.dll,Control_RunDLL modem.cpl
'
'Network Options ( NETCPL.CPL )
'---------------------------------
'Network (Configuration):
' rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
'
'Password Options ( PASSWORD.CPL )
'------------------------------------
'Password Properties (Change Passwords):
' rundll32.exe shell32.dll,Control_RunDLL password.cpl
'
'System/Add New Hardware Options ( SYSDM.CPL )
'------------------------------------------------
'System Properties (General):
' rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
'System Properties (Device Manager):
' rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
'System Properties (Hardware Profiles):
' rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
'System Properties (Performance):
' rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
' = = = = = = = = = = = = = = = = = = = = = = = = = = =
'Add New Hardware Wizard:
' rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
'
'Date and Time Options ( TIMEDATE.CPL )
'-----------------------------------------
'Date/Time Properties:
' rundll32.exe shell32.dll,Control_RunDLL timedate.cpl
'
'Microsoft Mail Postoffice Options ( WGPOCPL.CPL )
'----------------------------------------------------
'Microsoft Workgroup Postoffice Admin:
' rundll32.exe shell32.dll,Control_RunDLL wgpocpl.cpl



使用Rundll32.exe和Rundll.exe(转程式设计技术)

本帖版权归原作者,其它网站转载须注明出处,传统媒体转载须事先与原作者和e龙西祠胡同[http://www.xici.net]联系。
作者: yagami 发表日期: 2001-02-05 10:56:17 黑客也是侠》



iec 2002-12-28
  • 打赏
  • 举报
回复
OK
GaoLun 2002-12-28
  • 打赏
  • 举报
回复
CPL程序是动态链接库(DLL)的一种变形,只不过扩展名为.cpl、入口函数为CPlApplet()而不是DllEntryPoint()罢了(并不是不要DllEntryPoint(),不然不能编译)。我们只需在BCB4.0中选择“File|New...”打开开发向导,选择“DLL”生成一个DLL框架,并在其中加入一个函数CPlApplet()就可以了。为了快速地说明问题,笔者先给出一个最简单的例子程序,然后再来解说。

#include <vcl.h>
#include <cpl.h>
#include <cplext.h>
#pragma hdrstop
USERES("my.res");//这是我加入的资源文件,其中有一个图标

extern"C" __declspec(dllexport) long CALLBACK __stdcall CPlApplet(HWND hwndCPL,UINT uMsg,LPARAM lParam1,LPARAM lParam2);

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
return 1;
}

long CALLBACK __declspec(dllexport) __stdcall CPlApplet(HWND hwndCPL,UINT uMsg,LPARAM lParam1,LPARAM lParam2)
{
LPNEWCPLINFO mycpl;//LPNEWCPLINFO结构可在CPL.H头文件中查看
long result=0;
switch (uMsg)//判断传来的信息
{
case CPL_INIT:// 第一个信息,在控制面板调入时产生
result=1;
break;
case CPL_GETCOUNT://第二个信息,在控制面板调入时产生
result=1;
break;
case CPL_INQUIRE://第三个信息,当控制面板查询时产生
result=0;
break;
case CPL_NEWINQUIRE://第三个信息,当控制面板查询时产生
mycpl=LPNEWCPLINFO (lParam2);// 将lParam2中的指针传给mycpl
mycpl->dwSize=sizeof(NEWCPLINFO);
mycpl->dwFlags=0;//标志变量 一般设为0
mycpl->dwHelpContext=0;//帮助句柄一般设为0
mycpl->lData=0;
mycpl->hIcon=(HICON)LoadIcon(HInstance,"MyIcon");
mycpl->szHelpFile[0]='\0';//帮助文件
StrCopy(mycpl->szName,"BCB控制面板演示程序");//在图标下显示的说明文字
StrCopy(mycpl->szInfo,"用BCB开发自己的控制面板程序");// 在控制面板状态栏中显示的说明信息
result=0;
break;
case CPL_DBLCLK://当图标被双击时
ShowMessage("这是一个CPL试验程序");
result=0;
break;
case CPL_STOP://当用户关闭自已的程序时产生
result=1;
break;
case CPL_EXIT:// 当控制面板关闭时产生,系统使用FreeLibrary()释放
result=0;
break;
default:
break;
}
return result;
}

  程序解说

  CPL程序的运行流程是基于发送到程序的一系列消息。

  当用户打开“控制面板”的时候,系统将遍历System目录下的所有CPL程序,并给它们传送CPL—INT消息。这时,CPL程序就可以做一些初始化工作,然后返回非零值,如果返零,程序将被终止。如果CPL—INT消息处理完成后,CPL程序将接收到CPL—GETCOUNT消息,此时程序必须返回对话框的数目,一般为1。然后,程序又将收到CPL—NEWINQUIRE消息,此时系统需要CPL程序提供有关信息,如图标、说明文字、帮助文件等,程序必须填充lParam2这个指针指向的信息结构,然后返回0。到这里,控制面板就完成了初始化,显示出各个图标。如果用户双击了某个图标后,这个图标所代表的CPL程序将接收到一个CPL—DBCLICK消息。这时,CPL程序可以显示出对话界面,进行有关操作。当用户完成操作、关闭程序时,必须返回0。当用户关闭“控制面板”,此时CPL程序将接收到CPL—STOP消息,这时就要释放内存资源,做好善后工作,然后返回1。 最后CPL程序将接收到最后一个消息CPL—EXIT,系统将删除各个窗口,并使用FreeLibrary()函数将CPL程序从系统中删除,完成整个流程。一般情况下,我们只需要对CPL—NEWINQUIRE和CPL—DBCLICK这两个消息进行处理,其它的消息只要返回默认值就够了。

  大家只要编译这个CPL项目,并将结果拷贝到Windows\System目录下,然后打开“控制面板”就可以看到成果了。双击图标,程序将弹出一个信息框:“这是一个CPL试验程序!"。这样一个CPL程序就完成了。

  如果你想加入更多的功能,只需将CPL—DBCLICK消息进行处理,比如可以显示一个窗口进行交互操作。具体的方法与在DLL中加入窗口的方法相同,因为CPL程序本身就是基于DLL框架制作出来的。下图是笔者做的一个交互窗口:最后,告诉读者一点技巧:想要编译器输出.cpl文件,可在Project|Options...|Application|output settings中将输出扩展名dll改为cpl就行了。将CPL程序拷入Windows\System\目录下后不必打开“控制面板”,直接双击文件就可以打开这个程序了。而在其它目录下是没有作用的。
kingfish 2002-12-28
  • 打赏
  • 举报
回复
Internet:
WinExec("rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl",9);


依次类推,system32 下的 *.cpl
kingfish 2002-12-28
  • 打赏
  • 举报
回复
比如调用"日期/时间"
WinExec("rundll32.exe shell32.dll,Control_RunDLL timedate.cpl",9);

zjqc 2002-12-28
  • 打赏
  • 举报
回复
SHELLEXCUTE()

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧