Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Keyboard-Hook, bzw. Mouse-Hook


D. Annies - Mo 18.02.08 15:19
Titel: Keyboard-Hook, bzw. Mouse-Hook
Hi, Delpher,

ich brauche Hilfe bei folgendem Problem:
Welcher Code ist richtig, um z.B. ein Bild erscheinen zu lassen, nachdem 10 Minuten keine Taste gedrückt wurde, oder die Maus nicht bewegt wurde?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function KeyboardProc(nCode:integer; wParam:longint; lParam:longint):longint; stdcall;
begin
  result := CallNextHookEx(KeyboardHook, ncode, wparam, lparam);
  form1.Timer1.enabled := false;  form1.Timer1.enabled := true;
end;

function MouseProc(nCode:integer; wparam: longint; var MouseHookStruct: TMouseHookStruct):longint; stdcall;
begin
  form1.timer1.enabled := false;
  result := CallNextHookEx(MouseHook, nCode, wparam, longint(@MouseHookStruct));
  form1.Timer1.enabled := true;
end;


Ich meine vor allem die TimerEreignisse. Was ist da richtig? Beidesmal wie in der oberen Function oder beidesmal wie in der unteren Function?

Wer kennt sich da aus und kann helfen?

Vielen Dank, Detlef A.


jaenicke - Mi 20.02.08 08:22

1. Warum probierst du es nicht einfach aus?
2. Ich glaube nicht, dass das einen Unterschied macht, denn die weiteren aufgerufenen Hooks via CallNextHookEx werden kaum besonders lange zur Verarbeitung brauchen (hoffentlich :lol: ).
3. Bin ich mir nicht ganz sicher, dass das so überhaupt funktioniert wegen des Zugriffs auf die VCL. Oder funktionieren bei dir die Hooks im Hauptthread deiner Anwendung?


jasocul - Mi 20.02.08 10:11
Titel: Re: Keyboard-Hook, bzw. Mouse-Hook
user profile iconD. Annies hat folgendes geschrieben:
Welcher Code ist richtig, um z.B. ein Bild erscheinen zu lassen, nachdem 10 Minuten keine Taste gedrückt wurde, oder die Maus nicht bewegt wurde?
Soll das ein Bildschirmschoner werden? Da gibt es einfachere Möglichkeiten. Einfach mal danach suchen. Ist sicher schon mal im Forum behandelt worden.


D. Annies - Mi 20.02.08 20:07

Danke erstmal, Sebastian und Peter!

@Sebastian: Naja, hast ja recht, einfach ausprobieren. Aber du merkst schon, dass ich von Hooks nicht so die Ahnung habe.

@Peter: Im Prinzip hast du recht: Nach 10 Minuten Nichtstun soll ein Bild und eine erneute Passwortabfrage erscheinen.

Bin ich da auf dem richtigen Weg oder geht es einfacher?

Grüße von
Detlef


jaenicke - Mi 20.02.08 20:37

Erstens unterstützt Windows von sich aus eine Passwortabfrage beim Deaktivieren eines Bildschirmschoners durch Maus- oder Tastaturaktivität, und zweitens kann man sehr einfach einen Bildschirmschoner mit Delphi programmieren:
http://www.delphi-treff.de/tipps/system/tipp/363/


D. Annies - Do 21.02.08 17:01

Hi, Sebaszian,

habe mir deine Antwort angesehen, soweit ok.

Ich würde mich aber wohler fühlen, wenn du geschrieben hättest:

eine Passwortabfrage beim AKtivieren eines Bildschirmschoners durch Maus- oder TastaturDEaktivität.

Gruß, Detlef


Zorro - Fr 22.02.08 10:22

user profile iconD. Annies hat folgendes geschrieben:
Hi, Sebaszian,

habe mir deine Antwort angesehen, soweit ok.

Ich würde mich aber wohler fühlen, wenn du geschrieben hättest:

eine Passwortabfrage beim AKtivieren eines Bildschirmschoners durch Maus- oder TastaturDEaktivität.

Gruß, Detlef


Und wenn wir schon Korinthen... usw, dann korrekterweise:
Maus- oder TastaturINaktivität.

(Wobei meiner Ansicht nach die ursprüngliche Formulierung von Sebastian völlig richtig ist, denn der BS-Schoner wird durch Aktivität von Maus/Tasta DEAKTIVIERT, und genau DA setzt die Win-eingebaute PW-Abfrage ein...

Greetz
Zorro


D. Annies - Fr 22.02.08 12:39

Hi, Zorro,

danke für die Aufklärung / Belehrung - aber Korinthen... wollte ich nun ganz bestimmt nicht. Tut mir leid, wenn das so bei dir angekommen ist.

Grüße, Detlef


D. Annies - Fr 22.02.08 15:32

Nun, ich habe den Code einfach aktiviert, also die Kommentarklammern gelöscht, und siehe da, es geht. Aber leider habe ich nicht verstanden, warum - das ist mein eigentliches Problem.

Grüße, Detlef


Zorro - Fr 22.02.08 21:37

user profile iconD. Annies hat folgendes geschrieben:
Hi, Zorro,

danke für die Aufklärung / Belehrung - aber Korinthen... wollte ich nun ganz bestimmt nicht. Tut mir leid, wenn das so bei dir angekommen ist.

Grüße, Detlef


Ach, ist nicht so tragisch gemeint, denke, da sollte oben zu meinem Text noch n smiley dran.

Keep programming
Zorro


D. Annies - Fr 22.02.08 23:36

Gut, Zorro, let's keep on proramming!
Detlef :D