Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi bestimmte Tasten Sperren. (https://www.delphipraxis.net/69054-bestimmte-tasten-sperren.html)

nat 12. Mai 2006 16:00

Re: bestimmte Tasten Sperren.
 
warum willst du keinen hook verwenden?
über n system-hook müsste das doch möglich sein.

Noobinator 12. Mai 2006 16:03

Re: bestimmte Tasten Sperren.
 
Das programm soll ich auf unseren Schulrechner zum laufen bringen,und da kann ich nicht an den Treibern rumspielen.
und wegen den hooks weiss ich nicht, kann man die einfach so einbinden? (habe davon 0 ahnung)
weiterhin hat mein Lehrer gesagt, das geht über eine Procedure, ohne etwas einzubinden und verwies mich auf invalidkey.

ach und wegen der taskleiste:

wie kann ich diese Procedure:

Delphi-Quellcode:
procedure SetStartBtnEnabled(const AEnabled: Boolean);
begin
  EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',nil),
                            0,
                            'Button',
                            nil),
               AEnabled);
end;
ins Formcreate einbinden?
sorry für die vielen fragen aber ich bin noch ein Noob^^

monta 12. Mai 2006 17:14

Re: bestimmte Tasten Sperren.
 
^^indem du einfach das hier ins Form-Create schreibst:
Delphi-Quellcode:
  EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil),true);
//bzw. das letzte true eben durch false ersetzen.

Noobinator 12. Mai 2006 17:40

Re: bestimmte Tasten Sperren.
 
thx4help. jetzt fehlt nur noch die ALT taste :wink:

nat 12. Mai 2006 18:47

Re: bestimmte Tasten Sperren.
 
also strg+esc kannste mit diesem keyboard hook sperren.
Delphi-Quellcode:
library KeyboardHook;

uses
  Windows,
  SysUtils,
  Classes;

{$R *.res}

type
  TKeybDLLHookStruct = packed record
    vkCode: integer;
    scanCode: integer;
    flags: integer;
    time: integer;
    dwExtraInfo: integer;
  end;
  PKeybDLLHookStruct = ^TKeybDLLHookStruct;

const
  WH_KEYBOARD_LL = 13;

var
  hKeyHook: THandle;


function KeyboardProc_LowLevel(code: integer; wParam,   lParam: Integer): integer; stdcall;
var
  P: PKeybDLLHookStruct;
  KeyDown: Boolean;
begin
  if Code < 0 then
    result := CallNextHookEx(hKeyHook, Code, wParam, lParam)
  else
  begin
    P := Pointer(lParam);
    KeyDown := P^.flags = 0;

    if KeyDown and (P^.vkCode = VK_ESCAPE) and
      Bool($8000 and GetAsyncKeyState(VK_CONTROL)) then
      result := HC_SKIP
    else result := CallNextHookEx(hKeyHook, Code, wParam, lParam);
  end;
end;

procedure StartHook;
begin
  hKeyHook := SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc_LowLevel, HInstance, 0);
end;

procedure StopHook;
begin
  UnhookWindowsHookEx(hKeyHook);
end;

exports
  StartHook,
  StopHook;
 
begin
end.

bindeste so in dein prog ein:
Delphi-Quellcode:
interface
...
const
  HookDLL = 'KeyboardHook.dll';

  procedure StartHook; external HookDLL;
  procedure StopHook; external HookDLL;
rufst dann einfach beim OnCreate von deinem form
Delphi-Quellcode:
StartHook;
und beim OnDestroy
Delphi-Quellcode:
StopHook;
auf

Noobinator 12. Mai 2006 18:58

Re: bestimmte Tasten Sperren.
 
FRAGE: was ist ein hook, und wo muss ich das hinschreiben? einfach eine neue unit einbinden und das reinschreiben oder wie? ich habe davon keine Ahnung. :roll:

nat 12. Mai 2006 19:12

Re: bestimmte Tasten Sperren.
 
Datei->Neu->Weitere->DLL-Experte (so is es zumindest bei mir mit d7).
und oben haste den kompletten quellcode für die dll. einma übersetzen
und du hast ne dll die 2 funktionen exportiert: StartHook und StopHook.
wie du die beiden funktionen dann in dein prog importierst und verwendest
habe ich ja oben schon geschrieben.

was ein hook is und wozu man ihn noch so verwenden kann guckste am besten ma
unter MSDN-Library durchsuchenSetWindowsHookEx

Noobinator 12. Mai 2006 19:23

Re: bestimmte Tasten Sperren.
 
wenn ich das jetzt speichern will, speichert der das als *.dpr usw...
wie kann ich das als DLL speichern?

nat 12. Mai 2006 20:04

Re: bestimmte Tasten Sperren.
 
diese frage hätte sicher auch mit der sufu beantwortet werden können, aber nun gut...
natürlich speicherst du das als projekt-datei. dein projekt von deinem prog
speicherst du ja auch nich als exe, oder? erst nach dem kompilieren is ne
exe vorhanden. genauso bei der dll. einma kompilieren und eine dll-datei
liegt parat.

Noobinator 14. Mai 2006 19:01

Re: bestimmte Tasten Sperren.
 
thx du hast mir sehr gehofen.
Wenn noch was ist, melde ich mich.

EDIT: könntest du mir vllt noch einen Hook für ALT+TAB und STRG+ALT+ENTF schreiben?
oder am besten alles in einem.
habe versucht deinen abzuändern, aber bekomme das irgendwie nicht hin :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Seite 3 von 6     123 45     Letzte »    

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