FormCreate 이벤트 처리기에서 다음 코드를 사용하여 시스템 트레이 아이콘을 만듭니다. 프로그램을 실행하면 시스템 트레이 아이콘이 정상적으로 나타납니다.시작시 시스템 트레이 아이콘이 나타나지 않음
Windows를 시작할 때 내 애플리케이션이 자동으로 시작되도록 설정했습니다. 컴퓨터를 다시 시작하면 응용 프로그램의 프로세스가 시작되지만 시스템 트레이 아이콘이 나타나지 않습니다.
코드가 실행될 때 시스템 트레이가 채워질 준비가되지 않았을 때와 관련이 있다고 생각합니다. 만들
코드 "$ INSTDIR \ MyApp.exe의" "MyApp를" WriteRegStr HKLM "마이크로 소프트 \ 윈도우 \ CurrentVersion을 \ 실행 \ 소프트웨어"
가 나는 NSIS 설치의를 통해 실행 시작하는 내 응용 프로그램을 얻을 시스템 트레이 아이콘 :
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
'Handling Shell_NotifyIcon failure' [here] (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