Fenster in Systray

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

Fenster in Systray

Beitrag von winduff »

Hallo

WEnn mein Programm minimiert wird, will ich dass es ein Ico in der Systray gezeigt wird, und das Programm selber versteckt.

Habe es anhand eines Beispiels so gelöst:

Code: Alles auswählen

If IsIconic_(WindowID(#mainwin)) = #True And Minimized = #False
    Minimized = #True
    HideWindow(#mainwin,#True)
    AddSysTrayIcon(#SysIcon,WindowID(#mainwin),Icon)
    SysTrayIconToolTip(#SysIcon,"Anti-Ripper")
  ElseIf IsIconic_(WindowID(#mainwin)) = #False And Minimized = #True
    Minimized = #False
    RemoveSysTrayIcon(#SysIcon)
  EndIf
Das Programm versteckt sich, aber es erscheint kein Ico in der Systray... bräuchte demnach bitte hilfe :-)

Danke :allright:
Chris :-)
Benutzeravatar
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

Beitrag von ts-soft »

Bitte testbaren Code posten! Also einen Code, den ich in meine IDE kopieren
kann und wo dann der Fehler Auftritt. Für Icons usw. brauchen nicht
unbedingt mitgeliefert werden, aber der Dateityp ist wichtig.

Ist das so schwer?

PS: Wenn ich den fehlenden Code drumrum bastel, wird es wahrscheinlich
funktionieren, das bringt also nichts :mrgreen:
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.
Bild
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

Beitrag von winduff »

ne net soooo schwer :-D

Code: Alles auswählen

Enumeration
  #fenster
  #SysIcon
EndEnumeration

Procedure Open_mainwin()
  If OpenWindow(#fenster, 407, 243, 445, 255, "Systray test" ,#PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_MinimizeGadget |#PB_Window_ScreenCentered )
  ButtonGadget(0,5,5,50,50,"test",0)
    EndIf
  
  EndProcedure
  
  Open_mainwin()
  
  Icon.l = ExtractIcon_(WindowID(#mainwin),"Anti-Ripper",0)
  
  Repeat

    Event = WaitWindowEvent() 
    
If IsIconic_(WindowID(#fenster)) = #True And Minimized = #False
  Minimized = #True
  HideWindow(#fenster,#True)
  AddSysTrayIcon(#SysIcon,WindowID(#fenster),Icon)
  SysTrayIconToolTip(#SysIcon,"Anti-Ripper")
ElseIf IsIconic_(WindowID(#fenster)) = #False And Minimized = #True
  Minimized = #False
  RemoveSysTrayIcon(#SysIcon)
EndIf 

Until Event = #PB_Event_CloseWindow 
End
Hoffe das war mal gut ^^
Benutzeravatar
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

Beitrag von ts-soft »

1. CreateGadgetList() fehlt
2. Das mit ExtracIcon mußte erklären, dieses Fenster ist im Source nicht vorhanden, mit : Icon.l = LoadIcon_(#Null, #IDI_ASTERISK) gehts
3. Deine Ereignisschleife ist noch murks
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.
Bild
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

Beitrag von winduff »

ja öhm, war schnell neu gemacht und den code für die systray reinkopiert...

Sorry

Habe jetzt Icon.l = LoadIcon_(#Null,#IDI-ASTERISK)

Creategadgetlist() war schon drin (nur in dem beispiel hier nicht) genauso wie ereignisschleife...

geht jedoch immer noch nicht :-(

ICh hoffe ich belästige euch nicht mit blöden fragen, bin nunmal ein anfänger... :oops:

Lg
Chris
Benutzeravatar
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

Beitrag von ts-soft »

Such mal in der Hilfe nach If, informiere Dich, wie und wozu man es einsetzen kann, z.B. überprüfen ob Icon.l nicht 0 ist?

Wegen der Eventloop sollteste nochmal im CodeArchiv und der Hilfe nachsehen.
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.
Bild
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

Beitrag von winduff »

mhm Icon.l ist = 16116 (ungefähr)

Habe keine ahnung was das heisst ;-)

Ähm ja werde mich mal an hand eines Beispiels weiterversuchen ;-)

//edit: Fehler behoben, Image0 war nicht angegeben *ichidiot*

- close -

Danke nochmals an alle!

lg
chris
Antworten