Question

J'utilise le code suivant dans le gestionnaire d'événements FormCreate pour créer une icône de plateau de système. Quand je lance mon programme sur l'icône de la barre système apparaît bien.

Je mis mon application démarre automatiquement sur le démarrage de Windows. Lorsque je redémarre l'ordinateur processus de mon application est lancée, mais l'icône de la barre système n'apparaît jamais.

Je pense que ce pourrait être quelque chose à voir avec le moment où le code est exécuté, que peut-être le plateau de système n'est pas prêt à être rempli.

Je reçois mon application pour exécuter au démarrage via son programme d'installation NSIS: WriteRegStr HKLM "Software \ Microsoft \ Windows \ CurrentVersion \ Run" "MyApp" "$ INSTDIR \ MyApp.exe"

Code pour créer l'icône de la barre système:

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);
Était-ce utile?

La solution

Vous essayez de créer l'icône avant Explorer a complètement démarré. Vous devez gérer les erreurs grâce (faites défiler jusqu'à « Manipulation échec Shell_NotifyIcon » ).

Vous devez également gérer la notification TaskbarCreated - il vous permet de recréer vos icônes après Explorer se bloque et redémarre.

Autres conseils

Le problème a été causé parce que le répertoire courant lors du démarrage n'est pas le répertoire dans lequel les vies exécutables.

GetCurrentDir était en fait le retour de différents répertoires au démarrage et lorsque l'application a été exécuté à tout autre moment.

Ma demande a été fait l'hypothèse pauvre que le répertoire courant serait celui dans lequel les exécutables de réside.

Cette hypothèse a été à l'origine de l'application de ne jamais atteindre l'icône de la barre en ajoutant le code du tout. Une fois que je fixe le numéro de répertoire le code a couru et créé correctement l'icône.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top