AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Kleine Verständnisfrage zu globalen Hooks
Thema durchsuchen
Ansicht
Themen-Optionen

Kleine Verständnisfrage zu globalen Hooks

Ein Thema von Neutral General · begonnen am 18. Jan 2011 · letzter Beitrag vom 18. Jan 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

AW: Kleine Verständnisfrage zu globalen Hooks

  Alt 18. Jan 2011, 12:28
Ja FHook ist 0. Hab auch eben FHook extra mal initialisiert, weil ich das auch schon vermutet hatte. Aber das ändert leider nichts
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

AW: Kleine Verständnisfrage zu globalen Hooks

  Alt 18. Jan 2011, 12:36
ich hab mir eben auch mal ein Testprojekt gebaut und es funktioniert ohne Fehlermeldungen etc.:
DLL:
Delphi-Quellcode:
library msghookproj;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der
  ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
  Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
  Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
  Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
  sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
  Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
  Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
  Informationen als PChar- oder ShortString-Parameter übergeben. }



uses
  windows,
  SysUtils,
  Classes;

{$R *.res}

var
  FHook: Cardinal = 0;

function MyHookProc(aCode: Integer; wparam: wparam; lparam: lparam): LRESULT; stdcall;
begin
  if (FHook <> 0) then
    result := CallNextHookEx(FHook, aCode, wparam, lparam)
  else
    result := 0;
end;

procedure InstallHook(); stdcall;
begin
  FHook := SetWindowsHookEx(WH_GETMESSAGE, MyHookProc, HInstance, 0);
end;

procedure UninstallHook(); stdcall;
begin
  if FHook <> 0 then
    UnhookWindowsHookEx(FHook);
end;

exports
  MyHookProc,
  InstallHook,
  UninstallHook;

begin
end.
Programm:
Delphi-Quellcode:
unit unMain;

interface

uses
  Windows, Forms;

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

function MyHookProc(aCode: Integer; wparam: wparam; lparam: lparam): LRESULT; stdcall; external 'msghookproj.dll';
procedure InstallHook(); stdcall; external 'msghookproj.dll';
procedure UninstallHook(); stdcall; external 'msghookproj.dll';


var
  Form2: TForm2;

implementation

{$R *.dfm}


procedure TForm2.FormCreate(Sender: TObject);
begin
  InstallHook();
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
  UninstallHook();
end;

end.
Funktioniert bei dir obiger Code ohne Fehler?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#13

AW: Kleine Verständnisfrage zu globalen Hooks

  Alt 18. Jan 2011, 12:47
Ja das klappt. Ich glaube es lag an ShareMem. Wenn man die Unit einbindet, dann gibts den Fehler. (Die borlndmm.dll ist wohl auch Bestandteil von ShareMem).

Danke schonmal euch beiden
Wenn ich doch nicht weiter kommen sollte, melde ich mich wieder
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#14

AW: Kleine Verständnisfrage zu globalen Hooks

  Alt 18. Jan 2011, 13:10
Bei deinem ursprünglichem Quelltext ist klar das irgend etwas abrauchen kann weil du mit FHook arbeitest obwohl es nicht initialisiert ist (ist nur in der Instanz initialisiert die für die du installHook aufrufst).
Sähkunde mal. Ich denke globale Variablen sind in Delphi immer ausgenullt?!
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#15

AW: Kleine Verständnisfrage zu globalen Hooks

  Alt 18. Jan 2011, 17:38
achso, da war ich mir nicht mehr sicher
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#16

AW: Kleine Verständnisfrage zu globalen Hooks

  Alt 18. Jan 2011, 18:54
achso, da war ich mir nicht mehr sicher
Ich persönlich bevorzuge trotzdem die explizite Schreibweise ... ist eine Sache der Wartbarkeit (m.M.n.).
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:38 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