我在FormCreate事件处理程序中使用以下代码来创建系统托盘图标。当我运行我的程序时,系统托盘图标显示正常。系统托盘图标未在启动时出现
我设置我的应用程序在Windows启动时自动启动。当我重新启动计算机时,我的应用程序的进程已启动,但系统托盘图标从不出现。
我认为它可能是做的代码在运行时的时间,也许在系统托盘还没有准备好进行填充。
我得到我的应用程序运行在启动时通过它的NSIS安装: WriteRegStr HKLM “软件\微软\的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);
感谢您的有用信息。我已经处理了一个睡眠shell_NotifyIcon并按照建议重试,无济于事。我将继续搜索信息,并在我解决具体情况下的问题时接受答案。 – SamH 2009-12-07 12:29:04
“处理Shell_NotifyIcon失败”[这里](http://msdn.microsoft.com/en-us/library/bb762159.aspx)@RogerLipscombe没有这样的段落,你有另外一个关于失败的更多细节的链接吗?我有同样的问题作为OP:https://stackoverflow.com/questions/45255294/rare-error-on-tray-icon-creation-after-a-user-log-out-log-in并没有成功。我尝试过'TaskbarCreated'等,但它没有改变任何东西:每3或4或5次启动一次,系统托盘图标就不会出现。 – Basj 2017-07-22 21:55:11