我有这个:
Process process = new Process();
string VLCPath = ConfigurationManager.AppSettings["VLCPath"];
process.StartInfo.FileName = VLCPath;
process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
process.Start();
但它不会启动vlc最大化,我做错了什么? 它始终在我最后一次关闭它的状态下启动vlc ..
答案 0 :(得分:1)
您可以使用微软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很可能尚未设置。
答案 1 :(得分:0)
您可以启动一个流程,并礼貌地询问其运行最大化,但这并不意味着流程必须注意您的请求。毕竟,它是第三方流程。如果他们的代码中有一些逻辑将最后一个窗口状态存储在关闭状态并在打开时重新加载它,那么你就不幸了。