![]() |
Tastatur-Hook mit Hilfe Assarbads Tut
Hi alle!
ist mein erster beitrag hier und es ist auch ziemlich ne newbie frage von mir, hoffe ihr schlachtet mich nicht gleich :) hab mich die letzten drei oder vier tage mit hooks, tastaturhooks und so beschäftig. ich wollte hier bissel mit nem tastaturhook rumspielen, zu übungszwecken. ich hab die dll und das proggi so aufgebaut (naja copy&paste :roll: ) wie in diesem tut von assarbad ![]() und hab der einfachheit halber die statische einbindung der hook.dll verwendet. nun zieh ich zwei buttons auf die form meines hauptproggie: mit dem einen will ich ja installhook; aufrufen, nur da liefert er mir nen fehler (nicht genügend wirkliche parameter) also variable muss her. wenn ich ne canvas variable, der keinen wert zugeteilt ist benutze lässt sich das prog schonma starten, gibt aber dann natürlich nen error beim draufklicken :). also zb installhook(var1); jo also meine erste frage wie rufe ich diese prozedur auf? dann gleich das nächste problem wo arbeite ich mit dem hook? sagen wir ich will die tastaturanschläge in einem memo ausgeben lassen. wo mach ich das? wie komm ich an die gerade gedrückte taste? haja das wären mal die fragen die mein wirken im keim erstickt haben :) hoffe ihr könnt mir helfen. bis dann Dichter |
Mail an den Autor. Oder kuck dir mal meinen LuckieSpy an, ist auch nach dem Tutorial gebaut.
|
jap hat ich auch schon *g* :)
aber leider ist das mit non-vcl alles so verwirrend im quelltext :D obwohl ich glaub die letzten zwei tage so viel non-vcl quelltext gelesen hab dass ichs gar nicht mehr von anderm unterscheiden kann ^^ oder sogar dass ichs am ende noch ohne zu verstehen selber kann :freak: :chat: :spin: jo bis denne :) |
Na ja das installieren des Hooks, hat ja nichts mit nonVCL zu tun.
|
jo aber des drum herum is so verwirrend...
du hast ja bei dienem proggi zum installen
Code:
oder? ich glaub des is doch die install stelle?
if InstallHook(hDlg) = TRUE then
begin lstrcpy(szBuffer, 'LuckieSpy - on'); SetWindowText(hDlg, szBuffer); SendMessage(hDlg, WM_SYSCOMMAND, SC_MINIMIZE, 0); SetDlgItemText(hDlg, IDC_INST, 'o&ff'); { ID's vertauschen ;)) } SetWindowLong(GetDlgItem(hDlg, IDC_INST), GWL_ID, IDC_UNINST); IsMinimized := TRUE; end; meine frage woher kommt dieses hdlg? was mach ich damit? aber dass is ja nur ne abfrage das kann ja nicht der aufruf der hokkinstall funktion sein |
hDlg ist nur mein Fensterhandle. Der kleine Trick der dich da wohl verwirrt ist die Tasache, dass ich ein und den selben Button zum installieren und deinstallieren benutze. Damit ich es dann einfacher habe, vertausche ich dessen ID. Aber um das zu erkläre, müßte man etwas tiefer in die nonVCL-Programmierung einsteigen.
Delphi-Quellcode:
Das ist die entscheidende Zeile.
if InstallHook(hDlg) = TRUE then
Bei dir müßte die ungefähr so aussehen:
Delphi-Quellcode:
if InstallHook(Form1.Handle) = TRUE then
|
oki jetzt läufts einigermassen...
nur wenn ich jetzt das memo1 auf der form1 ansprechen will, also ein char oder halt wie bei dir im prog (was allerdings auskommentiert ist) :
Code:
ich könnt ja 'letter' an die form weitergeben und das dort mit mapvirtualkey() und chr() "auswerten" lassen, aber wie gebe ich nun diese variable an das prog weiter?
function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT;
stdcall; var letter: Cardinal; 1begin case nCode < 0 of FALSE: if (lParam and $80000000) > 0 then begin -> //letter := MapVirtualKey(wParam,3); <- //write2textfile(chr(letter)); case wParam of $20, $30..$39, $41..$5A: write2textfile(chr(wParam)); else if wParam <> $A then write2textfile(frmt(' #$%2.2X ', [pointer(wParam)])); end; end; end; Result := CallNextHookEx(KBHookHandle, nCode, wParam, lParam); end; |
Daran bin ich bisher auch gescheitert. Desweitern ist es mir noch nicht gelungen, alle Zeichen richtig darzustellen.
|
dann danke schön :)
bis denne Dichter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 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