SysTray

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

SysTray

Beitrag von Tsuki-Namida »

Hallo,
ich verstehe nur nicht warum mein Tool nicht mehr aus dem SysTray kommt...

Hier der code um es raus zu holen, nur er geht nicht :?

Code: Alles auswählen

  If Event = #SysTrayIcon
    If EventType() = #PB_EventType_LeftClick
      HideWindow(#Radio_1, 0)
      RemoveSysTrayIcon(#SysTrayIcon)
    EndIf
  EndIf
was ist daran falsch?

PS: der Code steht in der Repeat schleife!
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Muss das Event nicht #PB_EventSysTray sein? Davon abgesehen würde ich trotzdem noch auf das EventGadgetID() überprüfen...

KeyKon
(\/) (°,,,°) (\/)
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Sollte der Code richtig sein (ich habe ihn jetzt nicht gelesen), dann kann es an Windows liegen. Windows ist ein bisschen schlampig, wenn es um das Aktualisieren des Systraybereiches geht, sodass man Programme beenden kann, und das Icon bleibt scheinbar noch da. Einmal mit der Maus drübergefahren und schon ist es weg.

Das passiert nicht nur bei selbstgeschriebenen Programmen, sondern auch bei anderen Programmen, macht euch also mal keine SOrgen. Am häufigsten erlebe ich soetwas mit dem tasmanager. Info: Ich habe Windows XP.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

@AND51
ja das weis ich ja dann hätte ich aber auch kein problem damit....

ich habe je im meinem Code abschnitt den befehl
"HideWindow(#Radio_1, 0)" [1 = Fenster wird versteckt, 0 = Fenster wird wieder angezeigt]
dieser befehl wird allerdings nicht ausgeführt dabei sind die einzigen bedingung dafür erfüllt: "Event = #SysTrayIcon" und "EventType() = #PB_EventType_LeftClick"
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Code: Alles auswählen

"Event = #SysTrayIcon"
Ist aber falsch :wink:
Wenn du auf ein SysTray klickst wird dir von PB als Event
#PB_Event_Gadget zurück gegeben ... und die EventGadgetID() /
EventGadget() ist gleich dem gedrückten Systray :D . Steht aber auch so
in der Hilfe :wink:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Code: Alles auswählen

"Event = #SysTrayIcon" und "EventType() = #PB_EventType_LeftClick"
Aha, du speicherst am Anfang deiner "großen Repeatschleife" das aufgetretene Event in Event. Tritt also das Event #SysTrayIcon auf, wird es in der Variablen Event gespeichert.

Deine Konstante ist aber falsch! Versuchs mal mit #PB_Event_SysTray, werkst du den Unterschied? Es gibt ja auch schließlich #PB_Event_gadget und nicht #Gadget, ne?

Ansonsten rate ich dir strengstens, EventType() auch in einer Variablen zu speichern, denn zwei mal Hintereinander aufgerufen, dann gibt die Funktion nur beim ersten mal ihren wahren Typ zurück, bei weiteren Aufrufen gibt sie null (0) zurück, weil du ja nicht jedes mal WindowEvent() aufrufst!
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

AND51 hat geschrieben:Ansonsten rate ich dir strengstens, EventType() auch in einer Variablen zu speichern, denn zwei mal Hintereinander aufgerufen, dann gibt die Funktion nur beim ersten mal ihren wahren Typ zurück, bei weiteren Aufrufen gibt sie null (0) zurück, weil du ja nicht jedes mal WindowEvent() aufrufst!
O_o du hast das zufällig noch nicht getestet, oder? :D

Bei mir verhält sich PB nämlich anders ... hier wird immer der selbe Wert
zurück geliefert bis WindowEvent() / WaitWindowEvent() erneut
aufgerufen werden :wink:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Achso, PMV das wusste ich noch nicht. Aber ich habe das schon ausprobiert, und zwar, als ich noch ziemlich neu in PB war. (Jaja, das waren noch Zeiten ;-) )...

Damals verhielt sich bei mir PB aber nicht so... Ich weiß auch nicht warum.

Und aus dem grund mach ich das heute auch noch so, wie bei dem anderen Thread "SysTray", wo du mir gerade eben geantwortet hast.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

super danke es klapt :)
Antworten