Ошибка при создании TChromium в Inno Setup

63
5

Я пытаюсь создать DLL TChromium для использования в Inno Setup, равный TLama, созданный с помощью TWebBrowser, создавая невинный веб-браузер, но я не могу, я следую той же логике основных процедур, но во время создания, создается окно внутри 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;

Print Screen

спросил(а) 2021-01-19T18:03:14+03:00 6 месяцев, 1 неделя назад
1
Решение
78

У элемента управления 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.

ответил(а) 2021-01-19T18:03:14+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема