Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Tastatur Hook - Taste sperren (https://www.delphipraxis.net/127437-tastatur-hook-taste-sperren.html)

FrankBrin 13. Jan 2009 12:10


Tastatur Hook - Taste sperren
 
Moin zusammen,
ich habe da ein ganz dringendes Problem. Meine Tochter sitzt weitweg in den Bergen. Ihre einzigste (günstige) Möglichkeit zu kommunizieren ist über Internet. Jetzt spinnt ihre Tastatur an Ihrem Notebook. Die Pfeiltaste links ist immer gedrückt.
Jetzt wollte ich ihr schnell helfen, indem ich ein Tastatur Hook Programm schreibe, das diese Taste tot legt.
Habe dazu das Tutorial von Assarbad genommen und hänge jetzt nur noch an der Frage: Was muß ich in der DLL machen, damit die Taste ($25) nicht verarbeitet wird?

Wer kann mir schnell helfen.

Gruß
Frank
:hello:

generic 13. Jan 2009 12:26

Re: Tastatur Hook - Taste sperren
 
Das wird nicht funktionieren. Tastaturen sind meist in einer Matrix verdrahtet.
Daraus ergibt sich, das einige Tastenanschläge abhängig von der Position in der Matrix nicht mehr erkannt werden können.

Also ein Hardware Problem!

FrankBrin 13. Jan 2009 12:33

Re: Tastatur Hook - Taste sperren
 
Hallo generic,
is schon klar wie eine Tastatur aufgebaut ist. Wenn jedoch wirklich nur diese eine Taste als gedrückt erkannt wird, sollte ich durch Abschalten dieser Taste zumindest bis der Notebook wieder hier ist meiner Tochter helfen können.

ryLIX 13. Jan 2009 12:35

Re: Tastatur Hook - Taste sperren
 
Schau dir mal die Beschreibung im MSDN dazu an MSDN
Dort solltestest du die nötigen Einstellungen finden die das Weiterleiten der Tasten unterbinden.

Ein direktes Beispiel hab ich leider auch nicht.

FrankBrin 13. Jan 2009 13:13

Re: Tastatur Hook - Taste sperren
 
Hallo,
ja Danke für den Hinweis, jedoch steht da auch nicht mehr als bei assarbad.

Hat denn keiner eine simple Lösung?

ryLIX 13. Jan 2009 13:20

Re: Tastatur Hook - Taste sperren
 
Zitat:

Zitat von FrankBrin
Hallo,
ja Danke für den Hinweis, jedoch steht da auch nicht mehr als bei assarbad.

Hat denn keiner eine simple Lösung?

Zitat:

SetWindowsHookEx()

Calling the CallNextHookEx function to chain to the next hook procedure is optional, but it is highly recommended; otherwise, other applications that have installed hooks will not receive hook notifications and may behave incorrectly as a result. You should call CallNextHookEx unless you absolutely need to prevent the notification from being seen by other applications.
Da stehst doch...

dwThreadId

Leerlassen um den Hook Global zu setzten und dann CallNextHookEx nicht aufrufen.
Denn bei Asserbad wird es aufgerufen.

FrankBrin 13. Jan 2009 13:51

Re: Tastatur Hook - Taste sperren
 
Sorry, das hab ich nicht gesehen.
Jedoch tut das auch nicht. Ich hab jetzt meine HookProc so:

function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
Result := 0;
if wParam <> $25 then Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
case nCode < 0 of
TRUE: exit; //wenn code kleiner 0 wird nix gemacht
FALSE:
if wParam = $25 then begin
// messageBox( 0, 'Hallo', 'Hallo', MB_OK);
end;
end;
end;

Sofern ich die MessageBox auskommentiere wird diese auch angezeigt, soll heissen das Ding funktioniert prinzipiell.
Jedoch wird die Pfeiltaste in Applikationen nicht unterdrückt!

ryLIX 13. Jan 2009 14:15

Re: Tastatur Hook - Taste sperren
 
Benutzt du WH_KEYBOARD oder WH_KEYBOARD_LL?

Wenn du WH_KEYBOARD benutzt versuch mal den LowLevel Hook.

toms 13. Jan 2009 14:23

Re: Tastatur Hook - Taste sperren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo

Im Anhang findest du ein DisableLeftKey Tool (getestet unter XP), welches mittels Hook die linke
Pfeiltaste deaktiviert (CoolTrayIcon Komponente wird benötigt)

generic 13. Jan 2009 14:56

Re: Tastatur Hook - Taste sperren
 
Zitat:

Zitat von FrankBrin
Hallo generic,
is schon klar wie eine Tastatur aufgebaut ist. Wenn jedoch wirklich nur diese eine Taste als gedrückt erkannt wird, sollte ich durch Abschalten dieser Taste zumindest [...] helfen können.

ca. 7 weitere Tasten werden auch nicht erkannt, da das (fehlerhafte-)drücken der Cusortaste dies die Erkennung schon blockiert.
Kannst natürlich Glück haben das das unwichtige Tasten sind, wie F-Tasten, pos, home, Bild usw.

Du solltest versuchen das Problem mechanisch zu lösen.

Geht z.B. Papier unter die Taste zu klemmen oder Taste abziehen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 Uhr.

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