======================================================
注:本文源代码点此下载
======================================================
如果你有这个方面的问题请到delphi去提问或发表你的意见
来源:论坛转载无法确定出处,如有版权问题请与我们联系
在delphi程序中调用控制面板设置功能
2000-09-20· 王发军·delphi技术网
应用程序运行时,有时需要对系统环境有特殊要求。例如,在delphi数据库应用程序中可能需要进行bde(borland database engine)或odbc数据源名称(dsn:data source name)的设置;在网络应用程序中可能需要进行网络配置设置、modem属性设置或用户拨号连接的帐号和密码的设置并保存在系统中;在cti(computer-telephony integration)应用程序中可能需要进行电话拨号属性的设置;在游戏程序中可能需要对多媒体或游戏控制器进行设置;等等。这时候就需要改变windows系统的环境设置,以适应应用程序正常运行的要求。当应用程序不能自行进行环境设置时,可能需要软件用户来参与、协助完成设置。
win9x/nt的大多数系统设置是在控制面板中进行的。我们可以要求用户自己打开控制面板寻找相应的项目进行设置,此时要求用户对控制面板相当熟悉;也可以在程序中自动为用户打开控制面板并选择相应的项目,此时用户所做的只是进行设置。后一种方法无疑更具有友好性,更能提高用户的工作效率。
控制面板的大多数项目设置,都对应windows的system目录下的一个cpl文件,如“internet”属性对应的文件为inetcpl.cpl、“多媒体”属性对应的文件为mmsys.cpl等。通过调用这些文件可以打开相应的属性设置窗口,甚至可以跳到相应的属性页如“internet”属性的“连接”属性页,有效减少软件用户的操作步骤。
cpl文件的调用格式为“rundll32.exe shell32.dll,control_rundll cplfile.cpl,,itemno”(可参见注册表中hkey_classes_root\cplfile\shell\cplopen\command的默认值),其中cplfile.cpl为cpl文件,itemno为项目编号。在delphi程序中,可以用winexec或createprocess函数来实现cpl文件调用,从而实现对控制面板的设置项目的调用。如进行拨号连接的帐号和密码设置要调用“internet”属性的“连接”属性页,可以用语句“winexec(’rundll32.exe shell32.dll,control_rundll inetcpl.cpl,,3’,, sw_shownormal);”;解决2000年问题中对两位年份输入的解释要调用“区域设置”的“日期”属性页,可以用语句:“winexec(’rundll32.exe shell32.dll,control_rundll intl.cpl,,4’,, sw_shownormal);”。
控制面板各项目设置调用所对应的语句列表如下:
//打开控制面板
winexec(’rundll.exe shell32.dll,control_rundll’,sw_shownormal);
//32位odbc数据源管理器,odbc数据源、odbc驱动程序设置
//没有提供参数区分“用户dsn”“系统dsn”“文件dsn”“odbc驱动程序”“跟踪”“关于”六个属性页
winexec(’rundll32.exe shell32.dll,control_rundll odbccp32.cpl’,sw_shownormal);
//bde adminstrator
//没有提供参数区分“databases”和“configuration”两个属性页
winexec(’rundll32.exe shell32.dll,control_rundll bdeadmin.cpl’,sw_shownormal);
//internet 属性,可有itemno参数
//“常规”属性页
winexec(’rundll32.exe shell32.dll,control_rundll inetcpl.cpl,,0’, sw_shownormal);
//“安全”属性页
winexec(’rundll32.exe shell32.dll,control_rundll inetcpl.cpl,,1’, sw_shownormal);
//“内容”属性页
winexec(’rundll32.exe shell32.dll,control_rundll inetcpl.cpl,,2’, sw_shownormal);
//“连接”属性页
winexec(’rundll32.exe shell32.dll,control_rundll inetcpl.cpl,,3’, sw_shownormal);
//“程序”属性页
winexec(’rundll32.exe shell32.dll,control_rundll inetcpl.cpl,,4’, sw_shownormal);
//“高级”属性页
winexec(’rundll32.exe shell32.dll,control_rundll inetcpl.cpl,,5’, sw_shownormal);
//电话拨号属性,没有提供参数区分“我的位置”和“电话语音驱动程序”两个属性页
winexec(’rundll32.exe shell32.dll,control_rundll telephon.cpl’, sw_shownormal);
//电源管理设置,没有提供参数区分“电源方案”和“高级”两个属性页
winexec(’rundll32.exe shell32.dll,control_rundll powercfg.cpl’, sw_shownormal);
//调制解调器设置,没有提供参数区分“常规”和“诊断”两个属性页
winexec(’rundll32.exe shell32.dll,control_rundll modem.cpl’, sw_shownormal);
//多媒体设置,可有itemno参数
//“音频”属性页
winexec(’rundll32.exe shell32.dll,control_rundll mmsys.cpl,,0’, sw_shownormal);
//“视频”属性页
winexec(’rundll32.exe shell32.dll,control_rundll mmsys.cpl,,1’, sw_shownormal);
//“midi”属性页
winexec(’rundll32.exe shell32.dll,control_rundll mmsys.cpl,,2’, sw_shownormal);
//“cd音乐”属性页
winexec(’rundll32.exe shell32.dll,control_rundll mmsys.cpl,,3’, sw_shownormal);
//“设备”属性页
winexec(’rundll32.exe shell32.dll,control_rundll mmsys.cpl,,4’, sw_shownormal);
//辅助选项设置,可有itemno参数
//“键盘”属性页
winexec(’rundll32.exe shell32.dll,control_rundll access.cpl,,1’,sw_shownormal);
//“声音”属性页
winexec(’rundll32.exe shell32.dll,control_rundll access.cpl,,2’, sw_shownormal);
//“显示”属性页
winexec(’rundll32.exe shell32.dll,control_rundll access.cpl,,3’, sw_shownormal);
//“鼠标”属性页
winexec(’rundll32.exe shell32.dll,control_rundll access.cpl,,4’, sw_shownormal);
//“常规”属性页
winexec(’rundll32.exe shell32.dll,control_rundll access.cpl,,5’, sw_shownormal);
//密码设置,没有提供参数区分“更改密码”和“修改用户配置”两个属性页
winexec(’rundll32.exe shell32.dll,control_rundll password.cpl’, sw_shownormal);
//区域设置,可有itemno参数
//“区域设置”属性页
winexec(’rundll32.exe shell32.dll,control_rundll intl.cpl,,0’, sw_shownormal);
//“数字”属性页
winexec(’rundll32.exe shell32.dll,control_rundll intl.cpl,,1’, sw_shownormal);
//“货币”属性页
winexec(’rundll32.exe shell32.dll,control_rundll intl.cpl,,2’, sw_shownormal);
//“时间”属性页
winexec(’rundll32.exe shell32.dll,control_rundll intl.cpl,,3’, sw_shownormal);
//“日期”属性页
winexec(’rundll32.exe shell32.dll,control_rundll intl.cpl,,4’, sw_shownormal);
//日期/时间设置,可有itemno参数
//“日期和时间”属性页
winexec(’rundll32.exe shell32.dll,control_rundll timedate.cpl,,0’, sw_shownormal);
//“时区”属性页
winexec(’rundll32.exe shell32.dll,control_rundll timedate.cpl,,1’, sw_shownormal);
//鼠标设置,没有提供参数区别“按钮”、“指针”和“移动”三个属性页
winexec(’rundll32.exe shell32.dll,control_rundll main.cpl’, sw_shownormal);
//添加/删除程序设置,可有itemno参数
//“安装/卸载”属性页
winexec(’rundll32.exe shell32.dll,control_rundll appwiz.cpl,,1’, sw_shownormal);
//“windows安装程序”属性页
winexec(’rundll32.exe shell32.dll,control_rundll appwiz.cpl,,2’, sw_shownormal);
//“启动盘”属性页
winexec(’rundll32.exe shell32.dll,control_rundll appwiz.cpl,,3’, sw_shownormal);
//网络设置,没有提供参数区别“配置”、“标识”和“访问控制”三个属性页
winexec(’rundll32.exe shell32.dll,control_rundll netcpl.cpl’, sw_shownormal);
//系统设置,
//“常规”属性页, 可有itemno参数
winexec(’rundll32.exe shell32.dll,control_rundll sysdm.cpl,,0’, sw_shownormal);
//“设备管理器”属性页
winexec(’rundll32.exe shell32.dll,control_rundll sysdm.cpl,,1’, sw_shownormal);
//“硬件配置文件”属性页
winexec(’rundll32.exe shell32.dll,control_rundll sysdm.cpl,,2’, sw_shownormal);
//“性能”属性页
winexec(’rundll32.exe shell32.dll,control_rundll sysdm.cpl,,3’, sw_shownormal);
//显示设置, 可有itemno参数
//“背景”属性页
winexec(’rundll32.exe shell32.dll,control_rundll desk.cpl,,0’, sw_shownormal);
//“屏幕保护程序”属性页
winexec(’rundll32.exe shell32.dll,control_rundll desk.cpl,,1’, sw_shownormal);
//“外观”属性页
winexec(’rundll32.exe shell32.dll,control_rundll desk.cpl,,2’, sw_shownormal);
//“设置”属性页
winexec(’rundll32.exe shell32.dll,control_rundll desk.cpl,,3’, sw_shownormal);
//游戏控制器设置,可有itemno参数
//“一般”属性页
winexec(’rundll32.exe shell32.dll,control_rundll joy.cpl,,0’, sw_shownormal);
//“高级”属性页
winexec(’rundll32.exe shell32.dll,control_rundll joy.cpl,,1’, sw_shownormal);
//扫描仪与数字相机设设置,没有提供参数区分“设备”和“记录设置”两个属性页
winexec(’rundll32.exe shell32.dll,control_rundll sticpl.cpl’, sw_shownormal);
以上程序在pwin98+delphi3.0下调试通过.
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/