Delphi-PRAXiS
Seite 2 von 2     12   

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

1234567890987654321 22. Jul 2010 20:15

AW: Tastatur Hook
 
Wieder dass Problem mit den @ :-(

Luckie 22. Jul 2010 20:24

AW: Tastatur Hook
 
Dir ist bekannt, dass du Beiträge auch editieren kannst oder?

DeddyH 23. Jul 2010 07:11

AW: Tastatur Hook
 
Funktioniert es so?
Delphi-Quellcode:
type
  TKeyboardProc = function(nCode, wParam, lParam: LongInt): LongInt;
var Proc: TKeyboardProc;
begin
  ...
  Proc := KeyboardProc;
  hHook := SetWindowsHookEx(WH_KEYBOARD, Proc, hInstance, 0);
Die Parameter der Funktion müssten dann alle vom Typ LongInt sein, aber da Lazarus das ja anscheinend unbedingt so haben will... :)

erich.wanker 23. Jul 2010 10:53

AW: Tastatur Hook
 
Ein "Lazarus"-Quelltext für Tastaturhook als DLL

HTH Erich

Delphi-Quellcode:
{$mode objfpc}{$H+}

{$IFDEF WINDOWS}{$R Programmname32.rc}{$ENDIF}

uses
 Classes,
 Windows,
 ActiveX,
 ShlObj,
 Messages,
 SysUtils;



var
  HookHandle: Cardinal = 0;
  AppHandle: HWND;






function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  Result := CallNextHookEx(HookHandle,
                           nCode,
                           wParam,
                           lParam);
  if nCode = HC_NOREMOVE then Exit;


    if ((lParam and (1 shl 30)) <> 0) then
    begin
        if wParam = VK_F4 then
        begin
            PostMessage(FindWindow(nil,'Fenstername von deinem Programm'), WM_USER + 8760, 300, 0);
        end
        else
        begin
            PostMessage(FindWindow(nil,'Fenstername von deinem Programm'), WM_USER + 8760,wParam,lParam);
        end;
    end;

end;

function StartHook32(ApplicationHandle: HWND): Boolean; stdcall;
begin
  Result := False;
  if HookHandle = 0 then
    begin
    HookHandle := SetWindowsHookEx(WH_KEYBOARD,
                                   @KeyboardHookProc,
                                   HInstance,
                                   0);
    AppHandle := ApplicationHandle;
    Result := TRUE;
    end;


end;

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

exports
  StartHook32,
  StopHook32;
end.

1234567890987654321 23. Jul 2010 15:02

AW: Tastatur Hook
 
Zitat:

Zitat von DeddyH (Beitrag 1036991)
Funktioniert es so?
Delphi-Quellcode:
type
  TKeyboardProc = function(nCode, wParam, lParam: LongInt): LongInt;
var Proc: TKeyboardProc;
begin
  ...
  Proc := KeyboardProc;
  hHook := SetWindowsHookEx(WH_KEYBOARD, Proc, hInstance, 0);
Die Parameter der Funktion müssten dann alle vom Typ LongInt sein, aber da Lazarus das ja anscheinend unbedingt so haben will... :)

Nein leider nicht, und die Dll hab ich ja schon, aber trotzdem danke :-)
und, der Fehler mit den @ taucht nur auf, wenn ich die unit Windows einbinde

Luckie 23. Jul 2010 16:00

AW: Tastatur Hook
 
Zitat:

Zitat von 1234567890987654321 (Beitrag 1037107)
wenn ich die unit Windows einbinde

Unter was kann man denn eine DLL, die für Windows geschrieben ist noch einbinden?

DeddyH 23. Jul 2010 16:22

AW: Tastatur Hook
 
Das hab ich nie gesagt :zwinker:

1234567890987654321 26. Jul 2010 18:46

AW: Tastatur Hook
 
24 std. vorbei(:-)):

PUSH, push, Push:-D:-D:-D:-D:-D

p80286 27. Jul 2010 15:35

AW: Tastatur Hook
 
Wie wär es denn mit
Delphi-Quellcode:
longint(@irgendwas)
Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 Uhr.
Seite 2 von 2     12   

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