Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Maus und Tastatur sperren! (https://www.delphipraxis.net/140960-maus-und-tastatur-sperren.html)

cherry 29. Sep 2009 19:00


Maus und Tastatur sperren!
 
Hi Leuts.

Ich versuche gerade eine kleine Anwendung zu schreiben, welche die Maus- und Tastatureingaben vorübergehend untedrückt! Und zwar alle Eingaben, nicht nur die für mein Programm!

Wiso ich das brauche, wolltest du doch gleich fragen oder nicht?! ;-) Na ja... Ich lass jetzt mal die ganze Vorgeschichte, da ich sonst eine Stunde lang an diesem Beitrag schreibe. In einem Satzt gehts darum einmalig einen Batch auszuführen der unter keinen umständen unterbrochen werden darf.

Meine erste Idee war alle WH_MOUSE & WH_KEYBORD abzufangen und nicht weiterleiten, der Hook greift aber nicht genug weit unten...

Ideen?

hathor 29. Sep 2009 19:05

Re: Maus und Tastatur sperren!
 
LockWorkStation - ist eine WINDOWS-Funktion.

Anwendungsbeispiel:
Delphi-Quellcode:
function LastInput: DWord;
var LInput: TLastInputInfo;
begin
  LInput.cbSize := SizeOf(TLastInputInfo); GetLastInputInfo(LInput);
  Result := GetTickCount - LInput.dwTime;
end;
.
.
.
Procedure..
BEGIN
if Lastinput>100000 then //100 sec
Lockworkstation; // Programme laufen weiter, aber ohne neue Anmeldung keine Aktion möglich
END;
Mehr Infos zu

LASTINPUTINFO: Wenn kein keybd_event und kein mouse_event erfolgt, wird ein Zähler hochgezählt.
Wird ein gewählter Zählerstand (z.B. 100 000 = 100 sec) erreicht (Timer-Abfrage) , wird die WINDOWS-Funktion
LockWorkStation ausgelöst. Alle Programme laufen weiter, aber Tastatur- und Maus-Aktionen werden ohne
Neuanmeldung ignoriert.

http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

Anwendungsbeispiel:
Der Zählerstand wird auf 0 gesetzt mit dem Befehl mouse_event(0,0,0,0). Den kann man z.B. einfügen (if HIDexist then mouse_event(0,0,0,0)... , wenn der User einen bestimmten USB-Stick benutzt (HID: hiddev.ProductName, hiddev.Attributes.VendorID, hiddev.Attributes.ProductID, hiddev.SerialNumber). Entfernt der User den Stick, wird ein OnRemoval-Ereignis ausgelöst und LockWorkStation wird aktiv.

XXcD 29. Sep 2009 19:48

Re: Maus und Tastatur sperren!
 
Zu dem Thema kommt mir gerade ein Gedanke.
Soweit ich weiß lässt sich das ja nicht verhindern,
dass man Strg-Alt-Entf benutzt.

Wie wäre das denn wenn man temporär den Tastaturtreiber deaktiviert,
dann könnte man doch die tastatur garnicht mehr nutzen.

cherry 29. Sep 2009 19:53

Re: Maus und Tastatur sperren!
 
danke fuer deine antwort. gibt es denn keine moeglichkeit das ganze zu machen, ohne dass eine erneute authentifizierungnoetig noetig ist ?

kann man denn die geraete einfach deaktivieren ?

himitsu 29. Sep 2009 20:00

Re: Maus und Tastatur sperren!
 
Zitat:

Zitat von cherry
kann man denn die geraete einfach deaktivieren ?

Bei mir geht's nicht ... nur deinstallieren ginge, aber der PC müßte dazu neu gestartet werden und danach wäre die Tastatur dann eh wieder vorhanden :nerd:

Schreib einen Service, welcher die Batch in ihrem Kontext ausführt.
Ein normaler Benutzer kann diesen dann nicht einfach so beenden.

mleyen 29. Sep 2009 20:32

Re: Maus und Tastatur sperren!
 
Delphi-Quellcode:
function BlockInput(fBlock: Boolean): Boolean; stdcall; external 'user32.dll';
Untested, aber ich bin mir ziemlich sicher, dass das die Funktion ist die du suchst.

Edit #1:
Ok, habs gerade unter Vista getestet und der Affengriff hat tatsächlich funktioniert... :shock: (Das war unter XP aber nicht so, oder?)
Weiterhin könnte ich immernoch bequem über mein G15-Applet alle möglichen Prozesse abschießen und sonst auch mein ganzes System bediehnen... :twisted:

Edit #2:
Was passiert denn wenn es einen Stromausfall gibt und somit auch das unverzichtbare/göttliche Programm beendet wird? :P

cherry 29. Sep 2009 20:51

Re: Maus und Tastatur sperren!
 
Zitat:

Zitat von mleyen
Edit #1:
Ok, habs gerade unter Vista getestet und der Affengriff hat tatsächlich funktioniert... :shock: (Das war unter XP aber nicht so, oder?)
Weiterhin könnte ich immernoch bequem über mein G15-Applet alle möglichen Prozesse abschießen und sonst auch mein ganzes System bediehnen... :twisted:

Ich checks mal unter XP, denn es muss ohnehin nur da laufen! -> Hab grad kein Delphi zur Hand, bin morgen wieder im Büro...

Zitat:

Zitat von mleyen
Edit #2:
Was passiert denn wenn es einen Stromausfall gibt und somit auch das unverzichtbare/göttliche Programm beendet wird? :P

Tja dann, pech ! :lol:

Zacherl 29. Sep 2009 20:55

Re: Maus und Tastatur sperren!
 
STRG+ALT+ENTF geht auch unter XP trotz BlockInput(). Periodisch aufgerufen in sehr kurzen Intervallen, wird der Computer aber trotz STRG+ALT+ENTF dauerhaft blockiert.

cherry 29. Sep 2009 20:57

Re: Maus und Tastatur sperren!
 
Zitat:

Zitat von Zacherl
STRG+ALT+ENTF geht auch unter XP trotz BlockInput(). Periodisch aufgerufen in sehr kurzen Intervallen, wird der Computer aber trotz STRG+ALT+ENTF dauerhaft blockiert.

Naja, ich hätte da schon etwas weniger "gebastel" gedacht?!

Zacherl 29. Sep 2009 20:58

Re: Maus und Tastatur sperren!
 
Naja was heißt gebastel? In deinem Programm einfach:

Delphi-Quellcode:
while not Aborted do
begin
  BlockInput(true);
  Sleep(10);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:35 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz