说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在Delphi程序中调用控制面板设置功能

HTML文档下载 WORD文档下载 PDF文档下载
在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下调试通过.

HTML5预测 取代本地App将成为可能 2013年最佳实习企业:微软仅居第三 助力响应式设计:Adobe发布最新HTML5工具包 VMware控告Hortonworks恶意挖角 2013年大数据真谛:实时分析与批量处理 微软招聘信息证实Windows Blue项目正在推进 研究人员正开发永不会崩溃的计算机 Google:开发者应尽早进入可穿戴式计算 Chrome OS身世及其创始人之谜 谷歌举办Glass Foundry黑客马拉松活动 获80款Glass应用 政府和法律的干预拖慢了云计算发展 AMD打造开放的异构计算标准? Podcasts:苹果史上最烂iOS应用 烂过iOS Maps 日本游戏开发公司谈:如何在激烈的APP世界立足 VC不会告诉你的8件事 Reddit宣布将接受虚拟货币Bitcoin付款 OneID创始人:双因素身份验证无法保护Twitter Opera放弃自家内核转投WebKit的背后 Amazon强攻私有云市场,目标锁定银行 微软的24年数据中心之路 Flurry:约会应用男同性恋用的最多 jQuery消息提示框的简单实现 Mozilla CTO:Mozilla不会转向WebKit 这很重要 Pinterest或超Twitter成第二大社交网站 适合儿童上手的八款编程工具 一周云事件:亚马逊对消费者的吸引力超过苹果 比尔·盖茨对微软创新和手机不满意 让我们一起来做最漂亮的Android界面吧! 响应高达6秒 用户揭露Heroku修改路由“50倍圈钱”? [探讨]响应式设计四大原则 Linux Kernel 3.8发布 停止支持386设备 局域网中为什么就我不能共享上网? 有没有人帮忙? asc转换成字符的问题 关于句柄的解释! 在职研究生,值不值? 高分请教:指针赋值问题 用PB我怎么样才能一句一句读TXT文件??? 笑死不陪命!! http://top2u.net/~ec-soft 帮帮忙,解决一个不是asp的问题,给分!! 如何实现这样的功能 笑死不陪命!! http://top2u.net/~ec-soft qq设计 奇怪的VF,怎么修改Label1的caption? 赠送小程序者有分 如何配置外置Moderm??? 用户游览时在页面上启动了一个Timer,如何在用户关闭游览器时停止此Timer? 关于JBuilder中MSSQL2000在EJB设计时DataSource的连接问题?求救!!! linux 0.01是在UNIX上开发的吗? 裸机上怎么成功引导它的呢? 大家看看我程序错在何处,谢谢了 winroute代理怎么设置让指定的用户只能在指定的时间上网。。。 怎样写一份采用J2EE的框架的软件测试报告? C#还能使用BHO吗?如果能100分求C#使用BHO(browser helper object)的例子。 请问如何制作Win98启动盘(我现在没有Win98的机子)? 关于换行的问题 javascript判断操作系统 一个奇怪的time问题,偶是菜鸟了~~~~~~~~~~~ d7版本所带的qr是什么版本的? 请教:创建数据库表时,怎样突破默认字段长度? 免费注册 Jboss 或 应用服务器 除了网上有,买d版的不知道有没有啊,下载太慢啊!! datagrid 中的一例为4位小数的数据,如何在datagrid设置使其值显示为带二位小数?? 让你的企业、产品、网站一夜成名 企业中一般如何写数据字典阿?急,在线等待 文件上传 如何将txt文件导入mdb文件之中,在线等,解决问题立即给分。 在菜单中打开MDI窗口,但是每一次点击,就出现一个新窗口,如何只出现一个? 大侠,救命啊,这个编译错误,折磨我好几天了,如何解决啊?????? 求C语言程序:从键盘上输入若干个证书,去掉重复的,将剩余数的前n个输出显示 新手发问(有关C#和MySQL数据库)! 试用期的前几天会被安排做什么?(对于一个没有一点工作经验的大学生) 如何合并两个字符串?急!!! 请问哪有jive 的中文版原代码下载啊?? jdon的压缩包不好使!!谢谢 关于静态方法! tomcat 406 错误 如何遍历任务栏上已经打开的程序呢? 动态添加commandbutton后如何写其clicked()的事情 今天晚上可能要時間長了,那個算法的流程你看看,服務器的負載太大了,不斷的連接,數據碎片太多了 把dataSet里的多个表插入数据库时,怎么把这多个表作为一个事务? tomcat报出406号错误 CDONTS.NewMail发送邮件? 继承的问题 我的问题 work institutes是什么意思 But sometimes I just felt I could give up. 是什么意思? 英语翻译是一篇英文文章最后的表格名称部分,boxes应该怎么翻译? 英语翻译 中翻英 她这学期的进步比上学期大的多 “look back to the old,if you would learn the new.”译成一句古语是什么? 商务上的中翻英1.我们承诺若对方在交货后7天,且在信用证有效期内交单,并提供信用证所述单证,我公司承诺会在开证行收到单据后7天之内赎单. What are you doing for vacation 是将来进行时吗?还是过去进行时?还是现在进行时?还是一般进行时? brunch什么意思 The thief intruded into the house with caution and dissimulation. tertiary student是什么意思?到底是什么啊?两个人我听谁的呢? 恒大派全华班替补出战上港 主力留广州南京再遇雾霾锁城 成为江苏空气最脏城丁俊晖轻取前“亚洲球王” 排行榜取代火箭队新赛季阵容确定 NBA官方排名纽约庆祝索契冬奥百日倒计时 花滑美女全国43站点监测雾霾对健康影响 含河中央将遴选100名具冲击诺贝尔奖潜力日本民主党:安倍内阁任命亲信 有统治中国常驻联合国副代表敦促美尽快终止对93岁老人做裸模十余年:几个孩子都不浙江衢州:法官强忍病痛开庭感动当事人五一放假时间为1日至3日山东独生子女费26年没涨沪深个股精评济南26个蓝天倒数第...凯远集团董事陈瑞斋被调查黑匣子确定在几公里范围内上证综指终结“四连涨”济南“3.26”伤害案成功告破没收占道摊贩商品城管队员称被泼粪乌克兰欠债不还 普京威胁停气全国城乡将广设善行义举榜
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘