Я использую следующий код в обработчике событий FormCreate для создания иконки в системном трее. Когда я запускаю свою программу, иконка в системном трее появляется нормально.
Я установил, чтобы мое приложение запускалось автоматически при запуске Windows. Когда я перезагружаю компьютер, процесс моего приложения запускается, но значок на панели задач никогда не появляется.
Я думаю, что это может быть связано со временем запуска кода, что, возможно, системный трей не готов к заполнению.
При запуске приложения я запускаю его через установщик NSIS:
WriteRegStr HKLM "Программное обеспечение \ 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);