AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

hInstance - KeyboardHook

Ein Thema von napsterxx · begonnen am 30. Jul 2008 · letzter Beitrag vom 24. Aug 2008
 
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#1

hInstance - KeyboardHook

  Alt 30. Jul 2008, 15:59
Moin Moin,
dachte ich beschäftige mich mit Hooks - und habe es eigentlich soweit auch verstanden, jedoch kann ich wenn ich die Tastatur hooke nur Tasten abfangen die auf meiner Form gedrückt wurden!?!?

Ich denke es liegt an hInstance im Quellcode der DLL.

DLL QuellCode:
Delphi-Quellcode:
library KeyboardHook;

uses
  Windows, SysUtils,
  Messages;

{$R *.res}

var
  HookHandle: Cardinal = 0;
  SendHwnd: Cardinal;

const
  MM_KeyDown = 2072;

function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  Result := CallNextHookEx( HookHandle, nCode, wParam, lParam );
  case nCode < 0 of
    True: Exit;
    False:
      begin
        SendMessage( SendHwnd, MM_KeyDown, wParam, lParam );
      end;
  end;
end;


function InstallHook( Hwnd, ResultHwnd: Cardinal ): Boolean; stdcall;
begin
  Result := False;
  if HookHandle = 0 then
  begin
    HookHandle := SetWindowsHookEx( WH_KEYBOARD, @KeyboardHookProc, hInstance, 0 );
    SendHwnd := ResultHwnd;
    Result := True;
  end;
end;

function UninstallHook: Boolean; stdcall;
begin
  Result := UnhookWindowsHookEx(HookHandle);
  HookHandle := 0;
end;

exports
  InstallHook,
  UninstallHook;

begin
end.
HauptProgramm QuellCode:
Delphi-Quellcode:
unit Main;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure btnUninstallClick(Sender: TObject);
    procedure btnInstallClick(Sender: TObject);
  protected
    { Protected-Deklarationen }
    procedure WndProc(var Msg: TMessage); override;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

const
  MM_KeyDown = 2072;

function InstallHook( Hwnd, ResultHwnd: THandle ): Boolean; stdcall;
  external 'KeyboardHook.dll';
function UninstallHook: Boolean; stdcall;
  external 'KeyboardHook.dll';

implementation

{$R *.dfm}

// Nachricht verarbeiten
procedure TForm1.WndProc(var Msg: TMessage);
begin
  inherited;
  if (Msg.Msg = MM_KeyDown) then
    Form1.Caption := IntToStr( Msg.WParam );
end;

// Hook installieren
procedure TForm1.btnInstallClick(Sender: TObject);
begin
  InstallHook( Handle, Handle );
end;

// Hook deinstallieren
procedure TForm1.btnUninstallClick(Sender: TObject);
begin
  UninstallHook;
end;

end.
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 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