首页 > 解决方案 > 在 powershell 中打开一个程序并获取它的句柄

问题描述

我正在尝试制作一个可以打开 Firefox 并获取窗口句柄以供进一步使用的脚本。但我的问题是,打开的浏览器窗口与已经运行的其他窗口具有相同的“标题”,所以我无法通过它过滤句柄列表......有没有办法在启动时“标记”窗口或获取手柄通过其他方式?

标签: powershell

解决方案


使用带有switch 参数的Start-Process ,例如. 然后你会得到一些输出,如下所示。-PassThruStart-Process notepad.exe -PassThru

   Handles  NPM(K)    PM(K)      WS(K)     CPU(s)   Id  SI ProcessName
  --------  ------    -----      -----     ------   --  -- -----------
     236      14      3100      13072       0,03   5004  11 notepad

从链接的 Start-Process 帮助页面:

为 cmdlet 启动的每个进程返回一个进程对象。默认情况下,此 cmdlet 不会生成任何输出。

您可以使用Get-Process组合 Start-Process 以获取MainWindowHandle

$proc = Start-Process notepad.exe -PassThru
(Get-Process -Id $proc.Id).MainWindowHandle

推荐阅读