提问人:Wolf Raider 提问时间:11/16/2023 最后编辑:Wolf Raider 更新时间:11/17/2023 访问量:66
CEF4Delphi 应用程序字体大小在加载 CEF 后减小
CEF4Delphi Application font size decreased after CEF is loaded
问:
我有一个非常奇怪的行为。加载 CEF 库后,WHOLE 应用程序中的所有字体都会减少。它发生在我从版本 96 迁移到最新版本的 CEF (117.2.5) 之后。
它是用Delphi 2007编写和编译的Windows 32位应用程序。 该应用程序很复杂,它有很多动态加载的库 (BPL)。
最奇怪的是,这仅发生在某些机器(Win10 Enterprise N 和 Win10 Professional 64 位)上。他们都没有安装Delphi IDE,所以我无法调试它。
CEF 加载了代码,与子进程一起运行:
sciezkaRoot := IncludeTrailingPathDelimiter(GetRootPath());
sciezkaBinariow := sciezkaRoot + CHROMIUM_FOLDER_BINARIOW;
sciezkaProcesu := sciezkaRoot + CHROMIUM_FOLDER_KOMUNIKACJA_MARKETINGOWA + CHROMIUM_PROCES_EXE;
try
if not FileExists(sciezkaProcesu) then
raise Exception.Create('Brak wymaganego pliku w lokalizacji:' + #13 + sciezkaProcesu);
uCEFApplication.GlobalCEFApp := TCefApplication.Create();
with uCEFApplication.GlobalCEFApp do
begin
ShowMessageDlg := False;
MissingBinariesException := True;
BackgroundColor := ColorToTCefColor(clBtnFace);
Cache := fKatalogCache;
EnablePrintPreview := False;
EnableGPU := False;
FrameworkDirPath := sciezkaBinariow;
ResourcesDirPath := sciezkaBinariow;
LocalesDirPath := sciezkaBinariow + 'locales';
LocalesRequired := 'pl';
Locale := 'pl';
SetCurrentDir := True;
BrowserSubprocessPath := sciezkaProcesu;
Result := StartMainProcess();
end;
except
on e: Exception do
begin
FreeAndNil(uCEFApplication.GlobalCEFApp);
Result := False;
end;
end;
我是否加载任何网页都无关紧要。
任何想法,发生了什么,为什么?
答:
1赞
Salvador Díaz Fau
11/17/2023
#1
CEF 在最新版本中对此存在一些问题,因为 Chromium 在未设置时会设置 Windows 进程 DPI 感知。
- 要么添加一个清单,其中包含 DPI 感知的一些值...:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> <asmv3:application> <asmv3:windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware> <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">unaware</dpiAwareness> </asmv3:windowsSettings> </asmv3:application> </assembly>
- ...或在加载 CEF 之前调用值为
PROCESS_DPI_UNAWARE
(即0
)的SetProcessDpiAwareness()。
有关详细信息,请阅读以下问题:
评论
0赞
Wolf Raider
11/21/2023
谢谢。似乎添加清单解决了问题。
评论