如何启动Microsoft Edge最大化?

时间:2019-07-16 15:15:09

标签: c# cmd .net-core process microsoft-edge

我想使用给定的 url 启动Microsoft Edge,并希望它以最大化状态启动。

基于this article,我们知道Process.Start(url)在.netcore中不起作用。而且基于this question Process.Start($"microsoft-edge:{url}")并不总是有效。

基于this answer,我现在所要做的就是告诉cmd以给定的 url 开始microsoft-edge

Process.Start("cmd", $"/c start microsoft-edge:http://localhost");

(edit :)或者我可以使用shellExecute:

Process.Start("shell:Appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge");

指定参数时,谁总是给我System.ComponentModel.Win32Exception: 'The system cannot find the file specified.'

我的目标是找到一种方法来更改此行,以在启动时最大化Microsoft Edge。

尝试#1

Process.Start(new ProcessStartInfo("cmd", $"/c start microsoft-edge:http://localhost")
{
     WindowStyle = ProcessWindowStyle.Maximized,
     CreateNoWindow = true
});

很显然,在此处更改WindowStyle完全没有帮助,因为它将最大化cmd窗口,然后告知该窗口不显示。

尝试#2

Process.Start(new ProcessStartInfo("cmd", $"/c start microsoft-edge:http://localhost -maximized")
{
     CreateNoWindow = true
});

我也希望微软团队在他们全新的浏览器中加入一个简单的maximized参数。但这没用。

徒劳尝试#3

Process.Start(new ProcessStartInfo("cmd", $"/c start microsoft-edge:http://localhost")
{
     Arguments = "maximized",
     CreateNoWindow = true
});

这也行不通。


编辑:

尝试#4

基于this answer,可以通过其句柄向窗口发送信号:

private const int SW_MAXIMIZE = 3;
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
private static void Maximize()
{
    //Thread.Sleep(1000); it makes a difference to wait here for IE to open but not for Edge
    var items = Process.GetProcesses().Where(x=>x.ProcessName.Contains("MicrosoftEdge"));
    foreach (var item in items)
    {
        ShowWindow(item.MainWindowHandle, SW_MAXIMIZE);
    }
}

但是具有MicrosoftEdge名称的进程均未处理该信号。

尝试#5

使用ShellExecute:

Process.Start(@"shell:Appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge");

它会打开浏览器,但无法向其中发送 URL 参数


有什么想法如何在不使浏览器休眠1秒并发送击键的情况下“以最大状态打开Edge”吗?

我正在使用.netcore 3.0.0-preview6-27804-01和Windows10

0 个答案:

没有答案