winapi - 控制面板小程序执行命令行语法
问题描述
我正在尝试通过命令行(运行对话框)调用 Internet 选项控制面板小程序。具体来说,“连接”选项卡。
我使用了以下语法:
rundll32.exe shell32.dll,Control_RunDLL INETCPL.CPL,,4
效果很好。我的问题有两个:
- 对于“Control_RunDLL”函数,它需要的第二个参数是什么?
(在我的情况下,在我找到的所有文档中,它都是 NULL 或空的)
(第一个参数是小程序名称,第三个是选项卡号)
- 我在哪里可以访问专门提到第二个参数的 Microsoft 文档?
解决方案
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
推荐阅读
- c# - 如何在现有工作簿中添加新工作表?
- javascript - 如何显示随机图像
- r - 遇到特殊字符时从 R 中的字符串中提取子字符串
- java - 将 XML 转换为 PDF
- jquery - 在 td 中附加 jquery 工具提示
- neo4j - 将属性重新组合到一个要返回的列表中
- reactjs - React - useState 的 setter 函数可以改变吗?
- java - org.springframework.web.servlet.PageNotFound - 不支持请求方法“POST”
- r - 使用 plot_grid (cowplot) 将 ggplot 和 base r 图与相同的 x 限制对齐
- php - getimagesize() 方法下的类型(索引 2)与图像类型有何不同?