我在 FormCreate 事件处理程序中使用以下代码来创建系统托盘图标。当我运行我的程序时,系统托盘图标看起来很好。
我将我的应用程序设置为在 Windows 启动时自动启动。当我重新启动计算机时,我的应用程序进程已启动,但系统托盘图标从未出现。
我认为这可能与代码运行的时间有关,也许系统托盘还没有准备好填充。
我让我的应用程序在启动时通过它的 NSIS 安装程序运行:WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "MyApp" "$INSTDIR\ MyApp.exe"
创建系统托盘图标的代码:
with TrayIconData do
begin
cbSize := SizeOf(TrayIconData);
Wnd := Handle;
uID := 0;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage := WM_ICONTRAY;
hIcon := Application.Icon.Handle;
StrPCopy(szTip, Application.Title);
end;
Shell_NotifyIcon(NIM_ADD, @TrayIconData);