如何将外部应用程序的窗口状态设置为最大化

问题描述 投票:0回答:1

我正在尝试设置我开始使用的进程/应用程序(.exe)的窗口样式/状态

ProcessStartInfo startinfo = someStartInfo //This contains the path of the exe file.
Process process = new Process();

process.Start()

最大化,但并不适用于所有应用程序。

我尝试过设置

process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
,我还尝试过使用进程的主窗口句柄并使用 ShowWindow win api 将其设置为最大化,但这似乎并不适用于所有情况:

Process process = new Process();
process.StartInfo = processStartInfo;
process.EnableRaisingEvents = true;
process.Exited += (sender, e) =>
{
    RebootMachine();
};

process.Start();

if (process != null)
{
    // Maximize the window using ShowWindow
    ShowWindowAsync(process.MainWindowHandle, SC_MAXIMIZE);
}

process.WaitForExit();

我也尝试使用类似这样的 mainHandle 以相同的方式使用 SendMessage:

int WM_SIZE = 0x0005;
int SIZE_MAXIMIZED = 2;
SendMessage(process.MainWindowHandle, WM_SIZE, SIZE_MAXIMIZED, 0);

是否有适用于所有类型应用程序的通用解决方案,我当前正在尝试的应用程序是 calc.exe 应用程序。

当我调试过程变量的某些属性时,我也遇到了错误,如果有人可以提供一些关于该问题的见解,将会很有帮助

c# windows winapi window
1个回答
0
投票

是否有适用于所有类型应用程序的通用解决方案

一句话,不。

正如您已经发现的,不同的应用程序有不同的行为方式。

WindowStyle
只是一个请求,不是保证。
MainWindowHandle
是通过色调确定的,因此并不总是准确的。

因此,没有一种方法可以 100% 地适用于每种可能的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.