shell Cmd start命令忽略/min开关

hm2xizp9  于 2022-11-30  发布在  Shell
关注(0)|答案(3)|浏览(930)

我运行的是Windows 2012,每当我在控制台中键入此:

start /min calc.exe

它会打开应用程序,但不会最小化到任务栏。
在Windonws 8.1上,它实际上确实最小化了它。
知道为什么吗?

**编辑:**我想具体说明这个问题,因为它越来越混乱。

上面 * calc.exe * 只是演示/min开关不起作用的一个示例。
我真正的目标是通过命令行在Win 2012 R2中启动最小化的 PythonChrome
当使用/min开关时,它们都在8.1中最小化启动。

k5ifujac

k5ifujac1#

start /min file.exe使用CreateProcess API调用来启动进程,lpStartupInfo参数指向STARTUPINFO结构内的指定信息。
在这个结构中,有一个wShowWindow成员,用来指示如何显示已启动进程的窗口。

w显示窗口

如果dwFlags指定STARTF_USESHOWWINDOW,则此成员可以是可在ShowWindow函数的 nCmdShow 参数中指定的任何值(SW_SHOWDEFAULT除外)。否则,将忽略此成员。
对于GUI进程,第一次调用ShowWindow时,将忽略其 nCmdShow 参数wShowWindow指定默认值。在对ShowWindow的后续调用中,如果ShowWindow的 nCmdShow 参数设置为SW_SHOWDEFAULT,则将使用wShowWindow成员
也就是说,你依赖于启动的进程如何处理它的窗口管理。在start命令中你不能做任何事情来 * 确保 * 新窗口将被最小化。

注意start命令在可执行文件中使用CreateProcess,但不同的参数(文档、URL ...)会导致使用不同的API(例如ShellExecuteShellExecuteEx),但在使用不同的路径后,您会遇到相同的问题。
注2:正如已经评论过的,在某些情况下(我的例子,windows 10,calc.exe),你启动一个进程,它启动另一个进程。你没有控制第二个启动的进程。

nimxete2

nimxete22#

我无法在命令提示符中执行此操作,但可以在PowerShell中执行此操作。由于您使用的是2012,请从服务器管理器安装PowerShell ISE|管理|添加角色和功能。
首先我从这个页面Set Window Style function创建了函数
然后我写了这些行(Python在你的电脑上可能有不同的命名)

(Get-Process -Name Python).MainWindowHandle | foreach { Set-WindowStyle MINIMIZE $_ }
 (Get-Process -Name Chrome).MainWindowHandle | foreach { Set-WindowStyle MINIMIZE $_ }

最后,我将其保存为脚本并粘贴到桌面上。

zwghvu4y

zwghvu4y3#

你没有写,你不想使用任何工具,所以这里有一个,可以解决你的问题。不需要安装,它是从一个值得信赖的分销商(Nirsoft),所以你应该试试。链接:http://www.nirsoft.net/utils/advanced_run.html
首先,您必须通过gui创建一个配置文件,然后您可以通过调用AdvancedRun. exe/run config.cfg启动该问题
希望对你有帮助!

相关问题