通过其pid最小化窗口

时间:2015-03-27 09:19:52

标签: windows cmd

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

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

2 个答案:

答案 0 :(得分: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无任何关联,我只是该软件的最终用户。

答案 1 :(得分:1)

这是一个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工作以发送Minimize窗口命令。您可能可以将其编码为纯VBScript。另请注意,这仅适用于美国Windows - 本地化版本中的关键快捷方式不同。

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