启动 Internet Explorer
生成适配器 DLL 后,必须启动 Internet Explorer,以便它知道它正用于 DualEngine API,如下所示。
所需的命令行参数
以下命令行参数必须存在,才能以正确的方式启动 Internet Explorer 才能使用 DualEngine API。
DualEngineAdapter
-DualEngineAdapter=<full-path-to-adapter-dll>
指示要加载的 DualEngine API 适配器 DLL 的路径。 有关如何编写适配器 DLL 的信息,请参阅 创建 DualEngine 适配器插件 DLL。
DualEnginePipe
-DualEnginePipe=<pipe-string>
此参数提供一个字符串,该字符串最终通过 DualEngineInitialize
导出传递给适配器 DLL。 这可用于将管道名称传递给适配器代码,以便启动适配器与main应用程序之间的通信。 虽然 DualEnginePipe
是一个必需的命令行参数,但仅当它通过 DualEngineInitialize
传递给代码时才使用。 因此,尽管名称不一定是管道名称;它可以是所需的任意字符串。
APPID
APPID:<your-app-id>
此参数提供应用程序的应用程序用户模型 ID。 对于许多 Windows Shell 功能,此 ID 用于将 Internet Explorer 进程与应用程序相关联。 有关详细信息,请参阅 应用程序用户模型 ID。
可选命令行参数
以下命令行参数是可选的,用于调整双引擎 API 的 Internet Explorer 行为。
DualEngineVersion
-DualEngineVersion=<force_version_number>
如果可以,强制 Internet Explorer 实例化提供的版本的 DualEngine 对象。 这将阻止创建与提供的版本号不匹配的 DualEngine 对象,即使此版本的 Internet Explorer 支持此版本也是如此。
诊断启动问题
Internet Explorer 在启动时可能会失败的原因有很多。 如果在加载 DLL 之前或加载 DLL 时发生这种情况,则很难确定确切原因并将其传回应用程序。 因此,如果 Internet Explorer 在启动它以供 DualEngine 使用时无法启动,请通过检查 StartupFailurePoint
注册表值获取详细的错误处理信息。
StartupFailurePoint
HKCU\SOFTWARE\Microsoft\Internet Explorer\EdgeIntegration\StartupFailurePoint
包含一个 DWORD,指示在 DualEngine 启动路径中失败的位置。
DWORD 映射到以下原因:
DWORD | 原因 |
---|---|
0 | 无故障。 |
1 | 闲置。 |
2 | 闲置。 |
3 | 参数指定的 DualEngineVersion 版本为 0。 |
4 | 未能规范通过 DualEngineAdapter 传入的路径;请参阅 StartupFailureHresult 。 |
5 | 闲置。 |
6 | 闲置。 |
7 |
LoadLibrary 为提供的适配器 DLL 失败; StartupFailureHresult 请参阅 。 |
8 | 在适配器 DLL 中找不到 DualEngineInitialize 。 |
9 | 对 DualEngineInitialize 的调用失败;请参阅 StartupFailureHresult 。 |
10 | 未能设置提供的应用程序用户模型 ID; StartupFailureHresult 请参阅 。 |
11 | DLL 签名检查失败。 |
12 | 闲置。 |
13 | DLL 没有 IDENTITY LIMITEDACCESSFEATURE 资源。 |
StartupFailureHresult
HKCU\Software\Microsoft\Internet Explorer\EdgeIntegration\StartupFailureHresult
包含一个 DWORD,该 DWORD 是 来自 StartupFailurePoint
的失败 HRESULT(如果有 StartupFailureHresult
)。 若要查看给定原因是否提供 StartupFailureHresult
,请参阅上表。