2015-07-10 44 views
1

我想获取所有打开的资源管理器窗口标题和当前路径的报告。当前路径的一部分是问题,用C#回答here,但是我想要这个用于powershell,我不知道如何适应它。 我不确定如何显示窗口标题的一部分。获取所有打开的资源管理器窗口的报告

有人请协助。

+0

你有没有尝试过PowerShell的任何东西?获取任何特定的错误? – MichaelChirico

+0

我还没有尝试过任何东西。主要是因为我不知道如何在PowerShell中使用ShellWindowClass。由于Windows资源管理器嵌入了其所有进程,因此无法使用get-process来执行任何操作,如get-process | echo $ _。mainWindowTitle – CoderWolf

+0

根据Ansgar的回答:'LocationName'是包含窗口名称的属性,如任务栏中所用。使用他的答案,你可以看到'LocationName': '$ app.Windows()| Select-Object LocationURL,LocationName' ...''LocationName'对于本地文件夹是可以工作的。 *(远程文件夹还包含括号中的unc名称(\\ – MikeD

回答

2

听起来好像你正在寻找这样的事情:

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

AFAICS窗口对象没有标题属性,但你可以通过窗口句柄得到Get-Process信息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}} 
+0

)这是该过程的另一个步骤。如果我正确推断,这给了我等式的ShellWindowsClass部分,但我也想获取应用程序标题栏从它 即 标题栏LocationURL C:\ DIR1文件:// C:/ DIR1 C:\ DIR2文件:// C:/ DIR2 旁注:从该区域进行测试LOCATIONNAME,反倒增加它到我的最终选择,因为一些地点可能没有LocationURL(如设备和打印机等..) (对不起,经过多次编辑,我似乎不能得到换行符工作。) – CoderWolf

+0

Windows资源管理器必须有信息的地方,因为它显示在任务栏中,除非他们只是在位置URL格式术语之间进行转换,而不使用较旧的标准DOS风格命名法。 PS对不起,延误了几天。 – CoderWolf

+0

猜想我会解决我现在的一半, – CoderWolf

相关问题