【问题标题】:Start VLC maximized启动 VLC 最大化
【发布时间】:2017-03-22 11:17:57
【问题描述】:

我有这个:

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

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

【问题讨论】:

    标签: c# process window-style


    【解决方案1】:

    您可以使用 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 还没有设置。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 嗯,有道理,现在我将 vlc 界面更改为全屏。所以现在它总是以全屏方式开始。但是对于记事本它可以工作,所以我认为它可以适用于每个进程......
      猜你喜欢
      • 2013-08-27
      • 2021-01-14
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 2011-06-10
      • 1970-01-01
      相关资源
      最近更新 更多