PROGRAMMicon im Systray nutzen
PROGRAMMicon im Systray nutzen
Ich habe eine Anwendung mit einem Icon kompiliert, das zwei verschiedene Iconversionen enthält:
32x32x8 und
16x16x8
Die .exe zeigt in der Symboldarstellung das 32x32x8-Icon, in der Detaildarstellung das 16x16x8-Icon an. Wie kann ich das 16x16x8-Icon ansprechen, um es mittels AddSysTrayIcon als Systray-Icon zu nutzen?
Gruß
René
32x32x8 und
16x16x8
Die .exe zeigt in der Symboldarstellung das 32x32x8-Icon, in der Detaildarstellung das 16x16x8-Icon an. Wie kann ich das 16x16x8-Icon ansprechen, um es mittels AddSysTrayIcon als Systray-Icon zu nutzen?
Gruß
René
Hi,
ich hoffe, Dir hilft folgender Code weiter...
Grüsse
Michael
ich hoffe, Dir hilft folgender Code weiter...
Code: Alles auswählen
DataSection
ICON: IncludeBinary "bild.ico"
EndDataSection
CatchImage(97, ?ICON)
UseImage(97)
AddSysTrayIcon(95, WindowID(), ImageID())
Michael
Vielleicht hilft das. Ist von Sparkie aus dem englischen Forum:
Code: Alles auswählen
If OpenWindow(0, 0, 0, 550, 260, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Running Applications")
If CreateGadgetList(WindowID(0))
ListIconGadget(0, 10, 10, 530, 240, "Running Application", 415)
AddGadgetColumn(0, 1, "Icon handle", 110)
currWnd = GetWindow_(WindowID(), #GW_HWNDFIRST)
While currWnd <> 0
txtLength = GetWindowTextLength_(currWnd)
listItem$ = Space(txtLength + 1)
txtLength = GetWindowText_(currWnd, listItem$, txtLength + 1)
hIcon = GetClassLong_(currWnd, #GCL_HICON)
If txtLength > 0 And hIcon > 0
AddGadgetItem(0, -1, listItem$ + Chr(10) + Str(GetClassLong_(currWnd, #GCL_HICON)), hIcon)
EndIf
currWnd = GetWindow_(currWnd, #GW_HWNDNEXT)
Wend
EndIf
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_EventCloseWindow
AMD XP 2400+ · 1 GB RAM · Radeon 9800 Pro · Win XP SP1 · IE 6.0
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Einfach mit der Api-Funktion LoadIcon_(GetModuleHandle_ usw.
Bitte selbst nachlesen, dann bleibt es besser in Erinnerung
Bitte selbst nachlesen, dann bleibt es besser in Erinnerung

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Ich habe es so gelöst:
Code: Alles auswählen
space = 255
*Adresse = AllocateMemory(space)
GetModuleFileName_(0,*Adresse, space)
progname$ = GetFilePart(PeekS(*Adresse))
AddSysTrayIcon(1, WindowID(), ExtractIcon_(0,progname$,0))
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Ich hatte es zwar schon angedeutet, aber hier noch mal ein Beispiel-Code:
Die Lösung, das Icon aus der Exe zu extrahieren von OnkelID ist auch nicht schlecht. Das Icon mit IncludeBinary einfügen, obwohl es in der exe schon vorhanden ist, ist natürlich Ressourcenverschwendung (es befindet sich 3 mal im Speicher
)
Gruß
Thomas
Code: Alles auswählen
TrayIcon.l = LoadIcon_(GetModuleHandle_(0), 1)
AddSysTrayIcon(1, WindowID, TrayIcon)

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Mit SnIco Edit http://www.snidesoft.com/ Freeware kann man multi-icons oder wie auch immer die heissen erstellen und bearbeiten. Windows wählt dann automatisch das Icon in der passenden größe. Per API lassen sich die verschieden großen Icons auch direkt auswählen
Gruß
Thomas
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
