相关疑难解决方法(0)

在所有Open Explorer Windows的ListBox中获取路径

我想列出所有打开的Windows资源管理器窗口及其活动路径ListBox.ListBox如果浏览器窗口导航到其他路径,应用程序应刷新.

例如,两个浏览器窗口是打开的.一个导航到C:\Windows另一个导航到另一个导航D:\Stuff.当应用程序运行它,它增加C:\WindowsD:\StuffListBox.然后,用户导航到其中一个打开的资源管理器窗口中的其他文件夹C:\Windows\system32.然后应用程序应刷新ListBox和列表C:\Windows\system32,D:\Stuff而不是.

我对如何做到这一点没有任何想法.任何指针将不胜感激.

.net c# vb.net vbscript windows-explorer

9
推荐指数
1
解决办法
4004
查看次数

列出所有打开的资源管理器窗口的 Powershell 脚本

这个问题显示了一个 Powershell 脚本来生成一个打开的文件资源管理器窗口及其路径的列表。我的目标是捕获当前打开的一组资源管理器窗口,并使用以下命令写出一个 CMD 文件:C:\WINDOWS\explorer.exe /e, "C:\open\this\folder"

所以我想以普通路径表示法获得完整路径和文件夹名称。这是在资源管理器 Windows 的标题栏中显示的内容:“C:\open\this\Favorite folder”

建议的代码是:

function Get-WindowTitle($handle) {
  Get-Process |
    Where-Object { $_.MainWindowHandle -eq $handle } |
    Select-Object -Expand MainWindowTitle
}

$app = New-Object -COM 'Shell.Application'
$app.Windows() |
  Select-Object LocationURL, @{n='Title';e={Get-WindowTitle $_.HWND}}
Run Code Online (Sandbox Code Playgroud)

如上所示,LocationURL 以转义 URL 样式提供完整路径:

file:///C:/open/this/Favorite%20%folder"
Run Code Online (Sandbox Code Playgroud)

@{n='Title';e={Get-WindowTitle $_.HWND}} 组件生成一个列“Title”,该列被截断为 5 个字符:

C:\...
Run Code Online (Sandbox Code Playgroud)

一个资源管理器窗口的完整输出如下所示:

LocationURL                                                 Title
-----------                                                 -----
file:///C:/open/this/Favorite%20%folder                     C:...
Run Code Online (Sandbox Code Playgroud)

我发现我可以通过用许多空格填充字符串 'Title' 来避免截断。该字符串的宽度似乎决定了输出的最大宽度。尽管如此,我观察到只有大约 60% 的打开的资源管理器窗口列出了路径。其余的只是一个空行。

我尝试了“$app.Windows() | Select-Object LocationName”,但输出仅包含资源管理器文件夹名称,而不包含资源管理器标题中显示的完整路径和文件夹。

另一个谜团是为什么脚本运行如此缓慢。如果我打开了 10 个资源管理器窗口,脚本将运行 30 秒,每条路径大约需要 3 秒。

对于这个脚本:

function Get-WindowTitle($handle) {
  Get-Process | …
Run Code Online (Sandbox Code Playgroud)

windows powershell explorer

4
推荐指数
1
解决办法
1405
查看次数

标签 统计

.net ×1

c# ×1

explorer ×1

powershell ×1

vb.net ×1

vbscript ×1

windows ×1

windows-explorer ×1