1

我正在尝试创建一个TChromium的DLL以在Inno Setup中使用,等于用TWebBrowser制作的TLama,创建inno-web-browser,但我不能,我遵循基本程序的相同逻辑,但是在创建过程中,inno设置中的创建窗口虽然很奇怪,但留下了附件打印,显示图像。

编辑:我正在使用 Delphi XE2 和 DCEF3。

procedure CreateChromium(ParentWnd: HWND; Left, Top, Width, Height: Integer);
begin
  Chromium := TChromium.Create(nil);
  Chromium.ParentWindow := ParentWnd;
  Chromium.Left := Left;
  Chromium.Top := Top;
  Chromium.Width := Width;
  Chromium.Height := Height;
  Chromium.Visible := true;
  Chromium.HandleNeeded;
end;

打印屏幕

4

1 回答 1

2

Chromium 控件在您的屏幕截图上有其默认颜色,所以如果这是您的问题,让我们将其更改为不同的颜色。我写过它in this post是针对 DCEF1 的,但在 DCEF3 中你需要执行类似的步骤。看看这个为您的插件添加了初始化函数新Color参数的简约代码,并展示了如何设置 Chromium 控件背景颜色:

unit MainUnit;

interface

uses
  Winapi.Windows, System.SysUtils, Vcl.Graphics, Vcl.GraphUtil, Soap.EncdDecd,
  CefVCL;

procedure CreateChromium(ParentWnd: HWND; Color: TColor; Left, Top, Width,
  Height: Integer); stdcall;

implementation

var
  Chromium: TChromium;

procedure CreateChromium(ParentWnd: HWND; Color: TColor; Left, Top, Width,
  Height: Integer);
const
  CSSHeader = 'data:text/css;charset=utf-8;base64,';
begin
  Chromium := TChromium.Create(nil);
  Chromium.ParentWindow := ParentWnd;

  // here is the tricky part; you must take the constant CSS header part and
  // concatenate it with Base64 encoded CSS style string as shown here
  Chromium.UserStyleSheetLocation := CSSHeader +
    EncodeString(Format('body {background-color:%s;}',
    [ColorToWebColorStr(Color)]));
  // and after you set the style, you need to recreate the browser
  Chromium.ReCreateBrowser('about:blank');

  Chromium.Left := Left;
  Chromium.Top := Top;
  Chromium.Width := Width;
  Chromium.Height := Height;
end;

end.
于 2013-09-02T09:57:05.783 回答