"Ruhezustand" ermitteln

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Bildschirmschonder
Also ich habe meinen Bildschirmschoner deaktiviert, das ist keine gute Idee... (das programm so auszustatten)
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@AND51

kleiner tipp:

du kannst zitaten auch ein > voranstellen, damit werden sie auch als zitate gekennzeichnet.
dann sparst du dir das
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Beitrag von helpy »

bingo hat geschrieben:

Code: Alles auswählen

Structure tagLASTINPUTINFO
cbSize.l
dwTime.l
EndStructure

PLASTINPUTINFO.tagLASTINPUTINFO
PLASTINPUTINFO\cbSize=SizeOf(PLASTINPUTINFO)


For i=1 To 10
;move mouse or click key ...
GetLastInputInfo_(@PLASTINPUTINFO)
Debug PLASTINPUTINFO\dwTime
Delay(2000)
Next
:)
Das setzt aber mindestens Windows 2000 voraus. Gibt es eine Möglichkeit diese Funktion auf Windows ME/98 zu simulieren oder nachzubauen?

cu, helpy
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

So ich habe ja noch kaum ahnung von PB (Soll sich mit der Zeit ändern :D).

Aber es gibt eine möglichkeit um fest zu stellen ob die Tastator und/oder Maus inaktiv sind und das bei win 9x und 2k

Schon mal was vom Geplanten Tast gehört?

Man kann damit Programme Zeitversetzt starten oder man stellt es so ein das eine gewisse Zeit die Tastatur und/oder Maus keine Aktivität aufweist. Das funktioniert ähnlich wie der Bildschirmschoner nur noch lange nicht so belastend ;)
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Beitrag von helpy »

Hallo an alle,

Hier eine Möglichkeit, die auch auf Windows 98/ME funktionieren sollte. Entwickelt hab' ich es auf Windows XP ... auf 98/ME muss ich das noch testen:

Code: Alles auswählen

;{ Include file: IdleTime.pbi

#IdleTime_SampleTime = 100 ; Abtastzeit in ms

Procedure IdleTime() ; Idle Time in ms
  Protected i.l, NewMousePos.POINT
  Static LastInputTrue.l
  Static IdleTime.l
  Static LastMousePos.POINT
  Static hMutex.l
  Static Init.l
  
  If Init = 0
  	hMutex = CreateMutex_(#Null, #False, #Null )
  	LastInputTrue = ElapsedMilliseconds()
	  Init = 1
	EndIf
	
	WaitForSingleObject_(hMutex,#INFINITE) ; wait until object is available

  ;Check mouse movement
  GetCursorPos_(NewMousePos)
  
  If ((NewMousePos\x <> LastMousePos\x) Or (NewMousePos\y <> LastMousePos\y)) 
  	LastMousePos\x = NewMousePos\x
	  LastMousePos\y = NewMousePos\y
  	LastInputTrue = ElapsedMilliseconds()
  Else ;Check keys state
	  For i = 0 To 255
	    If (GetAsyncKeyState_(i) & $8001) <> 0
		  	LastInputTrue = ElapsedMilliseconds()
		  	Break
	    EndIf
	  Next i
	EndIf  
	
	IdleTime = (ElapsedMilliseconds() - LastInputTrue)
  ReleaseMutex_(hMutex)
  ProcedureReturn IdleTime
EndProcedure

Procedure IdleTime_Thread(IdleTime_Delay.l)
	Repeat
		IdleTime()
		Delay(IdleTime_Delay)
	ForEver
EndProcedure

CreateThread(@IdleTime_Thread(),#IdleTime_SampleTime)

;} End of include file: IdleTime.pbi


;{ Test program
; XIncludeFile "IdleTime.pbi"
; zum testen hatte ich alles in einer PB-Datei
OpenConsole()
InitKeyboard()
Repeat
	Debug IdleTime()
	PrintN(Str(IdleTime()))
	Delay(1000)
Until Left(Inkey(),1) = Chr(27)

;} End of test program
Vielleicht kann das der eine oder andere ja gebrauchen.
Sieht noch jemand Fehler ... (bis auf manche Fehlertests, die ich jetzt nicht eingebaut habe)

cu, helpy
Antworten