根据这个question可以通过将窗口样式更改为ws_ex_toolwindow来隐藏fmx任务栏图标。
在XE2和XE3中,此代码起作用:

uses FMX.Platform.Win, Winapi.Windows;

procedure TForm1.Button1Click(Sender: TObject);
var h:THandle;
begin
  h := FmxHandleToHWND(Handle);
  ShowWindow(h, SW_HIDE);
  SetWindowLong(h, GWL_EXSTYLE, GetWindowLong(h, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
  ShowWindow(h, SW_SHOW);
end;

在XE4中,这个解决方案不起作用(应用程序按钮应该隐藏起来,但什么也不会发生)。有人知道吗?
谢谢.

最佳答案

只是在XE7上试过,当然没用。不过,稍微研究一下fmx.platformwin就会发现,应用程序句柄现在通过applicationhwnd函数公开,所以在xe7上工作的代码(不要忘记包括unitFMX.Platform.WinWinapi.Windows)是……

procedure HideAppOnTaskbar (AMainForm : TForm);
var
  AppHandle : HWND;
begin
  AppHandle := ApplicationHWND;
  ShowWindow(AppHandle, SW_HIDE);
  SetWindowLong(AppHandle, GWL_EXSTYLE, GetWindowLong(AppHandle, GWL_EXSTYLE) and (not     WS_EX_APPWINDOW) or WS_EX_TOOLWINDOW);
  //ShowWindow(AppHandle, SW_SHOW);
end;

最后的显示窗口是可选的-似乎没有区别。您可以删除扩展样式并恢复WSXExpAppWindows样式以再次显示工具栏图标。

08-16 03:23