从我的软件中,我希望能够直接访问几个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"
但我无法弄清楚这样做的一般方法。
在这种情况下,编程语言并不重要。欢迎您使用任何语言或命令提示符发布解决方案。请使用上面提到的对话框作为示例,但我希望找到一个通用的解决方案。感谢。
答案 0 :(得分:0)
并非所有对话框都可以按照您的建议以编程方式访问。某些对话框是自定义启动它们的应用程序,因此您将无法轻松访问它们。
我无法找到您主要感兴趣的“合并或删除网络位置”对话框的引用。
对于可以访问的那些,基本上有两种类型。
可以从常规Windows命令行调用的对话框。 {/ 3}}在评论中由kenny As mentioned捕获了许多已知的命令。
另一种方法是通过powershell启动对话框。 Powershell可以访问和启动.NET框架对话框。 serverfault question文章提供了通过powershell启动打开文件对话框的示例。
这篇文章非常值得一读,但这是神奇的片段。
Function Get-FileName($initialDirectory)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = "All files (*.*)| *.*"
$OpenFileDialog.ShowDialog() | Out-Null
$OpenFileDialog.filename
} #end function Get-FileName
# *** Entry Point to Script ***
Get-FileName -initialDirectory "c:\fso"
如果您想要打开文件对话框以外的其他内容,您可以将以下行更改为您需要的对话框。 $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog