ProcessStartInfo.WindowsStyle é respeitado quando UseShellExecute é falso

Anteriormente, WindowStyle só era respeitado quando UseShellExecute era true. Com essa mudança, WindowStyle é respeitado mesmo quando UseShellExecute é false.

Comportamento anterior

Antes dessa alteração, o código a seguir iniciava o processo como se WindowStyle não tivesse sido especificado, porque UseShellExecute = false. Ou seja, a janela ficava visível, não oculta.

using System.Diagnostics;

ProcessStartInfo startInfo = new()
{
    FileName = @"C:\Windows\System32\notepad.exe",
    UseShellExecute = false,
    WindowStyle = ProcessWindowStyle.Hidden
};

var process = Process.Start(startInfo);
process!.WaitForExit();

Novo comportamento

A partir do .NET 8, WindowStyle é respeitado até mesmo pelos processos iniciados com UseShellExecute = false.

O código da seção Comportamento anterior inicia o processo com a janela oculta.

Versão introduzida

.NET 8 versão prévia 6

Tipo de alteração interruptiva

Esta é uma alteração comportamental.

Motivo da alteração

Alguns cenários exigem a alteração do estilo da janela do processo gerado (especialmente para ocultá-lo).

Essa alteração afeta o código que especificava WindowStyle mesmo quando ele não tinha suporte adequado. Por exemplo, agora a ordem de acionamento de eventos do WPF é alterada. Para atenuar a alteração interruptiva, não especifique WindowStyle em ProcessStartInfo.

APIs afetadas