Start-Process -WindowStyle Maximized 不最大化窗口

Start-Process -WindowStyle Maximized doesn't maximize window

提问人:Ooker 提问时间:11/22/2018 最后编辑:Ooker 更新时间:8/14/2021 访问量:5393

问:

似乎:

Start-Process -WindowStyle Maximized 'C:\Program Files\Microsoft Office\root\Office16\ONENOTE.EXE'

以窗口样式启动 OneNote,而不考虑参数为 或 :MaximizedMinimized

  • 如果最后一次是正常或最大化,那么它将正常或最大化打开
  • 如果最后一次最小化,那么它将正常打开

你知道为什么吗?我的 Windows 7 32 位计算机上有版本 6。


从 Windows 文档:Start-Process

PowerShell Windows-7 32 位

评论

1赞 mklement0 11/22/2018
不幸的是,不能保证目标程序将遵循指定的窗口样式,这似乎就是这里发生的事情。
0赞 Ooker 11/22/2018
@OwainEsau谢谢。你知道它为什么有效吗?我访问注册表并看到值已经为 1,但正常方法仍然正常打开它。那么最小化呢?
1赞 Ooker 11/22/2018
@OwainEsau我认为你可以把它作为一个答案。但是,是的,我认为这仅适用于某些程序,因为有些程序没有寄存器密钥
1赞 mklement0 11/22/2018
@Ooker:我很高兴欧文想出了一个解决方案。至于一般地找出给定的应用程序是否遵循所请求的窗口样式:我认为你不会发现它有记录,所以试错是找出答案的唯一方法。
2赞 mklement0 11/22/2018
@Ooker:至于原因:对于应用程序来说,允许您持久地配置所需的启动窗口状态或自动还原上一个会话的窗口状态很有帮助。问题在于,应用程序本身不会知道通过 请求显式启动窗口状态,因此它无法知道何时覆盖。简而言之:您需要使用相应应用程序的自定义机制,就像在这种情况下一样 - 不幸的是,没有标准化的方法。可悲的是,尽管没有提供自定义机制,但有些应用程序只是忽略了请求的状态。Start-Process -WindowStyle

答:

1赞 Owain Esau 11/22/2018 #1

正如 mklement0 所述,不能保证程序将遵循请求的窗口样式。

在某些情况下,您可以通过编辑相关的注册表项来解决此问题。在这种情况下:

$registryPath = "HKCU:\Software\Microsoft\Office\16.0\OneNote\General\"; 
Set-ItemProperty -path $registryPath -name "WindowMode" -Value 1; 
Start-Process 'C:\Program Files (x86)\Microsoft Office\root\Office16\ONENOTE.EXE'

评论

0赞 Ooker 11/23/2018
我打开一个问题以查找其他解决方法,如下所示:上次打开的窗口样式设置可以存储在哪里?
3赞 youzer 8/14/2021 #2

仅仅将值 Maximized 传递给 -WindowStyle 参数是不够的。您需要使用完全限定的枚举字段或值。

Start-Process "C:\Program Files\Microsoft Office\root\Office16\ONENOTE.EXE" -WindowStyle ([System.Diagnostics.ProcessWindowStyle]::Maximized)

Start-Process "C:\Program Files\Microsoft Office\root\Office16\ONENOTE.EXE" -ArgumentList ("-NoExit") -WindowStyle (3)

ProcessWindowSyle 枚举定义如下: https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.processwindowstyle?view=netframework-1.1