【问题标题】:Minimize a window via its pid通过 pid 最小化窗口
【发布时间】:2015-03-27 09:19:51
【问题描述】:

我的问题是我想在窗口启动后通过批处理文件最小化一个窗口。

如何从 cmd 最小化应用程序窗口? pid 是已知的。我的操作系统是win7。

【问题讨论】:

  • 你是在批处理文件中打开它吗?如果是这样,请使用 Start /min {x} - "/min : 启动一个新的最小化命令提示符窗口。"
  • 不,我不是自己启动的。

标签: windows cmd


【解决方案1】:

您可以使用NirCmd

nircmd win min process /pid

其中pid 是要最小化的窗口的进程ID。


来源NirCmd Command Reference - win

win [action] [find] [window to find] [Additional Parameters]

...

[action]:你要对指定窗口做的动作:

...

min:最小化指定窗口。

...

[find]: 寻找窗口的方法

...

process:通过指定进程 ID(例如:/3412)或进程名称(例如:firefox.exe)来查找所需的窗口。


免责声明:我与NirSoft 没有任何关系,我只是该软件的最终用户。

【讨论】:

    【解决方案2】:

    这是一个不需要额外软件的 Batch/VBScript 解决方案:

       @echo Off
       if \{%1\}==\{\} @echo Syntax: MinimizePID PID & goto :EOF
       if exist "%TEMP%\MinimizePID.vbs" del /f %TEMP%\MinimizePID.vbs
       @echo dim  objArguments, pid>"%TEMP%\MinimizePID.vbs"
       @echo Set WshShell = CreateObject("WScript.Shell")>>"%TEMP%\MinimizePID.vbs"
       @echo Set objArguments = Wscript.Arguments>>"%TEMP%\MinimizePID.vbs"
       @echo pid = objArguments(0)>>"%TEMP%\MinimizePID.vbs"
       @echo WshShell.AppActivate pid>>"%TEMP%\MinimizePID.vbs"
       @set "line=%%+ n"
       setlocal EnableDelayedExpansion
       (
         @echo WshShell.SendKeys "!line!">>"%TEMP%\MinimizePID.vbs"
       )
       :doit
       cscript //nologo "%TEMP%\MinimizePID.vbs" %1
    

    假设 pid.txt 具有您要最小化其窗口的进程的 PID。将此批处理文件另存为 MinimizePID.bat 并以这种方式调用它:

    for /f %i in (pid.txt) do call MinimizePID %I
    

    这里唯一棘手的部分是让 SendKeys 工作以发送最小化窗口命令。您可能可以将其编码为纯 VBScript。另请注意,这仅适用于美国 Windows - 本地化版本中的快捷键不同。

    感谢How can I maximize, restore, or minimize a window with a vb script? 提供的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多