Seite 1 von 2
Pause ohne 100% Auslastung und Mauszeiger als Sanduhr !
Verfasst: 04.11.2005 15:51
von Dr.Pixel
Gibt es eine Möglichkeit, ein PB-Programm für x-Sekunden
anzuhalten, ohne das eine 100% Auslastung entsteht oder
sich der Mauszeiger sich in eine Sanduhr verwandelt?
Mein PB-Programm arbeitet ohne einem geöffneten Fenster!
Danke.
Dr. Pixel
Verfasst: 04.11.2005 15:58
von Laurin
Verfasst: 04.11.2005 16:26
von Dr.Pixel
Genau das meine ich ja!
mit delay(3000) wartet zwar mein Programm 3 Sekunden,
aber es entsteht eine Sanduhr im Debugfenster!
Verfasst: 04.11.2005 16:29
von AND51
und wenn du in einem thread 3 sek wartest und im hauptprogramm wartest du auf den thread?
ansonsten guck mal im taskmanager, ob du wirklich 100%ige auslastung bei einer pause hast.
wenn nicht, liegt es nämlcih daran, das windows keine rückmeldung innerhalb dieser 3 sek. bekommt udn daher die sanduhr anzeigt.
ich empfehle eine möglichkeit, während dieser pause manuell den normalen mauszeiger einzuschalten, damit es wenigstens nicht nach einer pause aussieht.
Verfasst: 04.11.2005 18:15
von nco2k
und wenn du es einfach so machst?
bei mir kommt hier keine sanduhr, aber bei dir wahrscheinlich dann wegen dem Delay() sowieso?! musst dann was mit ElapsedMilliseconds() machen.
irgendwie sowas oder so ähnlich:
Code: Alles auswählen
time.l = ElapsedMilliseconds()
Repeat
Delay(1)
Until ElapsedMilliseconds() - time => 3000
c ya,
nco2k
Verfasst: 05.11.2005 07:54
von Kaeru Gaman
um zu dem brasel noch was beizutragen...
...wär mal interessant, die reaktion auf dieses post zu beobachten...
Re: Pause ohne 100% Auslastung und Mauszeiger als Sanduhr !
Verfasst: 05.11.2005 10:11
von crossroads
Dr.Pixel hat geschrieben:Gibt es eine Möglichkeit, ein PB-Programm für x-Sekunden
anzuhalten, ohne das eine 100% Auslastung entsteht oder
sich der Mauszeiger sich in eine Sanduhr verwandelt?
Mein PB-Programm arbeitet ohne einem geöffneten Fenster!
Danke.
Dr. Pixel
Vielleicht so:
Code: Alles auswählen
waitSec = 3
Debug "Test"
Waiting = ElapsedMilliseconds() + waitSec * 1000
While Waiting > ElapsedMilliseconds():Delay(5):Wend
Debug "End"
Verfasst: 05.11.2005 14:04
von nco2k
@Kaeru Gaman
das mit Delay(0) hatte ich mir auch zuerst überlegt, aber es verbraucht für meinen geschmack einfach noch zuviel cpu power.
c ya,
nco2k
Verfasst: 05.11.2005 14:10
von vonTurnundTaxis
Vielleicht mit einem WindowEvent():
Code: Alles auswählen
OpenWindow(1, 0, 0, 200, 200, #PB_Window_ScreenCentered, "Fenster")
Startzeit = ElapsedMilliseconds()
Wartezeit = 3000
Repeat
WindowEvent()
Sleep_(10)
Until ElapsedMilliseconds() - Startzeit => Wartezeit
Verfasst: 05.11.2005 14:28
von MVXA
Hier noch ein Code um den Mauszeiger zu verändern:
Code: Alles auswählen
Dim Cursors.l(2)
Global lngCounter.l
Cursors(0) = LoadCursor_(0, #IDC_ARROW ): Debug Cursors(0)
Cursors(1) = LoadCursor_(0, #IDC_APPSTARTING): Debug Cursors(1)
Cursors(2) = LoadCursor_(0, #IDC_WAIT ): Debug Cursors(2)
OpenWindow(0, 5, 5, 480, 320, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Cursor")
SetTimer_(WindowID(0), 5, 2000, 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #WM_TIMER
SetCursor_(Cursors(lngCounter))
SetClassLong_(WindowID(0), #GCL_HCURSOR, Cursors(lngCounter))
If lngCounter = 2
lngCounter = 0
Else
lngCounter + 1
EndIf
Default
Delay(1)
EndSelect
ForEver