0

我有这个:

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

但它不会启动 vlc 最大化,我做错了什么?它一直在我上次关闭它的状态下启动 vlc..

4

2 回答 2

1

您可以使用 Microsoft 的ShowWindow 功能将 Window 状态设置为最大化。

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。

于 2017-03-22T12:14:08.987 回答
0

您可以启动一个进程并礼貌地要求它最大化运行,但这并不意味着该进程必须注意您的请求。毕竟,这是一个第三方流程。如果他们的代码中有一些逻辑可以在关闭时存储最后一个窗口状态并在打开时重新加载它,那么你就不走运了。

于 2017-03-22T11:20:44.097 回答