首页 > 解决方案 > 控制面板小程序执行命令行语法

问题描述

我正在尝试通过命令行(运行对话框)调用 Internet 选项控制面板小程序。具体来说,“连接”选项卡。

我使用了以下语法:

rundll32.exe shell32.dll,Control_RunDLL INETCPL.CPL,,4

效果很好。我的问题有两个:

  1. 对于“Control_RunDLL”函数,它需要的第二个参数是什么?

(在我的情况下,在我找到的所有文档中,它都是 NULL 或空的)

(第一个参数是小程序名称,第三个是选项卡号)

  1. 我在哪里可以访问专门提到第二个参数的 Microsoft 文档?

标签: winapicommand-linecontrolpanelrundll32shell32.dll

解决方案


Control_RunDLL是一个私有的 shell 函数,它没有被记录。我们仍然知道它的参数,因为所有的rundll32 函数看起来都是这样的:

void CALLBACK FunctionName(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow); 

这意味着它在 shell32 内部更深层次的东西可以解析命令行参数。

正如您自己发现的那样,.cpl 文件可以支持多个控制面板“小程序”:

当控制面板加载 .dll(或 .cpl)文件时,它会调用 CPlApplet 函数来获取信息,例如文件所承载的控制面板项的数量,以及有关每个项的信息。

Shell32 在“托管” .cpl 文件时只是伪装成控制面板。

第二个参数在文档中称为“对话框编号”,在经典/所有控制面板视图中由图标表示。第三个参数由小程序本身解析以响应CPL_STARTWPARMS并且通常是在属性表对话框中指定特定选项卡的名称或编号。

连接选项卡记录为第 4 页,在 Vista 及更高版本上显示它的记录方式是

control.exe /name Microsoft.InternetOptions /page 4

推荐阅读