Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Tastur mitschreiben (https://www.delphipraxis.net/11522-tastur-mitschreiben.html)

daniel_sluke 8. Nov 2003 18:13

Re: Tastur mitschreiben
 
wenn ich die KPHook compeliere kommt hier "hHook: LongWord = 0;" folgender Fehler:
undefinierter Bezeichner Longword

scp 8. Nov 2003 18:50

Re: Tastur mitschreiben
 
Dann ersetze doch einfach mal LongWord durch DWORD oder Cardinal.

daniel_sluke 8. Nov 2003 21:55

Re: Tastur mitschreiben
 
ok mit cardinal hats geklappt... danke
aber ich finde keine .pas datei in dem ganzen.. ist das absicht?

Luckie 8. Nov 2003 22:04

Re: Tastur mitschreiben
 
Delphi-Quellcode:
****************** Declarations you need in your Program ***********************

const
  WM_KEYBOARD_HOOK = WM_USER + 52012;

function CreateHook(hWnd: HWND; ShiftKeys: Boolean): Boolean; stdcall; external 'KoshigayaKeyboardHook.dll';
function DeleteHook: Boolean; stdcall; external 'KoshigayaKeyboardHook.dll';

********************************************************************************}

library KBHook;

uses
  Windows,
  Messages;

type
  PHWND = ^HWND;

const
  WM_KEYBOARD_HOOK = WM_USER + 52012;

var
  hHook: LongWord = 0;
  Key: Word;
  KeyboardLayout: HKL;
  GetShiftKeys: Boolean;
  hWndBuffer: PHWND;
  hMMF: THandle;

function KeyboardProc(nCode: Integer; wParam: LongWord; lParam: LongWord): LongWord; stdcall;
var
  LastKey: Char;
  KeyState: TKeyboardState;
begin
  Result:=CallNextHookEx(hHook,nCode,wParam,lParam);
  if nCode<0 then
    Exit
  else begin
    KeyboardLayout:=GetKeyboardLayout(0);
    GetKeyboardState(KeyState);
    if ToAsciiEx(wParam,MapVirtualKeyEx(wParam,2,KeyboardLayout),KeyState,@LastKey,0,KeyboardLayout)>0 then
      Key:=Ord(LastKey)
    else
      Key:=wParam;
    if (lParam and $80000000)=0 then
      if not (wParam in [16,17,18]) or GetShiftKeys then
        PostMessage(hwndBuffer^,WM_KEYBOARD_HOOK,Key,GetActiveWindow);
  end;
end;

function CreateHook(hWnd: HWND; ShiftKeys: Boolean): Boolean; stdcall;
var
  bHWND: PHWND;
begin
  hMMF:=CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE or SEC_COMMIT,0,SizeOf(hWnd),'KoshigayaKeyboardHookHandle');
  bHWND:=MapViewOfFile(hMMF,FILE_MAP_WRITE,0,0,SizeOf(HWND));
  bHWND^:=hWnd;
  UnmapViewOfFile(bHWND);
  GetMem(hWndBuffer,SizeOf(HWND));
  hWndBuffer^:=hWnd;
  GetShiftKeys:=ShiftKeys;
  if hHook=0 then
    hHook:=SetWindowsHookEx(WH_KEYBOARD,@KeyboardProc,hInstance,0);
  Result:=hHook<>0;
end;

function DeleteHook: Boolean; stdcall;
begin
  FreeMem(hWndBuffer);
  CloseHandle(hMMF);
  Result:=UnhookWindowsHookEx(hHook);
  hHook:=0;
end;

exports
  CreateHook,
  DeleteHook;

var
  MMF: THandle;

begin
  MMF:=OpenFileMapping(FILE_MAP_READ,false,'KoshigayaKeyboardHookHandle');
  if MMF<>0 then begin
    hWndBuffer:=MapViewOfFile(MMF,FILE_MAP_READ,0,0,SizeOf(HWND));
    CloseHandle(MMF);
  end;
end.
uses windows, messages

Läßt sich ohne Schwierigkliten mit Strg+F9 unter D6 kompilieren.

Christian Seehase 8. Nov 2003 22:26

Re: Tastur mitschreiben
 
Moin Luckie,

Zitat:

Zitat von Luckie
Läßt sich ohne Schwierigkliten mit Strg+F9 unter D6 kompilieren.

Wenn man LongWord gegen cardinal tauscht gilt das auch für D2 Developer.
Sollte also wohl auch in D3 gehen.

daniel_sluke 8. Nov 2003 22:33

Re: Tastur mitschreiben
 
ging jaauch ^^

daniel_sluke 8. Nov 2003 23:49

Re: Tastur mitschreiben
 
nur ist da auch soetwas wie eine .pas datei irgendwo?

Luckie 9. Nov 2003 03:25

Re: Tastur mitschreiben
 
Nein. Wozu?

daniel_sluke 9. Nov 2003 10:54

Re: Tastur mitschreiben
 
damit man damit besser weiter arbeiten kann.... finde ich...

Luckie 9. Nov 2003 11:07

Re: Tastur mitschreiben
 
Wie so? Ob der Cod enun in der Projekt-Datei (dpr) steht oder dieser über eien sepaarte Unit (pas) in die Projektdatei eingebunden wird ist doch egal.


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

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