Seite 1 von 1
SysTray
Verfasst: 05.03.2006 19:34
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!
Verfasst: 05.03.2006 21:15
von KeyKon
Muss das Event nicht #PB_EventSysTray sein? Davon abgesehen würde ich trotzdem noch auf das EventGadgetID() überprüfen...
KeyKon
Verfasst: 05.03.2006 21:41
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.
Verfasst: 06.03.2006 18:36
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"
Verfasst: 06.03.2006 18:43
von PMV
Ist aber falsch
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

. Steht aber auch so
in der Hilfe
MFG PMV
Verfasst: 06.03.2006 18:45
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!
Verfasst: 06.03.2006 18:52
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?
Bei mir verhält sich PB nämlich anders ... hier wird immer der selbe Wert
zurück geliefert bis WindowEvent() / WaitWindowEvent() erneut
aufgerufen werden
MFG PMV
Verfasst: 06.03.2006 18:55
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.
Verfasst: 06.03.2006 19:04
von Tsuki-Namida
super danke es klapt
