【发布时间】:2025-11-22 21:00:01
【问题描述】:
我希望能够通过我的软件直接访问多个 Windows 对话框。基本上是一些我不时使用的对话框的快捷方式,否则很难访问。
一个例子是“合并或删除网络位置”对话框 (screenshot)。
使用 Process Explorer 我发现了有关该对话框的以下信息:
C:\Windows\System32\netprof.dll
C:\Windows\system32\DllHost.exe /Processid:{44C39C96-0167-478F-B68D-783294A2545D}
不幸的是,我不知道如何处理它。 对于其他对话框/位置,有这样的方法:
Trash:
%windir%\explorer.exe /n,::{645FF040-5081-101B-9F08-00AA002F954E}
Keyboard:
%systemroot%\system32\control.exe /name Microsoft.RegionalAndLanguageOptions /page /p:"keyboard"
但我想不出一个通用的方法来做到这一点。
在这种情况下,编程语言无关紧要。欢迎您以任何语言或通过命令提示符发布解决方案。请以提到的对话框为例,但我希望找到一个通用的解决方案。谢谢。
【问题讨论】:
-
有用的相关项目在这里serverfault.com/questions/3780/…
-
没有通用的解决方案,标准 Windows 组件使用的无数对话框可以通过多种不同的方式启动。有些可能没有实用的方法在使用它们的组件之外启动。您提到的特定对话框看起来像是在 COM 服务器中运行。您可以相对轻松地启动服务器,但这可能不会导致显示对话框。没有一般的方法可以要求 COM 服务器显示特定的对话框,并且这个特定的 COM 服务器可能无法提供任何方法来告诉它显示您想要的对话框。
-
“没有一般的方法可以让 COM 服务器显示特定的对话框” - 为什么不呢?如果另一个 Windows 对话框中的链接可以启动它,为什么我的程序不能这样做?该特定对话框不依赖于先前对话框中的任何参数。它是独立的。一定有办法找出它最初是如何启动并复制该操作的!?
-
没有 API。它们是内部的,旨在由操作系统调用,而不是由您的程序调用。这基本上相当于我问如何让我的应用程序从 your 应用程序打开对话框!
标签: windows command-line command-prompt shortcut