我在 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);
您正尝试在资源管理器完全启动之前创建图标。你应该优雅地处理错误 http://msdn.microsoft.com/en-us/library/bb762159.aspx(向下滚动到“处理 Shell_NotifyIcon 失败”)。
您还应该处理任务栏创建通知 http://msdn.microsoft.com/en-us/library/cc144179.aspx#Taskbar_Creation_Not-- 它使您能够在资源管理器崩溃并重新启动后重新创建图标。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)