启动 VLC 最大化
Start VLC maximized
我有这个:
Process process = new Process();
string VLCPath = ConfigurationManager.AppSettings["VLCPath"];
process.StartInfo.FileName = VLCPath;
process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
process.Start();
但它不会启动 vlc 最大化,我做错了什么?
它一直以我上次关闭它的状态启动vlc..
您可以启动一个进程并礼貌地要求它 运行 最大化,但这并不意味着该进程必须听从您的请求。毕竟是第三方进程。如果他们的代码中有一些逻辑在关闭时存储最后的 window 状态并在打开时重新加载它,那么你就不走运了。
您可以将 Window 状态设置为与 Microsoft 一起最大化 ShowWindow function。
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还没有设置。
我有这个:
Process process = new Process();
string VLCPath = ConfigurationManager.AppSettings["VLCPath"];
process.StartInfo.FileName = VLCPath;
process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
process.Start();
但它不会启动 vlc 最大化,我做错了什么? 它一直以我上次关闭它的状态启动vlc..
您可以启动一个进程并礼貌地要求它 运行 最大化,但这并不意味着该进程必须听从您的请求。毕竟是第三方进程。如果他们的代码中有一些逻辑在关闭时存储最后的 window 状态并在打开时重新加载它,那么你就不走运了。
您可以将 Window 状态设置为与 Microsoft 一起最大化 ShowWindow function。
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还没有设置。