我的问题是我想在窗口启动后通过批处理文件最小化窗口。
如何从cmd最小化应用程序窗口? pid是众所周知的。我的操作系统是win7。
答案 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?方法。