Skript in der Tray von einem eigenständigen Skript aus aktualisieren

  • Hallo,

    ich habe folgendes Problem. Ich werde versuchen, das möglichst übersichtlich zu halten.

    Ich habe ein Hauptskript (Programm), das eine ini ausließt, bearbeitet und verwaltet die Einträge und andere Optionen. Ein weiteres Skript, das die in der ini verzeichneten Einträge als Traymanager(Programm) ausführt.
    In 95 Prozent der Fälle läuft nur das Skript in der Tray zum Ausführen der Einträge, da die Funktionen aus dem Hauptskript nur in einigen speziellen Situationen gebraucht werden.

    Ich versuche nun schon seit einiger Zeit, das Trayprogramm bzw. die Items im Tray zu aktualisieren. Jedoch bin ich leider nur auf den Trichter gekommen, das Trayprogramm zu schließen und wieder neu zu starten. Was aber einen optischen Makel hat: Da, wenn das Hauptprogramm mal was gemacht hat, häufig aktualisiert wurde, wurde auch das Trayprogramm häufig geschlossen und wieder neu gestartet. Dies führt dazu, dass das Trayicon im Zweifel sogar dutzendfach vorhanden ist.

    Ein gemeinsames Skript könnte das zwar lösen, würde im Arbeitsspeicher aber dreifach zu Buche schlagen. Da ich aber meistens nur das schmale Trayprogramm brauche, halte ich das für unökonomisch.

    Meine Frage(n):
    -Fällt jemandem ein besserer Weg ein, dies zu lösen? EnvSet und EnvGet gehen nicht, da ich das Trayprogramm ja nicht spawne.
    -Kann ich das Systemtray mit AutoIt aktualisieren, damit duplizierte Trayicons verschwinden?

    Wäre schön, wenn einer der Spezialisten mir einen Hinweis geben könnte.

    Grüße

    Chris

  • Hi Mega,

    wenn ich _Singleton richtig verstehe, hilft es in meinem Fall nicht. Oder mir fehlt die nötige Phantasie, es richtig einzusetzen.

    Ich möchte das Skript ja ausgeführen, jedoch nicht, das im Systemtray die Icons jedes Mal neu gezeichnet werden und alten Spuren erhalten bleiben, was sich bei meiner derzeitigen Vorgehensweise (aus meiner Sicht) nicht verhindern lässt.

    Übersehe ich etwas?

  • Zitat

    Original von Xenobiologist
    verstehe es leider noch nicht genau. Das Skript wird mehrfach gestartet und beendet und die Icons bleiben im Tray stehen und diese willt du beseitigen, oder wie?

    Jup, genau, Mein Systemtray sieht dann ungefähr so aus, wie auf dem Bild unten. Mir ist im Grunde egal wie, aber ich möchte nicht, dass so eine Völkerkwanderung der Icons entsteht.
    Das mehrfache Starten und Beenden mache ich nur, weil ich sonst nicht weiß, wie ich die Daten im Menü aktualisieren soll, sobald das andere Skript diese Daten geändert hat.

    Das habe ich vielleicht nicht so ausdrücklich gesagt: Im Hauptskript ändere ich Daten, die im Trayskript synchron aktualisiert werden sollen.

    Hoffentlich ist es jetzt ein wenig deutlicher.

  • Vielen Dank, Mega! Der Link könnte sehr nützlich werden und schaue mal, ob das so auch geht. Könnte noch vorteilhafter sein.

    Aber in der Zwischenzeit war ich nicht faul und bin für mein Problem auf eine weitere Lösung gekommen: Ich habe das Problem aus der falschen Richtung betrachtet. Statt vom Hauptprogramm auszugehen, das dem Trayprogramm sagt, es habe sich zu aktualisieren, musste ich nur eine If-Funktion in der Schleife des Traymenüs einbauen. Dort frage ich ab, ob der Prozess des Hauptprogramms besteht und wenn ja, setzt das Trayprogramm aus, wartet bis das Hauptprogramm fertig ist und aktualisiert sich auf Verdacht einfach mal.

    Es mag seltsam klingen, aber daran habe ich jetzt seit ca. 1 Monat immer wieder mal gebastelt und kaum stelle ich die Frage ins Forum, fällt mir eine Lösung ein. :hammer:

    Deine Hilfe ist aber auf jeden Fall nicht umsonst gewesen. Danke.