【发布时间】:2021-03-21 00:46:23
【问题描述】:
我已从以下网址下载 CoolTrayIcon v.4.4.0:
https://torry.net/files/vcl/system/trayicons/CoolTrayIcon.zip
在Delphi 10.4.2中安装组件后,在demo文件夹中,我打开了项目“CoolTrayTest”。在这个项目中,我在一个按钮点击处理程序中执行以下代码:
if IsWindowVisible(Application.Handle) then
ShowWindow(Application.Handle, SW_HIDE);
这会隐藏任务栏图标。
但是当我在自己的 VCL 应用程序中尝试此代码时,任务栏图标并未隐藏。
如何让我自己的 VCL 应用程序也使用此代码隐藏任务栏图标? (我不想在程序启动时隐藏TaskBar图标,而是故意点击一个按钮)。
编辑:根据 Remy 的建议,我使用以下代码:
procedure TForm1.btnTestClick(Sender: TObject);
var
T: System.Win.Taskbar.TWinTaskbar;
begin
T := System.Win.Taskbar.TWinTaskbar.Create;
try
if not FTaskBarButtonIsHidden then
begin
IsOK := T.DeleteTab(Self.Handle);
CodeSite.Send('TForm1.btnTestClick: DeleteTab', IsOK);
FTaskBarButtonIsHidden := IsOK;
end
else
begin
IsOK := T.AddTab(Self.Handle);
CodeSite.Send('TForm1.btnTestClick: AddTab', IsOK);
FTaskBarButtonIsHidden := not IsOK;
end;
finally
T.Free;
end;
end;
它似乎工作。这有什么副作用吗?
【问题讨论】:
-
将 MainFormOnTaskbar 设置为 false。
-
Delphi 自古就带有
TTrayIcon组件... -
@DelphiCoder
TTrayIcon用于管理系统托盘通知图标。 OP 正在尝试管理应用程序的任务栏按钮。两种不同的东西。 -
@RemyLebeau 我知道这两件事。只是想为 OP 提一下,这样他就可以摆脱大约 15(!)岁的第 3 方依赖项(此后未更新,Unicode 可能存在问题)!
标签: delphi winapi taskbar system-tray delphi-10.4-sydney