Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Hook führt zu System Exception

  Alt 25. Mai 2011, 08:37
Deine TMethod Variable ist lokal deklariert. Dennoch übergibst du deren Speicherbereich via MakeProcInstance an die Hookbehandlung. Vermute ich jedenfalls, oder was macht diese Funktion bei dir? Es gibt da auch welche mit diesem Namen, die Speicher reservieren, das würde natürlich gehen.

(Es gibt auch noch eine alte API-Funktion, die so heißt, aber die hat ja keinen Effekt mehr. Und die, die bei Delphi dabei ist, ignoriert den Instanzzeiger einfach soweit ich weiß.)

Andere Vermutung:
Je nach Umsetzung von MakeProcInstance fehlt vielleicht einfach der Zeiger auf Self, so dass deine Zugriffe auf die privaten Felder fehlschlagen.

// EDIT:
Ok, hab in das Archiv geschaut, da wird ja Speicher reserviert, das werde ich heute Abend mal anschauen. Das kann aber auch einfach am Betriebssystem oder am Antivirenprogramm liegen, da dort Code in den Speicher geschrieben und ausgeführt wird...

// EDIT2:
Die Exception kommt aus ShowWindow in der USER32.DLL, insofern ist das vermutlich genau die Stelle, an der der Hook drankommt, ja.

// EDIT3:
Jedenfalls liegt es daran, denn wenn man eine normale Prozedur nimmt, klappt es absolut problemlos.
Sebastian Jänicke
AppCentral

Geändert von jaenicke (25. Mai 2011 um 08:51 Uhr)
  Mit Zitat antworten Zitat