Seite 2 von 2

Verfasst: 15.10.2005 18:03
von AND51
Bildschirmschonder
Also ich habe meinen Bildschirmschoner deaktiviert, das ist keine gute Idee... (das programm so auszustatten)

Verfasst: 15.10.2005 18:07
von Kaeru Gaman
@AND51

kleiner tipp:

du kannst zitaten auch ein > voranstellen, damit werden sie auch als zitate gekennzeichnet.
dann sparst du dir das

Verfasst: 18.11.2005 01:00
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

Verfasst: 18.11.2005 18:25
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 ;)

Verfasst: 18.11.2005 19:03
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