如何在 运行 时从任务栏中隐藏我的任务栏图标?
How to hide my TaskBar icon from the TaskBar at run-time?
我已经从以下位置下载了 CoolTrayIcon v.4.4.0:
https://torry.net/files/vcl/system/trayicons/CoolTrayIcon.zip
安装完Delphi10.4.2的组件后,在demo文件夹中,我打开了项目“CoolTrayTest”。在这个项目中,我在按钮点击处理程序中执行了这段代码:
if IsWindowVisible(Application.Handle) then
ShowWindow(Application.Handle, SW_HIDE);
这隐藏了任务栏图标。
但是当我在自己的 VCL 应用程序中尝试此代码时,任务栏图标并未隐藏。
如何让我自己的 VCL 应用程序也使用此代码隐藏任务栏图标? (我不想在程序启动时隐藏任务栏图标,而是故意点击一个按钮)。
编辑:按照雷米的建议,我使用了这段代码:
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;
似乎有效。这个有副作用吗?
当 Application.ShowMainFormOnTaskbar
属性 为 False
时,就像 CoolTrayIcon 演示中的情况一样,任务栏按钮由隐藏的 Application
window.
当 ShowMainFormOnTaskbar
改为 True
时,就像现代 Delphi 项目中的默认情况一样,任务栏按钮由 Application.MainForm
[=36] =] 而不是 Application
window.
要 hide/show 任务栏按钮,您需要 hide/show 它的所有者 window。
或者,您可以使用 DeleteTab()
and AddTab()
methods of the Win32 ITaskbarList
Shell 界面。
有关详细信息,请参阅有关 The Taskbar 的文档。特别是关于“管理任务栏按钮”和“修改任务栏内容”的部分。
我已经从以下位置下载了 CoolTrayIcon v.4.4.0:
https://torry.net/files/vcl/system/trayicons/CoolTrayIcon.zip
安装完Delphi10.4.2的组件后,在demo文件夹中,我打开了项目“CoolTrayTest”。在这个项目中,我在按钮点击处理程序中执行了这段代码:
if IsWindowVisible(Application.Handle) then
ShowWindow(Application.Handle, SW_HIDE);
这隐藏了任务栏图标。
但是当我在自己的 VCL 应用程序中尝试此代码时,任务栏图标并未隐藏。
如何让我自己的 VCL 应用程序也使用此代码隐藏任务栏图标? (我不想在程序启动时隐藏任务栏图标,而是故意点击一个按钮)。
编辑:按照雷米的建议,我使用了这段代码:
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;
似乎有效。这个有副作用吗?
当 Application.ShowMainFormOnTaskbar
属性 为 False
时,就像 CoolTrayIcon 演示中的情况一样,任务栏按钮由隐藏的 Application
window.
当 ShowMainFormOnTaskbar
改为 True
时,就像现代 Delphi 项目中的默认情况一样,任务栏按钮由 Application.MainForm
[=36] =] 而不是 Application
window.
要 hide/show 任务栏按钮,您需要 hide/show 它的所有者 window。
或者,您可以使用 DeleteTab()
and AddTab()
methods of the Win32 ITaskbarList
Shell 界面。
有关详细信息,请参阅有关 The Taskbar 的文档。特别是关于“管理任务栏按钮”和“修改任务栏内容”的部分。