【发布时间】:2015-03-27 09:19:51
【问题描述】:
我的问题是我想在窗口启动后通过批处理文件最小化一个窗口。
如何从 cmd 最小化应用程序窗口? pid 是已知的。我的操作系统是win7。
【问题讨论】:
-
你是在批处理文件中打开它吗?如果是这样,请使用
Start /min {x}- "/min : 启动一个新的最小化命令提示符窗口。" -
不,我不是自己启动的。
我的问题是我想在窗口启动后通过批处理文件最小化一个窗口。
如何从 cmd 最小化应用程序窗口? pid 是已知的。我的操作系统是win7。
【问题讨论】:
Start /min {x} - "/min : 启动一个新的最小化命令提示符窗口。"
您可以使用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 没有任何关系,我只是该软件的最终用户。
【讨论】:
这是一个不需要额外软件的 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? 提供的方法。
【讨论】: