【问题标题】:How can I open a local HTML file in Microsoft Edge browser?如何在 Microsoft Edge 浏览器中打开本地 HTML 文件?
【发布时间】:2016-04-20 07:01:01
【问题描述】:

自古以来,如果您运行网络浏览器可执行文件,大多数网络浏览器都能够打开本地文件,例如只需执行iexplore.exe file:/c:/temp/file 或通过IShellDocView 接口。我正在尝试在我自己的程序中使用 Microsoft Edge 在 Windows 10 中执行此操作,但我不知道如何执行此操作。

可执行文件似乎完全没有记录,不响应 /?或 /help,并且无论我传递给它什么都会崩溃,并且鉴于路径似乎可能会改变,可能不是直接调用此可执行文件的正确方法:

  C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe  <whatever>

Windows 中是否有可以调用的 API 来打开 Edge,即使它不是当前的默认浏览器?

如果它是默认浏览器,我相信我可以通过 Win32 shell-API ShellExecute 做我想做的事。即使我已将其他浏览器设置为默认浏览器,我也希望能够在 Edge 中启动某些东西,以实现某些 Web 测试任务的自动化。

是否有适用于 Edge 的编程接口或 API?出于这个问题的目的,假设我想用 C 编写这个,但是无论我使用什么语言,这都应该是相同的 API,所以我没有标记这个问题 C。

如果无法以编程方式执行此操作,是否可以使用命令行参数并将其传递给 MicrosoftEdge 或 MicrosoftEdgeCP 可执行文件?

【问题讨论】:

  • 我有个模糊的想法,也许你必须使用 LaunchWinApp.exe 来启动 Edge,尽管它看起来像一个 Windows 桌面应用程序,但它实际上更像是一个 Store 应用程序。
  • 在C++中找到的一些示例代码github.com/MicrosoftEdge/MicrosoftEdgeLauncher
  • MS 现已更新。请参阅下面的最新答案。
  • @Timo,是的,我在这个问题底部的简单解决方案仍然有效。有关更多提示,请参阅下面的评论。
  • @www-0av-Com 现在可以使用了,另外还有一个:&amp; "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" file:///C:\Users\an-w-koernet\Documents\1.pdf -- 绝对路径,而不是相对路径!

标签: windows winapi windows-10 microsoft-edge


【解决方案1】:

2020 新版:MS 已对其进行了更新,现在可以正常使用。 例如:在我的 w10 64b PC 上在 cmd 提示符下测试

"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
file:///C:/MyApplications/MyTestApp.htm

..这一切都在一条线上,中间有简单的空格。

我不是 MS 的粉丝,但这是他们的(慢)Egde Link 最新版本。

【讨论】:

  • @Timo(在较早的一个答案中回复我)说它在 powershell 中不起作用,但是是的,正如您在 cmd 提示符(或批处理)中所说的那样。今天刚刚在Edge最近大更新后再次测试,依然​​是100%。我不太了解powershell,但我确实知道“炮击”操作系统充满了来自任何语言的旅行和陷阱——事实上,如果powershell不支持等价物,我会感到非常惊讶,只要你适应它。如果您的 html 路径中有空格,请不要忘记用引号将其括起来(也无需将空格转换为 %20 - 已测试)。
  • 与这个答案类似,在命令提示符下对我有用的是以下一行:start msedge "c:\path\to\html\file.html"
  • 请注意,这仅适用于基于 Chromium 的新 Edge(绿蓝色徽标)。它不适用于传统的“现代”Edge(深蓝色徽标)。
【解决方案2】:

微软引入了App Aliases,如果你检查你的AppData文件夹,它会自动包含在Windows路径中,你会发现MicrosoftEdge.exe

 Directory of C:\Users\username\AppData\Local\Microsoft\WindowsApps

06/25/2019  04:13 PM    <DIR>          Backup
10/08/2019  03:35 PM                 0 dbgsrv32.exe
10/08/2019  03:35 PM                 0 dbgsrv64.exe
11/07/2019  01:40 PM    <DIR>          Microsoft.MicrosoftEdge_8wekyb3d8bbwe
10/08/2019  03:35 PM    <DIR>          Microsoft.WinDbg_8wekyb3d8bbwe
11/07/2019  01:40 PM                 0 MicrosoftEdge.exe
10/08/2019  03:35 PM                 0 WinDbgX.exe
               4 File(s)              0 bytes
               3 Dir(s)  119,020,060,672 bytes free

不幸的是,与正常工作的 WinDbgX 不同,该别名似乎无法打开 HTML 文件或响应任何 CLI。

所以一旦微软为 Edge 实现了 shell CLI,那将是正确的调用方法。

一种解决方法,是在 URL 栏中键入 file:// URI,如下所示(注意:需要 /):

file:///D:/random/path/file.html

【讨论】:

    【解决方案3】:

    以下适用于本地文件,还接受 URI 中的查询 (?) 和片段 (#)。

    本地 HTML 文件上的 WinAPI / ShellAPI 示例:

    ShellExecute(
        NULL,
        NULL,
        _T("shell:Appsfolder\\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge"),
        _T("file:///c:/temp/test.html?page=1#anchor-1"),
        NULL,
        SW_SHOWNORMAL);
    

    【讨论】:

    • 截至 2021 年 3 月,这是我在最新版 Windows 10 上使用旧版 Edge 的唯一答案。谢谢!
    【解决方案4】:

    这适用于我的系统:

    创建共享并授予自己访问权限

    在 Microsoft Edge 中打开,例如: file:////bookmark.html

    您可以通过 hostname Powershell 命令获取主机名以及其他方式,您可以使用文件资源管理器在您的计算机上打开“网络”查看您共享的所有目录,您应该会看到您已建立的所有共享目录

    不一定是一个非常令人满意的答案,但可以满足我的需要。

    【讨论】:

    • 出于某种奇怪的原因,帖子只是吃了我试图指定的路径的一部分......
    • "file:////"
    【解决方案5】:

    例如,使用 Edge 打开 PDF 的方法如下。

    在类的顶部添加以下标题:

    [DllImport("Shell32.dll")]
    public static extern int ShellExecuteA(IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirecotry, int nShowCmd);
    

    这是一个如何拨打电话的示例。

    ShellExecuteA(System.IntPtr.Zero, "open", @"shell:Appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge", "C:\MyFile.pdf", null, 10);
    

    我认为这也适用于其他类型的文件。

    【讨论】:

      【解决方案6】:

      从https://github.com/MicrosoftEdge/edge-launcher获取工具

      MicrosoftEdgeLauncher file:///C:/Users/me/Documents/homepage.html

      【讨论】:

      • 不幸的是,问题不是在地址栏中输入什么,而是如何启动可执行文件以及给定的本地页面资源。
      • 如果您从 github.com/MicrosoftEdge/MicrosoftEdgeLauncher 获取该工具,您现在似乎可以运行 MicrosoftEdgeLauncher.exe file:///C:/something/index.html
      【解决方案7】:

      目前不支持此功能,但团队正在评估它作为一个选项。目前,在 Edge 中打开资源的最简单方法是使用 microsoft-edge: 协议处理程序。例如,您可以运行 microsoft-edge:http://stackoverflow.com 以在 Edge 中打开 Stack Overflow。

      【讨论】:

      • 这对于用户想要选择的场景是有意义的。一些用户,尤其是开发人员,会希望使用特定工具呈现特定文件,以便他们可以检查该文件是否在该浏览器中呈现。那里的所有其他浏览器都使这变得非常容易。启动可执行文件,以file:/c:/path/to/file.html 语法提供url。完成
      • 理解并同意。我现在正在和我们的一些工程师讨论一个话题。
      • 这太荒谬了! Edge 无法通过命令提示符打开本地文件?看来一定有办法。您可以通过右键单击本地文件并选择使用 Edge 打开来打开一个... 那么它是如何工作的呢?
      • 以防万一知道,以下内容用于通过 Windows API ShellExecute 处理本地文件:microsoft-edge:file:///c:/path/to/page.htm - 但是在最近的 Windows 10 更新之后,它不再适用于本地文件,仅适用于http/https。在那之前,我在一个商业程序中成功地使用了这种方法。我提到它是因为可能已经存在必要的功能,但可能需要 Edge 团队再次启用。
      • 我认为 Edge 团队已将一般消费者安全放在首位,以至于让 Edge 浏览器无法用于开发人员的工作流程。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 2021-12-09
      • 2015-04-08
      • 1970-01-01
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多