Nach fast 3h probieren gebe ich es auf und suche nun euren Rat:
Es geht um Code für die Symbole im Info-Bereich / Tray Items um eines dauerhaft sichtbar zu machen ohne das der Benutzer dies von Hand machen muss.
Auf jedem Windows Rechner gibt es folgenden Registry-Wert:
HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify
und dort dann den REG_BINARY Wert IconStreams
Gemäß den Beispielen für PowerShell und Visual Basic möchte ich die Binärwerte des Registry-Werts auswerten.
In dem Schlüssel stehen verschiedene Sektionen die immer 1640 Bytes lang sind:
- 528 bytes – Path to the executable
- 4 bytes – Notification visibility setting
- 512 bytes – Last visible tooltip
- 592 bytes – Unknown (Seems to have a second tool-tip embeded in it but the starting position in the block changes)
- 4 bytes – ID
Mindestens der Pfad zur Exe in den 528 Bytes ist ROT13 "verschlüsselt" (und wohl in UTF8)
Ziel ist es ein bestimmtes Programm anhand des Pfades zu finden um dann den 4 Bytes "Notification" zu manipulieren.
Ich scheitere schon daran aus dem Registry-Wert etwas lesbares zu machen (ROT13 rückwärts) (was ja auch gar nicht sein muss)
Auch einen Programmnamen (bzw. Teile davon) in ROT13 => UTF8 => Binary zu wandeln um diesen in der Bytefolge zu suchen scheitert.
Zudem bin ich nicht einmal sicher ob ich das richtig auseinander geschnitten habe ...
Verstehen - meine ich - tue ich die Beispielprogramme. Aber wie nach AutoIt umsetzen.
Die beiden Skripte aus den Links habe ich angehängt:
PowerShell: NotifyIcon.ps1.txt von dieser Quelle: PowerShell
Visual Basic: NotifyIcon.bas.txt von dieser Quelle; Visual Basic
Beim PowerShell Artikel stehen auch noch mal die Einzelheiten.
Danke für jeden Tipp,
BLinz