Seite 1 von 1
Codefehler bei Repeatschleife
Verfasst: 06.06.2007 15:52
von kreeph
Hallo Leute, heute möchte ich mich kurz fassen. Im folgenden Code ist ein Fehler, den ich nicht zu beheben weiß. Es soll in der Systray-Leiste ein Symbol angezeigt werden jenachdem ob man eine Verbindung mit dem Internet oder nicht hat. InternetGetConnectedState_(0,0) funtioniert sonst bei mir gut (1=Verbindung,0=keine) aber im Code scheint etwas zu fehlen oder nicht zu stimmen:
Code: Alles auswählen
OpenWindow(0,0,0,0,0,0,""):HideWindow(0,1)
On=LoadImage(0,"On.ico")
Of=LoadImage(0,"Of.ico")
AddSysTrayIcon(0,WindowID(0),Of)
Repeat
If InternetGetConnectedState_(0,0)=1:ChangeSysTrayIcon(0,On):Else:ChangeSysTrayIcon(0,Of):EndIf
Select WaitWindowEvent():
Case #PB_Event_SysTray:
Select EventGadgetID():
Case 1:
If EventType() = 2:
End:
EndIf:
EndSelect:
EndSelect
ForEver
Zu den Icons: Ganz normale 16x16 Icons. Ach ja, kann ich per IncludeBinary auch irgentwie Icons einbauen die ich mit einer Catch-Funktion wieder verwenden kann? Bei 3.30 geht damit nur .bmp.
Danke schonmal für eure Antworten!
Verfasst: 06.06.2007 16:11
von STARGÅTE
da passiert nix was die Schleife an dem PUNKT stehen bleibt :
und erst weiter läuft wenn es ein Event gibt, was bei einem HideWindow() schwer wird ^^.
Also läuft die schleife erst weiter wenn z.B. das #PB_Event_SysTray eintritt.
mach einfach mal das :
Code: Alles auswählen
OpenWindow(0,0,0,0,0,0,""):HideWindow(0,1)
On=LoadImage(0,"On.ico")
Of=LoadImage(0,"Of.ico")
AddSysTrayIcon(0,WindowID(0),Of)
Repeat
If InternetGetConnectedState_(0,0)=1:ChangeSysTrayIcon(0,On):Else:ChangeSysTrayIcon(0,Of):EndIf
Delay(10)
Select WindowEvent():
Case #PB_Event_SysTray:
Select EventGadgetID():
Case 1:
If EventType() = 2:
End:
EndIf:
EndSelect:
EndSelect
ForEver
Verfasst: 06.06.2007 16:22
von D@nte
>Ach ja, kann ich per IncludeBinary auch irgentwie Icons einbauen die ich mit einer Catch-Funktion wieder verwenden kann?
Code: Alles auswählen
;- IncludeBinary Section
;{
Global Image0
Image0 = CatchImage(0, ?Image0)
DataSection
Image0:
IncludeBinary "C:\Programme\PureBasic\Examples\Sources\Data\CdPlayer.ico"
EndDataSection
;}
Verfasst: 06.06.2007 16:45
von kreeph
Hi Leute, danke erstmal für die Antworten, aber es gibt da immer noch ein Problem. Die Icons werden einfach nicht gewechselt und bleiben wie beim Start. Ich habe das Gefühl, dass irgendetwas mit den ImageIDs nicht stimmt. Also die On und Of.
Verfasst: 06.06.2007 17:03
von STARGÅTE
ach so ja ^^
On=LoadImage(0,"On.ico")
Of=LoadImage(0,"Of.ico")
mach das mal zu
On=LoadImage(1,"On.ico")
Of=LoadImage(2,"Of.ico")
Verfasst: 06.06.2007 17:37
von kreeph
Ach Mist...
edit: Vorsichtshalber ein
Der Code sieht bis jetzt so aus:
Code: Alles auswählen
OpenWindow(0,0,0,0,0,0,""):HideWindow(0,1)
On=LoadImage(0,"1.ico")
Of=LoadImage(1,"0.ico")
AddSysTrayIcon(0,WindowID(0),Of)
Repeat
If InternetGetConnectedState_(0,0)=1
ChangeSysTrayIcon(0,On)
Alpha=1
Else
ChangeSysTrayIcon(0,Of)
Alpha=0
EndIf
If Alpha<>Beta:For k=10 To 50:beep_(k*10,1):Next:EndIf
Beta=Alpha
Delay(10)
ForEver
Es enststeht aber eine ca. 20sec Verzögerung bei mir bis sich was tut. Wie kann ich das beheben? UNd wie kann ich jetzt in 3.30 die Icons in die exe packen und im Systray anzeigen? Per catchimage gehts nicht.