![]() |
Icongröße der TNA (Tray) ermitteln
Betr.: Icongröße der TNA (Tray) ermitteln
Hallöchen Habe schon heftig gesucht, aber leider nichts verwertbares gefunden. Man kann ja alle möglichen Systemparameter ermitteln nur wo erfährt man die Icon-Größe des System-Tray. Bis XP auftrauchte waren die Icons immer 16x16 nur seit XP sind 20x20 Icons dort. Ich meine, mann kan zwar einfach im Programm festellen: wenn OS = XP oder höher dann 20x20er Icons erzeugen ansonsten weiterhin 16x16er. Aber aus Interesse wäre es doch schon wenn man dies direkt abfragen könnte. Hat da jemand ne Idee. Gruße aus Kassel. |
Re: Icongröße der TNA (Tray) ermitteln
Hm, mir ist da nichts bekannt. Aber das ist im Endeffekt auch nur eine Toolbar. Man könnte also die nötigen Informationen übr die Nachricht TB_GETBUTTONINFO ermitteln.
Schöne Grüße aus Vellmar übrigens. :) |
Re: Icongröße der TNA (Tray) ermitteln
Zitat:
Also habe es mal auf die Schnelle probiert was gesammelt und zusammengebaut (quick&dirty) Ergebnis ist aber unter XP immer 32, möchte aber die tatsächliche Größe (20) zurück bekommen.
Delphi-Quellcode:
Grüße aus Kassel, nach Vellmar und dem Rest der Welt.
uses commCtrl;
var tBB : TTBBUTTON; tBI : TBBUTTONINFO; TaskbarHwnd, TrayHwnd: HWND; begin TaskbarHwnd := FindWindow('Shell_TrayWnd',nil); TrayHwnd := FindWindowEx(TaskbarHwnd,0,'TrayNotifyWnd',nil); FillChar(tBB, SizeOf(tBB), 0); SendMessage (TrayHwnd, TB_GETBUTTON, 0, Integer(@tBB)); FillChar(tBI, SizeOf(tBI), 0); tBI.cbSize := SizeOf(tBI); tBI.dwMask := TBIF_STYLE; SendMessage(TrayHwnd, TB_GETBUTTONINFO, tBB.idCommand, Integer(@tBI)); Caption := IntToStr(tBi.cbSize); end; |
Re: Icongröße der TNA (Tray) ermitteln
Unter Windows 2000 bekomme ich auch 32 zurück. :gruebel:
|
Re: Icongröße der TNA (Tray) ermitteln
Zitat:
Eine Abfrage der Höhe und Breite der NotificationArea bringt auch nix, da man ja die Taskleiste auch höher bzw. breiter machen kann und somit mehrzeilig die Icons vorhanden sein können. Irgendwie komme ich da nicht weiter und die bisherige Lösung ist nicht gerade elegant: wenn XP zeichne ein 20er Icon ansonsten ein 16er. |
Re: Icongröße der TNA (Tray) ermitteln
Warum eigentlich nich, wenn du weißt, dass es unter XP die großen sind?
|
Re: Icongröße der TNA (Tray) ermitteln
Habe hier leider gerade kein XP, aber ich glaube, wenn man das klassische Design aktiviert hat, werden die System-Tray-Icons auch unter XP mit 16x16 dargestellt. Vielleicht hilft ein Aufruf von
Delphi-Quellcode:
? Kann ich wie gesagt leider gerade selber nicht ausprobieren.
size := GetSystemMetrics(SM_CXSMICON);
Gruß, teebee |
Re: Icongröße der TNA (Tray) ermitteln
Liste der Anhänge anzeigen (Anzahl: 1)
Das Window heisst "SysPager" und hat auch nur eine grösse von 16x16 (18x18 bzw. 20x20 Win. intern).
Delphi-Quellcode:
// Shell_TrayWnd
// |- Button // |- ReBarWindow32 // | |- MSTaskSwWClass // | | +- ToolbarWindow32 // | +- ToolbarWindow32 // +- TrayNotifyWnd // |- TrayClockWClass // |- SysPager // | +- ToolbarWindow32 // +- Button Shell_TrayWnd_HWND := FindWindow('Shell_TrayWnd', nil); TrayNotifyWnd_HWND := FindWindowEx(Shell_TrayWnd_HWND, 0, 'TrayNotifyWnd',nil); SysPager_HWND := FindWindowEx(TrayNotifyWnd_HWND, 0, 'SysPager',nil); |
Re: Icongröße der TNA (Tray) ermitteln
Zitat:
Daraus kann man jedoch leider noch keine endgültigen Schlüsse auf die tatsächliche Icon-Größe schliessen, da das Fenster halt nicht quadratische Maße liefert sofern mehr als 1 Icon vorhanden sind. Einfach die Höhe anzunehmen ist auch nicht 100% schlüssig, denn es soll doch Leute geben die die Taskleiste höher machen so das zB 12 Icons in drei Reihen passen... :-( |
Re: Icongröße der TNA (Tray) ermitteln
Zitat:
Delphi-Quellcode:
:gruebel:
Size := SendMessage(ToolbarWindow32_Handle, TB_GETBUTTONINFO, ...);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz