Nutzeraktion abfragen

Psyjo

Mitglied
Ich versuche ein Programm zu bauen das nach einer gewissen Zeit der inaktivität den Rechner herunterfährt.
Das Problem ist nun das ich nicht weis wie ich abfrage ob die maus bewegt wurde oder auf die Tastatur getippt wurde.
Kann mir da irgendwer helfen?

MfG
 
moin


Das ginge auch noch anders:
Mausbewegungen kannst du prüfen indem du guckst ob du von GetCursorPos unterschiedliche Werte bekommst.
Tastatur benutzung kannst du mit GetKeyState abfragen.

Generell würde ich dann aber dazu raten einen Bildschirmschoner zu programmieren, nein das ist nicht schwierig.


mfg
umbrasaxum
 
Einen Anfang habe ich schon mal...
Ich habe auch mal nach hooks gesucht aber nichts mir verständliches gefunden.
Das Problem mit der Tastaturabfrage ist gelöst (mit kbhit() ) jetzt ist die Maus dran und ich habe keine Ahnung wie ich 'GetCursorPos' verwende :rolleyes:

MfG
 
moin


Mit kbhit kannst du das doch aber nur machen, solange dein Fenster aktiv ist?!

Code:
POINT koord;
GetCursorPos(&koord);

printf("%d", koord.x);
printf("%d", koord.y);
Und die windows.h einbinden!


mfg
umbrasaxum
 
Zuletzt bearbeitet:
Also, ich würde auch die Hooks empfehlen.

Beim Programmstart:
Code:
HHOOK hKBHook = SetWindowsHookEx(WH_KEYBOARD,&KBHookProc, NULL,    0);
   HHOOK kMouseHook = SetWindowsHookEx(WH_MOUSE,&MouseHookProc, NULL,    0);
   //Timer starten (mit SetTimer)
dann:
Code:
LRESULT CALLBACK KBHookProc(UINT code, WPARAM wParam, LPARAM lParam)
  (
    //Wird aufgerufen, wenn eine Taste gedrückt wurde -> Timer zurücksetzen
   
     CallNextHookEx(hKBHook, code, wParam, lParam); //<- WICHTIG!
  )
  LRESULT CALLBACK MouseHookProc(UINT code, WPARAM wParam, LPARAM lParam)
   (
     //Wird aufgerufen, wenn ein Mausevent auftrat ->Timer zurücksetzen
   
    CallNextHookEx(hKBHook, code, wParam, lParam); //<- WICHTIG!
    )
   LRESULT CALLBACK TimerProc(HWND hWnd, UINT uMsg, UINT idEvent, DWORD dwTime)
    (
      //System herunterfahren
    )
Das sollte Dir hoffentlich etwas weiterhelfen.
 
Stimmt! Ich habe es eben getestet...
Es macht generell Probleme in dem Programm wie ich festgestellt habe .. wenn einmal was im Tastaturpuffer stehr steht das auch drin und verschwindet nach der Abfrage nicht mehr.
Die Sache mit der Mausabfrage funktioniert einwandfrei :)
Jetzt wieder die Frage : Wie nutze ich diese andere Funktion?

Code:
int main()
{
	POINT pos,newpos;
	double time=clock();
	while(1)
	{
		GetCursorPos(&pos);
		Sleep(10000);
		GetCursorPos(&newpos);
		if(kbhit() || (pos.x!=newpos.x && pos.y!=newpos.y)) time=clock();
		printf("%d %d   %d %d\n",pos.x,pos.y,newpos.x,newpos.y);
		if(clock()-time >= 60000)printf("\n\n-------------shutdown-------------\n\n");
	}
}

... das ist das Progrämmchen :rolleyes:

PS : Die sache mit den hooks ist mir irgendwie noch zu hoch... ;)

MfG
 
Zuletzt bearbeitet:
moin


Ich denke da könntest du GetKeyState für nehmen, du findest mit der Suche Beispiele dazu.


mfg
umbrasaxum
 
Ich habe das Forum durchsucht .. weis aber nicht wie ich 'alle' Tasten abfragen kann.
Dann kommt auch wieder das Problem dazu das die Taste 'gedrückt wurde wenn sie gedrückt wurde' (wortspiel) *g* d.h. der Wert bleibt 1 wenn ich eine Taste gedrückt habe und wird nich wieder auf 0 zurückgesetzt.
Was kann ich gegen diesen Effekt tun?
Oder anders : Wie kann ich am einfachsten den Tastaturpuffer leeren?

MfG
 
Zuletzt bearbeitet:
Zurück