get report of all open explorer windows

佐手、 提交于 2019-12-17 19:09:28

问题


I want to get a report of all open explorer windows titles and current paths. The current paths part of this is problem is answered here with C#, but I want this for powershell and am not sure how to adapt it. I am not sure how to bring out the window titles part of it.

Could someone please assist.


回答1:


Sounds to me like you're looking for something like this:

$app = New-Object -COM 'Shell.Application'
$app.Windows() | Select-Object LocationURL

AFAICS the window objects don't have a title property, but you can get that information from Get-Process via the window handle ID:

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}}



回答2:


Ansgar Wiechers' answer is helpful, but the title of File Explorer windows doesn't necessarily contain the full path of the location (folder) being displayed.

Somewhat obscurely, it is the .Document.Folder.Self.Path property of the window objects returned by the .Windows() method of the Shell.Application COM object that contains the full, local or UNC path.

Therefore, the following lists the full paths of all open Explorer windows:

(New-Object -ComObject 'Shell.Application').Windows() | ForEach-Object { 
  $_.Document.Folder.Self.Path 
}

Note: Special locations such as File Explorer's "Quick access" are represented by ::-prefixed GUIDs; e.g., ::{679F85CB-0220-4080-B29B-5540CC05AAB6}



来源:https://stackoverflow.com/questions/31347905/get-report-of-all-open-explorer-windows

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!