从Windows任务栏中删除FireMonkey

4

有没有一种方法可以从Windows XP/vista/7任务栏中删除我的FireMonkey应用程序?我在谷歌上搜索时找不到任何信息。

问题:

如何隐藏位于dll中的窗体,使其不出现在Windows任务栏中。


1
你可以将 Application.MainFormOnTaskBar 设置为 False。但是它对最终应用程序没有影响! - David Heffernan
你是在编写真正的FMX应用程序,还是只是将单个FMX表单作为更大的VCL应用程序的一部分展示? - David Heffernan
@DavidHeffernan:这是一个DLL表单,答案在第一篇帖子中。无论如何,感谢您的尝试 :) - Knobik
请将解决方案部分移动到答案中并标记为正确。 - Matthew Strawbridge
@Talibek 如果避免使用FMX的话,肯定会更容易。你正在使用FMX的哪个功能? - David Heffernan
窗口透明度+画布上的ClearType字体(AA)(某种OSD)。 - Knobik
1个回答

2
注意:Talibek在问题中自己回答了问题,为了清晰起见,我将其移动到这里。
你需要获取主窗体的句柄(`Form1.Handle`),因为FireMonkey中没有`Application.handle`,然后使用`FmxHandleToHWND`(`FMX.Platform.Win`)将其转换为普通窗口句柄。从你的主机应用程序中,你需要检索该句柄(可以导出一个带有它的函数)并执行以下操作:
  h := GetHandle();

  ShowWindow(h, SW_HIDE);
  SetWindowLong(h, GWL_EXSTYLE, GetWindowLong(h, GWL_EXSTYLE) or 
      WS_EX_TOOLWINDOW);
  ShowWindow(h, SW_SHOW);

获取句柄:
class function TForm1.returnHandle(): integer;
begin
  result := FmxHandleToHWND(Form1.Handle);
end;

当然,需要将Application.MainFormOnTaskBar属性设置为true,这样窗体才能处理应用程序。
希望对某些人有所帮助。

1
“Application.MainFormOnTaskBar” 似乎被声明为公共字段,但至少在我所看到的 FMX 源代码中从未被引用。” - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接