Старт VLC увеличен

У меня есть это:

                    Process process = new Process();
                    string VLCPath = ConfigurationManager.AppSettings["VLCPath"];
                    process.StartInfo.FileName = VLCPath;
                    process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
                    process.Start();

Но это не запустится VLC Maximized, что я делаю не так? Он продолжает запуск VLC в состоянии, когда я закрыл его в последний раз..

2 ответа

Решение

Вы можете установить максимальное состояние окна с помощью функции Showsindow от Microsoft.

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading.Tasks;

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

const int SW_MAXIMIZE = 3;

var process = new Process();
process.StartInfo.FileName = ConfigurationManager.AppSettings["VLCPath"];
process.Start();
process.WaitForInputIdle();

int count = 0;
while (process.MainWindowHandle == IntPtr.Zero && count < 1000)
{
    count++;
    Task.Delay(10);
}

if  (process.MainWindowHandle != IntPtr.Zero)
{ 
    ShowWindow(process.MainWindowHandle, SW_MAXIMIZE);
}

Вам понадобится цикл while, потому что WaitForInputIdle() ожидает только, пока процесс не запустится. Так что есть большая вероятность, что MainWindowHandle еще не установлен.

Вы можете запустить процесс и вежливо попросить его запустить его максимально, но это не значит, что процесс должен учитывать ваш запрос. В конце концов, это сторонний процесс. Если в их коде есть какая-то логика, которая сохраняет последнее состояние окна при закрытии и перезагружает его при открытии, то вам не повезло.

Другие вопросы по тегам