我想使用给定的 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。
Process.Start(new ProcessStartInfo("cmd", $"/c start microsoft-edge:http://localhost")
{
WindowStyle = ProcessWindowStyle.Maximized,
CreateNoWindow = true
});
很显然,在此处更改WindowStyle
完全没有帮助,因为它将最大化cmd
窗口,然后告知该窗口不显示。
Process.Start(new ProcessStartInfo("cmd", $"/c start microsoft-edge:http://localhost -maximized")
{
CreateNoWindow = true
});
我也希望微软团队在他们全新的浏览器中加入一个简单的maximized
参数。但这没用。
Process.Start(new ProcessStartInfo("cmd", $"/c start microsoft-edge:http://localhost")
{
Arguments = "maximized",
CreateNoWindow = true
});
这也行不通。
编辑:
基于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名称的进程均未处理该信号。
使用ShellExecute:
Process.Start(@"shell:Appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge");
它会打开浏览器,但无法向其中发送 URL 和参数。
有什么想法如何在不使浏览器休眠1秒并发送击键的情况下“以最大状态打开Edge”吗?
我正在使用.netcore 3.0.0-preview6-27804-01
和Windows10