![]() |
Tastur mitschreiben
Hallo erstmal!
Ich will praktisch jeden gedrückten Key mitschreiben auch wenn er nicht in meinem Programm gedrückt wurde... so etwa var inhalt: TStringList; OnKeyDown begein inhalt.add(was_gerade_gedrückt_wurde); end; geht soetwas? wenn ja wie? |
Re: Tastur mitschreiben
|
Re: Tastur mitschreiben
|
Re: Tastur mitschreiben
Zitat:
ich benutzt Delphi 3 |
Re: Tastur mitschreiben
Hai daniel_sluke,
Hallo und herzlich Willkommen in der Delphi-PRAXIS. wo genau hast Du denn probleme in deinem QuellCode? |
Re: Tastur mitschreiben
meine erste Frage is
kann ich den Quell code in Delphi 3 überhaupt verwenden? |
Re: Tastur mitschreiben
Meines Wissens schon. Versuch doch einfach ihn zu kompilieren, wenn es geut gut, wenn icht musst du ihn anpassen. Aber mir fällt jetzt nichts ein was D3 nicht können sollte, keine dynamischen Arrays, kein StringReplace, ...
|
Re: Tastur mitschreiben
Also compilieren kann ich ihn schonmal nämlich nicht, da ensteht ein Fehler...
eben kam grad: "hook.dll." kann nicht geladen werden obwohl sie im gleichen ordner is :( |
Re: Tastur mitschreiben
Du musst erst die DLL kompilieren und dann das Programm. Oder was meinst du jetzt? Ich kann bei deiner spärlichen Information nicht nachvollziehen, was du machst.
|
Re: Tastur mitschreiben
Bleib uebrigens in einem Forum. Im Entwickler-Forum hast du das Gleiche gefragt.
|
Re: Tastur mitschreiben
wenn ich die KPHook compeliere kommt hier "hHook: LongWord = 0;" folgender Fehler:
undefinierter Bezeichner Longword |
Re: Tastur mitschreiben
Dann ersetze doch einfach mal LongWord durch DWORD oder Cardinal.
|
Re: Tastur mitschreiben
ok mit cardinal hats geklappt... danke
aber ich finde keine .pas datei in dem ganzen.. ist das absicht? |
Re: Tastur mitschreiben
Delphi-Quellcode:
uses windows, messages
****************** 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. Läßt sich ohne Schwierigkliten mit Strg+F9 unter D6 kompilieren. |
Re: Tastur mitschreiben
Moin Luckie,
Zitat:
Sollte also wohl auch in D3 gehen. |
Re: Tastur mitschreiben
ging jaauch ^^
|
Re: Tastur mitschreiben
nur ist da auch soetwas wie eine .pas datei irgendwo?
|
Re: Tastur mitschreiben
Nein. Wozu?
|
Re: Tastur mitschreiben
damit man damit besser weiter arbeiten kann.... finde ich...
|
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.
|
Re: Tastur mitschreiben
nur ohne pas hab ich bei mir keine Oberfläche wo ich LAbel, Edits und so sehe :(
|
Re: Tastur mitschreiben
Die hättest du auch bei mir mit pas nicht. Das ist ohne VCL programmiert. Was das bedeutet kannst du hier:
![]() |
Re: Tastur mitschreiben
ahh das hat mir sehr weitergeholfen... vielen dank wusste nicht dass soetwas möglich ist :(
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr. |
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-2025 by Thomas Breitkreuz