AGB  ·  Datenschutz  ·  Impressum  







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

Anfängerfrage zu Hooks

Ein Thema von derseitzer · begonnen am 6. Mär 2018 · letzter Beitrag vom 6. Mär 2018
Antwort Antwort
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Anfängerfrage zu Hooks

  Alt 6. Mär 2018, 12:22
Hallo ich habe eine kurze Frage zu Hooks:
Habe nach diesem Tut soweit alles fertig: https://www.delphi-treff.de/tutorial...astatur-hooks/
Mein Hauptformular, in dem ich die DLL einbinde sieht so aus:

Code:
begin
  lib := LoadLibrary('blablabla\Keyboardhook.dll');
  if lib <> INVALID_HANDLE_VALUE then
  begin
    InstallHook := GetProcAddress(lib, 'InstallHook');
    UnInstallHook := GetProcAddress(lib, 'UninstallHook');
  end;

end.
Frage: Wann und wo muss ich die Keyboardhookproc-Funktion ausführen? Diese sollte ich ja ausführen, um auf einen Tastendruck reagieren zu können..
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Anfängerfrage zu Hooks

  Alt 6. Mär 2018, 14:12
Ohne das jetzt näher angesehen zu haben, gehe ich davon aus, dass diese Funktion wohl über InstallHook übergeben und dann von Windows entsprechend aufgerufen wird, bis sie über UninstallHook wieder entfernt wird.
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
derseitzer

Registriert seit: 12. Okt 2016
235 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: Anfängerfrage zu Hooks

  Alt 6. Mär 2018, 14:17
Code:
function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM):
 LRESULT; stdcall;
begin
showmessage('hi');
//es ist ebenfalls möglich die Bearbeitung an eine Bedingung zu knüpfen
//it's possible to call CallNextHookEx conditional only.
  Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
  case nCode < 0 of
    TRUE: exit; //wenn code kleiner 0 wird nix gemacht

    FALSE:
      begin
      if lParam = VK_SPACE then
      begin
      showmessage('Space!');
  end;
      end;
  end;
end;
Die Showmessages werden bei mir nicht ausgeführt :/ ich dachte es liegt daran.. woran könnte es dann liegen?
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: Anfängerfrage zu Hooks

  Alt 6. Mär 2018, 15:43
Welchen Hook Typ verwendest du? Mit der nicht low-level Variante der Keyboard Hooks hatte ich auch schonmal Probleme. Läuft irgendeine Art von Sicherheits-Software?

Edit:
Folgender Code funktioniert bei mir unter Windows 10 - 64 Bit (für WH_KEYBOARD_LL benötigt man sogar nichtmal eine Dll ):
Delphi-Quellcode:
var
  Hook: HHOOK;

function TestHook(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;
begin
  Winapi.Windows.Beep(1000, 50);
  Result := CallNextHookEx(Hook, code, wparam, lparam);
end;

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  Hook := SetWindowsHookEx(WH_KEYBOARD_LL, TestHook, hInstance, 0);
  if (Hook = 0) then RaiseLastOSError;
end;
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl ( 6. Mär 2018 um 15:54 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Anfängerfrage zu Hooks

  Alt 6. Mär 2018, 20:31
Welchen Hook Typ verwendest du? Mit der nicht low-level Variante der Keyboard Hooks hatte ich auch schonmal Probleme. Läuft irgendeine Art von Sicherheits-Software?

Edit:
Folgender Code funktioniert bei mir unter Windows 10 - 64 Bit (für WH_KEYBOARD_LL benötigt man sogar nichtmal eine Dll ):
Delphi-Quellcode:
var
  Hook: HHOOK;

function TestHook(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall;
begin
  Winapi.Windows.Beep(1000, 50);
  Result := CallNextHookEx(Hook, code, wparam, lparam);
end;

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  Hook := SetWindowsHookEx(WH_KEYBOARD_LL, TestHook, hInstance, 0);
  if (Hook = 0) then RaiseLastOSError;
end;
Interessant..
Nur was sagen die Malware, Virenscanner?

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: Anfängerfrage zu Hooks

  Alt 6. Mär 2018, 20:55
Nur was sagen die Malware, Virenscanner?
Wird zwar nicht generell als schädlich eingestuft, aber kommt durchaus vor, dass bestimmte Sicherheitssoftware diese Aktion - teils ohne Rückfrage - blockiert. Halbwegs gute Produkte für erfahrenere Anwender fragen in der Regel erstmal nach.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

AW: Anfängerfrage zu Hooks

  Alt 6. Mär 2018, 22:07
Eigentlich ist auf Assarbads bzw. Olivers Internetseite die Hookprogrammierung mit Delphi erschöpfend erklärt: https://assarbad.net/en/stuff/tutorials/hooks/

Wundert mich, daß das hier noch niemand einwarf. Ich konnte mich da gut durcharbeiten, bei Fragen hilft Oliver auch gern weiter.

Nur was sagen die Malware, Virenscanner?
Wird zwar nicht generell als schädlich eingestuft, aber kommt durchaus vor, dass bestimmte Sicherheitssoftware diese Aktion - teils ohne Rückfrage - blockiert. Halbwegs gute Produkte für erfahrenere Anwender fragen in der Regel erstmal nach.
Immerhin sind die Hooks offiziell von Microsoft implementierte Steuerungsmechanismen für das Betriebsprogramm. So etwas pauschal zu verwerfen ("blockieren"), ist eigentlich ein Affront sondersgleichen. Ein Warnhinweis mit Abschaltoption täte es auch und m.E. sogar besser.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Anfängerfrage zu Hooks

  Alt 6. Mär 2018, 22:11
Zitat:
Immerhin sind die Hooks offiziell von Microsoft implementierte Steuerungsmechanismen für das Betriebsprogramm. So etwas pauschal zu verwerfen ("blockieren"), ist eigentlich ein Affront sondersgleichen. Ein Warnhinweis mit Abschaltoption täte es auch und m.E. sogar besser.
Dito sehe ich genauso.
ABER!
Wenn man ein Programm mit diversen Hooks verkauft und anschließend den Aufschrei des Kunden miterleben muss ist das auch nicht gerade angenehm.
Wollte das nur mal gefragt haben.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:52 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