小编Mat*_*att的帖子

如何在 TWebBrowser IDispatchEvent 中获取自定义事件参数

我试图在 Javascript 和我的TWebBrowser. 在我的第一次迭代中,我能够注册属性更改事件,以便当标记更改时,Delphi 会获取更改,然后读取触发更改的标记的值。这样我们就可以让 Javascript 设置一个隐藏标签,Delphi 将接收更改,然后 Delphi 将读取隐藏标签以获取值。这工作正常,但感觉有点hacky。

在第二次迭代中,我尝试触发 Javascript 中引发的自定义事件。我能够使其正常工作,但我找不到一种方法来获取传递给自定义事件的参数。这是我创建的代码IDispatch:

constructor TWebBrowserEvent.Create(const OnEvent: TCallback);
begin
   inherited Create;
   FOnEvent := OnEvent;
end;

function TWebBrowserEvent.GetIDsOfNames(const IID: TGUID; Names: Pointer; NameCount, LocaleID: Integer; DispIDs: Pointer): HResult;
begin
   Result := E_NOTIMPL;
end;

function TWebBrowserEvent.GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult;
begin
   Result := E_NOTIMPL;
end;

function TWebBrowserEvent.GetTypeInfoCount(out Count: Integer): HResult;
begin
   Result := E_NOTIMPL;
end;

function TWebBrowserEvent.Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; Flags: Word; var Params; VarResult, …
Run Code Online (Sandbox Code Playgroud)

delphi mshtml delphi-2010 twebbrowser

4
推荐指数
1
解决办法
941
查看次数

将 Delphi VCL 设计时包放入表单时如何自动包含文件

我在 Delphi 中围绕 TWebBrowser 构建了一个包装器。包装器旨在将多个 Web 浏览器(边缘铬、铬等)实现到单个包装器中,该包装器自动检测要使用的浏览器。

完成课程后,我将所述课程转换为 VCL 组件并将其加载到设计时包中。我的组件只包含两个文件,包装器本身和一个实用程序类。当我将组件从工具选项板拖到 VCL 表单上时,包装器和实用程序类不会自动添加到项目中。这意味着我必须手动将包装器和实用程序都包含到项目中。

我希望有一种方法可以在将包装器添加到表单时自动将这两个文件包含到项目中。我想我以前在我使用过的其他第三方组件中看到过这一点,但我的记忆可能让我失望。

如果这是可以完成的事情,我的假设是它将位于 VCL 组件的寄存器部分。

procedure Register;
begin
   RegisterComponents('My Wrappers', [TWebBrowserWrapper]);
end;
Run Code Online (Sandbox Code Playgroud)

因为这是我认为在设计时运行的代码。

delphi vcl design-time delphi-10.2-tokyo

4
推荐指数
1
解决办法
120
查看次数

WebView2Loader.dll 与 WebView2.dll

我工作的公司开发了一个应用程序,该应用程序使用 WebView2 在应用程序中显示 Edge 浏览器。我们使用的 IDE (Delphi) 提供了一个名为“WebView2Loader.dll”的 dll 与 exe 一起分发。

在查看 WebView2 运行时如何运行时,有很多提到“Evergreen”的东西,它似乎是自动更新到最新和最好版本的 WebView2 运行时。 https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution#understand-the-webview2-runtime-and-installer-preview

这就是令人困惑的地方。我的问题是这个 Evergreen 与 WebView2Loader.dll 有何关系?我认为它的工作方式是,加载器 dll 只是用来查找已安装的 WebView2 运行时,而 Evergreen 实际上正在下载运行时。我从这句话中得到了这个指示“WebView2Loader.dll 是一个小组件,可以帮助应用程序在设备上定位 WebView2 运行时或 Microsoft Edge 的不稳定通道。” 通过此链接https://learn.microsoft.com/en-us/microsoft-edge/webview2/how-to/static。

然后我的后续问题是,客户是否必须手动下载 Evergreen,或者如果他们已经安装了 Edge,那么该运行时是否存在?

delphi microsoft-edge webview2

3
推荐指数
1
解决办法
6295
查看次数