【发布时间】:2019-06-29 07:40:20
【问题描述】:
我有一个 Windows 程序,我们称之为“MyApp”,用 Delphi 编写,在某个选项卡上嵌入了 chromium。我使用CEF4Delphi,但我遇到了问题。
当我使用“MyApp”并且嵌入式浏览器处于活动状态时,我可以激活另一个程序(使用 Alt-Tab 或单击任务栏中的图标)。那没问题。 但是当我想再次激活“MyApp”时,它不会被看到或被带到前面。我看不到“我的应用程序”。其他程序仍然可见,但任务栏中的图标会突出显示。要使用“MyApp”,我必须最小化其他程序,所以我会再次看到它。
只有在“MyApp”中的嵌入式浏览器被激活时才会出现此问题。
铬作为不同的进程运行,并按照文档中的建议创建:https://www.briskbard.com/index.php?lang=en&pageid=cef#usage
dpr 看起来像这样:
program MyApp;
{$R *.dres}
// uses files
{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED or IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP or IMAGE_FILE_NET_RUN_FROM_SWAP}
{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
begin
NullStrictConvert := System.false;
GlobalCEFApp := TCefApplication.Create;
if GlobalCEFApp.StartMainProcess then
begin
PauseMadExcept;
Application.Initialize;
// ... create forms ...
Application.Run;
【问题讨论】:
-
我测试了一些 CEF4Delphi 演示,并在同时运行其他应用程序的情况下多次按下 alt-tab,但我无法重现此问题。 Application.MainFormOnTaskbar := True;行丢失。你试过添加它吗?请提供一个完整的最小示例来测试此问题。
-
我在一个大型程序中遇到了这个问题,它没有出现在演示中。我不能分享那个程序,因为它是客户代码。 Application.MainFormOnTaskbar := True;我的 dpr 中缺少行,是的。有时间我会检查是否会导致此问题,谢谢您的建议。
-
我在使用 Magix Video Edit Pro(在 Windows 10 下)时遇到了同样的问题。也许是相关的? magix.info/us/forum/… - 也在这里讨论过(没有解决方案):github.com/jimradford/superputty/issues/267 - 你能找到解决方案吗?
标签: windows delphi focus chromium chromium-embedded