zoukankan      html  css  js  c++  java
  • 教程-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_ROOTcplfileshellcplopencommand的默认值),其中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);­

     

     

     

     

    控制面板大全

      在程序运行过程中启动控制面板的各个设置功能:
    var x:cardinal;
    begin
    {启动控制面板}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL’,9);
    {辅助选项 属性-键盘}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1’,9);
    {辅助选项 属性-声音}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2’,9);
    {辅助选项 属性-显示}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3’,9);
    {辅助选项 属性-鼠标}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4’,9);
    {辅助选项 属性-常规}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5’,9);
    {添加/删除程序 属性-安装/卸载}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Appwiz.cpl,,1’,9);
    {添加/删除程序 属性-Windows安装程序}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Appwiz.cpl,,2’,9);
    {添加/删除程序 属性-启动盘}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Appwiz.cpl,,3’,9);
    {显示 属性-背景}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0’,9);
    {显示 属性-屏幕保护程序}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1’,9);
    {显示 属性-外观}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2’,9);
    {显示 属性-设置}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3’,9);
    {Internet 属性-常规}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,0’,9);
    {Internet 属性-安全}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,1’,9);
    {Internet 属性-内容}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,2’,9);
    {Internet 属性-连接}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,3’,9);
    {Internet 属性-程序}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,4’,9);
    {Internet 属性-高级}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl,,5’,9);
    {区域设置 属性-区域设置}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Intl.cpl,,0’,9);
    {区域设置 属性-数字}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Intl.cpl,,1’,9);
    {区域设置 属性-货币}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Intl.cpl,,2’,9);
    {区域设置 属性-时间}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Intl.cpl,,3’,9);
    {区域设置 属性-日期}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Intl.cpl,,4’,9);
    {游戏控制器-一般}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Joy.cpl,,0’,9);
    {游戏控制器-高级}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Joy.cpl,,1’,9);
    {鼠标 属性}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Main.cpl’,9);
    {多媒体 属性-音频}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Mmsys.cpl,,0’,9);
    {多媒体 属性-视频}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Mmsys.cpl,,1’,9);
    {多媒体 属性-MIDI}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Mmsys.cpl,,2’,9);
    {多媒体 属性-CD音乐}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Mmsys.cpl,,3’,9);
    {多媒体 属性-设备}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Mmsys.cpl,,4’,9);
    {调制解调器 属性}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Modem.cpl’,9);
    {网络}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Netcpl.cpl’,9);
    {密码 属性}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Password.cpl’,9);
    {扫描仪与数字相机 属性}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Sticpl.cpl’,9);
    {系统 属性-常规}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Sysdm.cpl,,0’,9);
    {系统 属性-设备管理器}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Sysdm.cpl,,1’,9);
    {系统 属性-硬件配置文件}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Sysdm.cpl,,2’,9);
    {系统 属性-性能}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Sysdm.cpl,,3’,9);
    {日期/时间 属性}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL timedate.cpl’,9);
    {电源管理 属性}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Powercfg.cpl’,9);
    {拨号属性}
    x:=winexec(’rundll32.exe shell32.dll,Control_RunDLL Telephon.cpl’,9);
    {----------------------调用错误----------------------}
    if x=0 then messagebox(0,’程序超出内存’,’错误’,0);
    if x=ERROR_BAD_FORMAT then messagebox(0,’该程序非一个合法的Win32.EXE程序).’,’错误’,0);
    if x=ERROR_FILE_NOT_FOUND then messagebox(0,’指定文件没找到’,’错误’,0);
    if x=ERROR_PATH_NOT_FOUND then messagebox(0,’指定路径没找到’,’错误’,0);
    end; 

  • 相关阅读:
    php utf-8
    thinkPHP--关于域名指向的问题
    PHP命名空间(Namespace)的使用详解
    thinkphp 动态配置
    枚举之称硬币
    5.7
    5.6
    5.5(OI一本通开始)
    5.4
    5.3
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/4654585.html
Copyright © 2011-2022 走看看