根据这个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.Win
和Winapi.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样式以再次显示工具栏图标。