如何从PowerShell GUI获取文件名
我正在制作一个通过RegEdit改变各种图标的程序,我想一个很好的GUI,人们可以在其中选择他们想要改变文件的.ico文件,这将是一个很好的选择。唯一的问题是,我对PowerShell一无所知,但操作RegEdit要比使用Python容易得多。我对PowerShell GUI的了解更少如何从PowerShell GUI获取文件名,powershell,user-interface,Powershell,User Interface,我正在制作一个通过RegEdit改变各种图标的程序,我想一个很好的GUI,人们可以在其中选择他们想要改变文件的.ico文件,这将是一个很好的选择。唯一的问题是,我对PowerShell一无所知,但操作RegEdit要比使用Python容易得多。我对PowerShell GUI的了解更少 Add-Type -AssemblyName System.Windows.Forms $FileBrowser = New-Object System.Windows.Forms.OpenFileDialog
Add-Type -AssemblyName System.Windows.Forms
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{
InitialDirectory = [Environment]::GetFolderPath('Desktop')
Filter = 'Icons (*.ico)|*.ico'
}
$result = $FileBrowser.ShowDialog()
<#What do here?#>
添加类型-AssemblyName System.Windows.Forms
$FileBrowser=新对象System.Windows.Forms.OpenFileDialog-Property@{
InitialDirectory=[Environment]::GetFolderPath('Desktop')
过滤器='图标(*.ico)|*.ico'
}
$result=$FileBrowser.ShowDialog()
最后一行,即注释所在的位置,如何获取包含我刚才搜索的文件名的字符串或任何数据类型?对于任何好奇的人来说,
$FileBrowser
只是提供了一个默认的Windows文件搜索窗口,我刚刚对其设置了.ico
限制。我叫什么方法?我读了一些关于DialogResult
的文章,但我不明白该方法或小程序是如何与showlealog
联系在一起的,也不明白它是如何用来获取文件名的(如果这是正确的解决方案)$Result | Get Member
这将为您指明道路。
返回一个枚举值,告诉您用户是确认($FileBrowser.ShowDialog()
)还是取消(OK
)对话框Cancel
- 请参见、和枚举
- 如果用户确认,
包含所选文件的完整路径$FileBrowser.FileName
'OK'
与[System.Windows.Forms.DialogResult]:OK
至于发现涉及的类型及其成员s:
- 可以对变量使用cmdlet来发现其值的.NET类型和该类型的成员
- 要获取有关给定.NET类型的更多信息,您可以简单地用谷歌搜索它,或按如下方式以编程方式构造和打开URL:
包含一个名为
Show TypeHelp
的便利函数,它包装了上述内容。很高兴听到这个消息,@KirbyForsberg;我的荣幸。如果你来自其他shell,肯定会有学习的努力,但随着时间的推移,这种努力是值得的。请不要忘记回答(单击大复选标记)。
Add-Type -AssemblyName System.Windows.Forms
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog -Property @{
InitialDirectory = [Environment]::GetFolderPath('Desktop')
Filter = 'Icons (*.ico)|*.ico'
}
if ('OK' -eq $FileBrowser.ShowDialog()) {
"User chose: $($FileBrowser.FileName)"
}
else {
'User canceled the dialog.'
}
$result = $FileBrowser.ShowDialog()
# Get the full name of the type of the value stored in $result
$fullTypeName = $result.GetType().FullName
# Assuming the type is one that comes with .NET,
# look up its documentation online (using the default browser).
Start-Process "https://docs.microsoft.com/en-us/dotnet/api/$fullTypeName"