powershell - 在powershell中操作进程的主窗口

标签 powershell process window

我一直在尝试为自己创建一个脚本,该脚本将允许我以非侵入的方式同时打开多个程序。例如,Steam 等一个程序并不总是需要在我启动计算机时启动,因此我想将其与 origin/gtalk/任何将打开程序的程序一起编写脚本,但关闭特定程序的主窗口(steam/origin,我只是使用开始菜单或任务栏来启动游戏)。

现在进行我的研究,这样做似乎并不太复杂。

获取进程 Steam ,来源|其中 {$_.closeMainWindow()}

我对此表示同意,我可以让它运行多次,但我想我会尝试让它变得更奇特一些。对于 steam 和 Origin,有几个窗口被视为命令关闭的主标题窗口。然而,该命令一次只能关闭一个,因此必须运行多次才能关闭它们。我的想法是创建一个具有 while 运算符的函数。

这不太有效,因为我对 powershell 的所有概念/功能都很陌生,所以我不太知道是否有另一种更简单的方法来做到这一点。我什至不确定这是否是一个有效的 while 循环,考虑到条件没有与任何内容进行比较,我尝试将其设置为 -eq $true 像这样 while ((get-process steam, origin | where {$_.mainWindowTitle}) -eq $true) 但出现错误。

function test {
    while (get-process steam, origin | where {$_.mainWindowTitle}) {
        $_.closeMainWindow;
    }
}

传递到第三行的输出是:

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName                 
-------  ------    -----      ----- -----   ------     -- -----------                 
   1161      97    97776     123000   334     3.62   4468 Origin                      
    570      73   175252      58392   484    10.65   1484 Steam  

寻求帮助有点愚蠢,这不是一个非常有值(value)的脚本,但我认为它很酷:P

最佳答案

我只是不明白为什么你不简单地使用以下命令来停止该过程:

Get-Process steam,origin -ErrorAction silentlycontinue | stop-process

但是你可以使用这个:

while (($p=Get-Process steam,origin -ErrorAction silentlycontinue) -ne $null)
{
  $p | % {$_.CloseMainWindow()}
}

关于powershell - 在powershell中操作进程的主窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9815553/

相关文章:

.net - 相当于 C#'s "在 powershell 中使用“关键字?

c# - 在没有路径位置的情况下启动.exe文件c#

JavaScript 丢失 "this"具有私有(private)/公共(public)属性的对象引用

arrays - 随机化 Powershell 数组中的元素列表

Powershell:哈希表内容未显示在函数中

android - Messenger Service 可以用于跨应用程序 IPC 吗?

Javascript:在同一窗口中打开新页面

linux - emacs24 在启动时丢失窗口框架

powershell - 如何使用Powershell将存储过程输出参数转换为变量?

c++ - 在 winapi 中以尽可能低的权限运行进程