Frage

Ich verwende den folgenden Code im FormCreate -Event -Handler, um ein Systemfachsymbol zu erstellen. Wenn ich mein Programm ausführe, erscheint das System -Tray -Symbol gut.

Ich setze meine Anwendung automatisch unter Windows Start -up ein. Wenn ich den Computer neu starte, wird der Prozess meiner Anwendung gestartet, aber das System -Tray -Symbol erscheint nie.

Ich denke, es könnte etwas mit dem Zeitpunkt zu tun haben, wann der Code ausgeführt wird, dass das Systemschale möglicherweise nicht bereit ist, bevölkert zu werden.

Ich lasse meine App über das NSIS -Installateur ausführen: Writeregstr HKlm "Software Microsoft Windows Currentversion run" "MyApp" "$ instdir myapp.exe"

Code zum Erstellen von Systemablettsymbol:

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);
War es hilfreich?

Lösung

Sie versuchen, das Symbol zu erstellen, bevor der Explorer vollständig begonnen hat. Du solltest Fehler anmutig behandeln (Scrollen Sie nach unten, um "Shell_notifyicon -Fehler zu behandeln").

Sie sollten auch mit dem behandeln Taskbarme Benachrichtigung - Es ermöglicht Ihnen, Ihre Symbole nach dem Absturz und Neustart von Entdeckern nachzubilden.

Andere Tipps

Das Problem wurde verursacht, weil das aktuelle Verzeichnis während des Starts nicht das Verzeichnis ist, in dem die ausführbare Lebensdauer lebt.

GetCurrentdir kehrte also tatsächlich verschiedene Verzeichnisse beim Start zurück und als die App zu jeder anderen Zeit ausgeführt wurde.

Meine Bewerbung machte die schlechte Annahme, dass das aktuelle Dir diejenige sein würde, in der sich die ausführbare Datei befindet.

Diese Annahme veranlasste die App, das Tablettsymbol niemals zu erreichen. Sobald ich das Verzeichnisproblem behoben habe, wurde der Code ausgeführt und das Symbol korrekt erstellt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top