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 Tastatursperre mit Hook (https://www.delphipraxis.net/104270-tastatursperre-mit-hook.html)

Wotan89 30. Nov 2007 14:05


Tastatursperre mit Hook
 
Ich hab schon wieder ein Problem, wo ich einfach nicht weiter weiß: Ich wollte ein Programm für eine Tastensperre schreiben, welche mit der Taste + an und ausgeht. (Sozusagen eine kleine Kindersicherung). Dies wollte ich über Hooks regeln.
hier ist meine DLL für den Tastaturhook:
Delphi-Quellcode:
library Project2;

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;


var
hook:cardinal; switch:boolean; //{switch ist meine Variable, welche regeln soll, ob bei + die Tastensperre an oder ausgeht}
 {$R *.res}
function show(ncode,wparam,lparam:integer):lresult; stdcall;
var help:integer; f : file of cardinal;
begin
help:=Callnexthookex(hook, ncode, wparam, lparam);
if wparam=107 then switch:=not switch;
if not switch then result:=help;
end;

function hookinstall:boolean; stdcall;
var f:file of cardinal;
begin
result:=false;
hook:=0;
switch:=true;
hook:=setwindowshookex(WH_Keyboard,@show,HInstance, 0);
if hook <> 0 then
result:=true;
end;

function hookuninstall:boolean;stdcall;
begin
result:=false;
unhookwindowshookex(hook);
result:=true;
end;

exports
show,
hookinstall,
hookuninstall;
begin
end.
Und hier meine exe:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var                                                        
  Form1: TForm1;
    dll1:thandle;
implementation
                                                     
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var install:function:boolean; stdcall;
begin
dll1:=loadlibrary('project2.dll');
install:=getprocaddress(dll1,'hookinstall');
install;
end;    

procedure TForm1.Button2Click(Sender: TObject);
var uninstall:function:boolean; stdcall;
begin
uninstall:=getprocaddress(dll1,'hookuninstall');
uninstall;
end;

end.
Ich hoffe ihr könnt mir helfen und vllt. ein paar Verbesserungsvorschläge anbringen :P

SirThornberry 30. Nov 2007 14:07

Re: ein kleines Hookproblem
 
könntest du den Titel eventuell ein kleinen stückchen aussagekräftiger gestalten? :-D Im Moment sagt der Titel leider nur aus das es um Hooks geht und da gibt es jede Menge dinge die damit zu tun haben.

Luckie 30. Nov 2007 22:55

Re: Tastatursperre mit Hook
 
Sollte sich edie Tastatur so einfach durch einen Hook sperren lassen, wäre das eine Katastrophe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:27 Uhr.

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