Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win7) (https://www.delphipraxis.net/163161-eigenschaft-von-tray-icons-der-notification-area-ueber-die-registry-aendern-win7.html)

netpilots 17. Sep 2011 19:29

Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win7)
 
Ich möchte die Eigenschaft eines einzelnen Icons mit eigenem Programm ändern. By default werden Icons mit der Eigenschaft 'Nur Benachrichtigungen anzeigen' eingerichtet. Gibt es eine API Prozedur oder ist was in der Registry zu ändern damit das gewünschte Symbol die Eigenschaft 'Benachrichtigungen und Symbol anzeigen' kriegt.

Die Frage wurde schon Jahre zuvor von Benutzern gestellt aber noch keine passende Antwort hat je ein Forum erreicht.

Dass es möglich ist die Eigenschaft nicht nur vom Anwender zu ändern zeigen Icons von Programmen die bereits bei der Installation wie gewünscht eingestellt sind. Als Beispiel sein Nero BackItUp und SoundEffekt genannt.

Ich hoffen dass es möglich ist im Forum eine Antwort zu erhalten. Vielen Dank.

Sir Rufo 17. Sep 2011 19:38

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Hast du mal RegMon und FileMon laufen lassen und dann so ein TrayIcon umgestellt?
Wenn was in der Reg oder Datei gespeichert wird, dann bekommst du das mit.

Muss ja dann auf jeden Fall erst mal eine per User Einstellung sein.

Dann kann man auch schauen ob das Nero TrayIcon eine per User oder globale Einstellung hat ;)

Union 17. Sep 2011 19:47

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Code:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\EnableAutoTray
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\EnableAutoTray

netpilots 18. Sep 2011 13:34

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Zitat:

Zitat von Sir Rufo (Beitrag 1125056)
Hast du mal RegMon und FileMon laufen lassen und dann so ein TrayIcon umgestellt?
Wenn was in der Reg oder Datei gespeichert wird, dann bekommst du das mit.

Muss ja dann auf jeden Fall erst mal eine per User Einstellung sein.

Dann kann man auch schauen ob das Nero TrayIcon eine per User oder globale Einstellung hat ;)


Vielen Dank für die Antworten.

RegMon von Sysinternals heisst für Win7 jetzt 'Process Monitor'. Den zu benutzen habe ich auch gedacht. Zeigt extrem viele Registry Zugriffe und der Durchblick wird dadurch etwas schwierig. Müsste ein cleveres Filter anwenden.

HKCU\Software\Microsoft\Windows\CurrentVersion\Exp lorer\EnableAutoTray existiert bei Win7 weder als Key noch als Wert. Vielleicht muss ich ihn selbst erzeugen. Wenn man es so anschaut sieht der Eintrag eher so aus dass er alle unbenutzten Icons anzeigt oder versteckt. Ich brauche es aber für ein einzellnes Icon separat.

Union 18. Sep 2011 14:11

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Zitat:

Ich brauche es aber für ein einzellnes Icon separat
Windows legt diese Informationen wohl als Stream binär für alle Icons ab. Die befinden sich in:
Code:
HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify\IconStreams
HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify\PastIconsStream

CCRDude 19. Sep 2011 13:13

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Nicht alles, was machbar ist, muss auch gemacht werden ;)

Da Du nach der API dazu fragst, schlage ich mal vor, Du beschäftigst Dich mit den Design-Guidelines zu Windows 7. Microsoft möchte nämlich gar nicht, daß Software das einstellt. Wenn Du dann immer noch der Meinung bist, daß Du das machen musst: siehe Unions Info, musst Du halt ein bißchen basteln :)

netpilots 22. Sep 2011 06:26

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
@Union, habe mir die Stream man angeschaut. Mehrere kb gross. Da blicke ich noch nicht durch. Man könnte ruhig experimentieren oder gar die Daten löschen. Bei einem Neustart werden sie neu erzeugt und es hat den Vorteil dass es dann wiede schön aufgeräumt ist. Alle zuvor verwendeten und jetzt nicht mehr benötigten Notifications sind dann entfernt.

@CCRDude, ich bin der Meinung dass sogar was unmachbar scheint gemacht werden soll ;-) Machen wir nicht ab und zu SAchen die MS nicht möchte dass sie gemacht werden? Ja, basteln wäre angesagt. In dem Fall mit kb grossen Daten in der Registry halt ein schwieriges unterfangen.

Union 22. Sep 2011 11:45

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Also in dem Stream steckt die Einstellung wie sich das Icon verhalten soll, der Pfad der Anwendung und das Icon selber drin. Die Pfade sind Unicode. Das Konfigurationsbyte liegt 20 Byte vor dem Pfad. 16=Immer zeigen, 17=Nie, 18=Verbergen wenn inaktiv. Leider muss man den Explorer nach einer Änderung neu starten.

netpilots 23. Sep 2011 00:59

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Zitat:

Zitat von Union (Beitrag 1125996)
Also in dem Stream steckt die Einstellung wie sich das Icon verhalten soll, der Pfad der Anwendung und das Icon selber drin. Die Pfade sind Unicode. Das Konfigurationsbyte liegt 20 Byte vor dem Pfad. 16=Immer zeigen, 17=Nie, 18=Verbergen wenn inaktiv. Leider muss man den Explorer nach einer Änderung neu starten.

Schon mal ein guter Ansatz. Ich werde mal etwas experimentieren. Wenn man die Einstellung händisch vornimmt wird zwar das Icon sofort angezeigt aber den Explorer neu starten ist auch kein Hindernis. Entweder direkt nach der Manipulation oder dann nach den Neustart.

CCRDude 23. Sep 2011 08:28

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Liste der Anhänge anzeigen (Anzahl: 1)
@netpilots: ich sprach ja nicht davon, was unmachbar scheint, sondern davon, was man nicht machen sollte. Aus reinem technischen Interesse habe ich da nichts gegen!

Das mit dem Konfigurationsbyte hätte ich jetzt spontan anders gesehen, weil meiner Meinung nach jedes Record direkt mit dem Pfad beginnt, ich kann mich aber auch täuschen :)

So oder so, siehe mein kleines Testprogramm im Anhang, scheint mir plausible Werte zu liefern.

Delphi-Laie 23. Sep 2011 08:52

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Zitat:

Zitat von netpilots (Beitrag 1125123)
RegMon von Sysinternals heisst für Win7 jetzt 'Process Monitor'. Den zu benutzen habe ich auch gedacht. Zeigt extrem viele Registry Zugriffe und der Durchblick wird dadurch etwas schwierig. Müsste ein cleveres Filter anwenden.

"Clever" heißt in diesem Falle: Prozeßname is not <Name Deines Programmes> exclude (oder so ähnlich).

netpilots 23. Sep 2011 14:14

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1126142)
Zitat:

Zitat von netpilots (Beitrag 1125123)
RegMon von Sysinternals heisst für Win7 jetzt 'Process Monitor'. Den zu benutzen habe ich auch gedacht. Zeigt extrem viele Registry Zugriffe und der Durchblick wird dadurch etwas schwierig. Müsste ein cleveres Filter anwenden.

"Clever" heißt in diesem Falle: Prozeßname is not <Name Deines Programmes> exclude (oder so ähnlich).

Ich habs dann mit 'Path' 'contains' 'TrayNotify\IconStreams' hingekriegt weil wir den richtigen Hinweis haben wo was abgelegt wird.

netpilots 23. Sep 2011 14:18

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Zitat:

Zitat von CCRDude (Beitrag 1126140)
@netpilots: ich sprach ja nicht davon, was unmachbar scheint, sondern davon, was man nicht machen sollte. Aus reinem technischen Interesse habe ich da nichts gegen!

Das mit dem Konfigurationsbyte hätte ich jetzt spontan anders gesehen, weil meiner Meinung nach jedes Record direkt mit dem Pfad beginnt, ich kann mich aber auch täuschen :)

So oder so, siehe mein kleines Testprogramm im Anhang, scheint mir plausible Werte zu liefern.

Vielen Dank für dein cooles Programm. Jetzt muss ich es nur noch Delphi 6 tauglich machen. Der Compiler zickt wegen der 'procedure' und 'function' im packed record. Sollte doch auch mit Delphi 6 funktionieren.

Union 23. Sep 2011 14:24

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Du meinst wohl ab 2006

CCRDude 23. Sep 2011 15:09

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Liste der Anhänge anzeigen (Anzahl: 1)
Oh, ich glaube Delphi 6 kann das wirklich noch nicht. FreePascal auch nicht, ich erinnere mich jetzt grob... Korrektur im Anhang :)

Jetzt hoffe ich nur, daß Delphi 6 CharInSet kann, sonst muss da halt ein
Delphi-Quellcode:
Result[i] in LowerCaseChars
hin.

netpilots 24. Sep 2011 02:47

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Zitat:

Zitat von Union (Beitrag 1126230)
Du meinst wohl ab 2006

Nicht ganz, Delphi 6, auch D6, gibt es ab 2001.
Guckst du in Wikipedia. http://de.wikipedia.org/wiki/Embarca...name:_Iliad.29

Union 24. Sep 2011 10:23

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Zitat:

Zitat von netpilots (Beitrag 1126359)
Zitat:

Zitat von Union (Beitrag 1126230)
Du meinst wohl ab 2006

Nicht ganz, Delphi 6, auch D6, gibt es ab 2001.
Guckst du in Wikipedia. http://de.wikipedia.org/wiki/Embarca...name:_Iliad.29

Ich meinte damit die Delphi Version 2006 (DeXter).

netpilots 24. Sep 2011 11:03

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Zitat:

Zitat von CCRDude (Beitrag 1126242)
Oh, ich glaube Delphi 6 kann das wirklich noch nicht. FreePascal auch nicht, ich erinnere mich jetzt grob... Korrektur im Anhang :)

Jetzt hoffe ich nur, daß Delphi 6 CharInSet kann, sonst muss da halt ein
Delphi-Quellcode:
Result[i] in LowerCaseChars
hin.

Für Delphi 6 ist CharInSet unbekannt. Wird wohl eine nicht mehr ganz zeitgemässe Version von Delphi sein ;-) mir gefällt sie trotzdem.
Habe ein unicodefähige Rot13 gefunden, jetzt sehe ich was im IconStream steckt.

Der Vollständigkeit halber hier noch die Rot13 die auch mit D6 frunzt.
Delphi-Quellcode:
    function Rot13(AValue: WideString): WideString;
    var
     i: Integer;
     lValue: UTF8String;
    begin
      lValue := UTF8Encode(AValue);
      for i:=1 to Length(lValue) do
        case UpCase(lValue[ i ]) of
          'A'..'M':
            lValue[ i ] := Chr(Byte(lValue[ i ]) + 13);
          'N'..'Z':
            lValue[ i ] := Chr(Byte(lValue[ i ])- 13);
        end;
      result := UTF8Decode(lValue);
    end;
Damit funktioniert der Output des Programms wie erwartet.

netpilots 3. Feb 2014 21:19

AW: Eigenschaft von Tray Icons in der Notification Area über die Registry ändern (Win
 
Da bin ich wieder. Das Problem beschäftigt mich immer noch. Werde dein Programm untersuchen und melden was sich machen lässt.
Ob Microsoft das gefällt oder nicht sollte uns egal sein.
Es gibt Icons die immer sichtbar sind, also muss es möglich sein auch ein eigenes Icon immer anzuzeigen. Ich spreche von den immer sichtbaren von Lautsprecher für die Audioregelung, Netzwerkadapter, Wartungscenter resp. PC Probleme lösen (die Flagge). So wie ich es sehe sind Google-Drive und weitere auch immer sichtbar obwohl man das nicht selbst einstellen muss.
Hätte da noch eine andere Idee. Wo doch die 'Standard Einstellung 'Nur Benachrichtigungen anzeigen' heisst, könnte man doch Benachrichtigungen selbst generieren. Das Icon würde dann immer angezeigt ausser man blendet es mit der Einstellung komplett aus.

Bei mir ist es oft vorgekommen dass ich 'Immer anzeigen' einstellen und dann wechselt es plötzlich ohne ersichtlichen Grund auf 'Nur Benachrichtigungen...'. Auf 'Nie anzeigen' hat es sich noch nie von selbst geändert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz