发信人: wpf (卧龙在田), 信区: BorlandDev
标  题: delphi中调用控制面板的内容
发信站: 哈工大紫丁香 (2001年05月13日19:23:55 星期天), 站内信件


            在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的默认值),其中CPLFi
le.cpl为CPL文件,
ItemNo为项目编号。在Delphi程序中,可以用WinExec或CreateProcess函数来实现CPL文
件调用,从而实现对
控制面板的设置项目的调用。如进行拨号连接的帐号和密码设置要调用“Internet”属
性的“连接”属性页,
可以用语句
“WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,3',, SW_SHOW
NORMAL);”;
解决2000年问题中对两位年份输入的解释要调用“区域设置”的“日期”属性页,
可以用语句:
“WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Intl.cpl,,4',, SW_SHOWNOR
MAL);”。
  控制面板各项目设置调用所对应的语句列表如下:
//打开控制面板
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_SHOWNOR
MAL);
//“安全”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,1', SW_SHOWNOR
MAL);
//“内容”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,2', SW_SHOWNOR
MAL);
//“连接”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,3', SW_SHOWNOR
MAL);
//“程序”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,4', SW_SHOWNOR
MAL);
//“高级”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL InetCpl.cpl,,5', SW_SHOWNOR
MAL);
//电话拨号属性,没有提供参数区分“我的位置”和“电话语音驱动程序”两个属性页

WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Telephon.cpl', SW_SHOWNORMA
L);
//电源管理设置,没有提供参数区分“电源方案”和“高级”两个属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL PowerCfg.cpl', SW_SHOWNORMA
L);
//调制解调器设置,没有提供参数区分“常规”和“诊断”两个属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Modem.cpl', SW_SHOWNORMAL);

//多媒体设置,可有ItemNo参数
//“音频”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,0', SW_SHOWNORMA
L);
//“视频”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,1', SW_SHOWNORMA
L);
//“MIDI”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,2', SW_SHOWNORMA
L);
//“CD音乐”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,3', SW_SHOWNORMA
L);
//“设备”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Mmsys.cpl,,4', SW_SHOWNORMA
L);
//辅助选项设置,可有ItemNo参数
//“键盘”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,1',SW_SHOWNORMA
L);
//“声音”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,2', SW_SHOWNORM
AL);
//“显示”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,3', SW_SHOWNORM
AL);
//“鼠标”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,4', SW_SHOWNORM
AL);
//“常规”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL access.cpl,,5', SW_SHOWNORM
AL);
//密码设置,没有提供参数区分“更改密码”和“修改用户配置”两个属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Password.cpl', SW_SHOWNORMA
L);
//区域设置,可有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_SHOWNO
RMAL);
//“时区”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL TimeDate.cpl,,1', SW_SHOWNO
RMAL);
//鼠标设置,没有提供参数区别“按钮”、“指针”和“移动”三个属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL Main.cpl', SW_SHOWNORMAL);
//添加/删除程序设置,可有ItemNo参数
//“安装/卸载”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL AppWiz.cpl,,1', SW_SHOWNORM
AL);
//“Windows安装程序”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL AppWiz.cpl,,2', SW_SHOWNORM
AL);
//“启动盘”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL AppWiz.cpl,,3', SW_SHOWNORM
AL);
//网络设置,没有提供参数区别“配置”、“标识”和“访问控制”三个属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL NetCpl.cpl', SW_SHOWNORMAL)
;
//系统设置,
//“常规”属性页, 可有ItemNo参数
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL SysDm.cpl,,0', SW_SHOWNORMA
L);
//“设备管理器”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL SysDm.cpl,,1', SW_SHOWNORMA
L);
//“硬件配置文件”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL SysDm.cpl,,2', SW_SHOWNORMA
L);
//“性能”属性页
WinExec('RunDLL32.exe Shell32.dll,Control_RunDLL SysDm.cpl,,3', SW_SHOWNORMA
L);
//显示设置, 可有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下调试通过.
(作者:深圳王发军 wangfajun@163.net http://wangfajun.163.net)

--
据说呆娃儿不笨

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.245.166]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.213毫秒