Zitat von
Delphi-Laie:
Ich möchte mein hookgesteuertes 32-Bit-Programm, das außer mir wohl kaum jemand mag (bei mir leistet es tagtäglich treue und nützliche Dienste), nach 64 Bit portieren (für mein heißgeliebtes 64-Bit-Windows-XP, das Windows finde ich richtig großartig), und dazu kommt zur Zeit leider nur Lazarus infrage. Also, die 32-Bit-Version für Delphi liegt schon vor.
Hmm... ich hab mir den Code in der jwatlhelp32 mal angeschaut... 64-Bit könnte hier kritisch werden, da dort (32-Bit) Assembler-Routinen verwendet werden, um die eigentlichen Methoden anzuspringen. Ich habe zwar keine Ahnung, warum die Jedis das gemacht haben, aber auf jeden Fall ist das äußerst hinderlich
Mal schauen, dass ich das mal an die FPC Entwickler melde...
Zitat von
Delphi-Laie:
Aber mit Vorschlägen mußt Du trotzdem keinesfalls geizen, die können - wem auch immer - in Situationen helfen, die man vorher gar nicht ahnt.
Diese beiden Vorschläge hätte ich:
Binde die (jwa)tlhelp32 Units folgendermaßen ein:
Delphi-Quellcode:
uses
// andere Units
{$ifdef fpc}
jwatlhelp32,
{$else}
tlhelp32,
{$endif}
// andere Units
Die andere Möglichkeit ist es die Units im Verzeichnis %FPCDIR%\packages\winunits-
jedi\src in den
Unit-Suchpfad von Delphi einzutragen und einfach die jwatlhelp32
Unit sowohl in Delphi, als auch in Free Pascal zu verwenden. Eventuell solltest du dann allerdings noch deinen
DCU-Ausgabepfad anpassen oder du kopierst den
jedi Ordner woanders hin, damit der Ordner nicht mit DCUs vollgestopft wird. So weit ich das sehe sollten die jwa* Units alle Delphi kompatibel sein.
Dadurch kannst du den Code (im Idealfall) sowohl unter Delphi, als auch unter Free Pascal verwenden.
EDIT: ok... hab nochmal genauer nachgeschaut. In den Includes von Free Pascal ist das DYNAMIC_LINK Define deaktiviert, das dafür sorgt, dass diese Assembleroutinen verwendet werden... also ist alles im grünen Bereich (das statische Linken mit "external" wird verwendet) und 64-Bit sollte kein Problem darstellen
EDIT2: doppeltes Wort entfernt -.-
Gruß,
Sven