Einzelnen Beitrag anzeigen

Delphi-Laie

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

Re: DLL-Funktionen in Lazarus/FP einbindbar / wie einzubinde

  Alt 22. Mär 2010, 16:49
Zitat von implementation:
Das ist keine Macke, sondern das liegt einfach daran, dass tlhelp32 für 32 Bit geschrieben ist.
Wenn du eine 64-Bit-Version davon gefunden hast, und es immer noch nicht läuft, dann solltest du dich wundern.
Aber 32 und 64 Bit sind nunmal unterschiedlich. Da kannste nix machen.
Die tlhelp32-Unit tut im Quelltext nicht viel mehr, als neben den nötigen Konstanten-, Typ- und Variablendeklarationen einige - die entsprechenden - Funktionen der kernel32.dll zu importieren. Was soll denn an einem DLL-Funktionsimport 32- oder 64-bittig sein? Wenn das 64-Bit-Lazarus die Unit fehlerfrei compiliert, dann liegt das Compilat ja wohl hoffentlich in einer 64-Bit-Version vor? Und falls nicht, wäre es auch nicht schlimm, schließlich funktioniert ja immerhin die 32-Bit-Version.

Es klappte ja nicht einmal (in meinem Programm, nicht Luckies), nur die relevanten Funktionen aus der tlhelp32-Unit zu extrahieren und unter Verzicht auf diese Unit in der uses-Anweisung nur die Funktionsimporte direkt in die MainForm-Unit zu kopieren. Es compiliert, aber die Funktionalität in der Exe ist bestenfalls lausig.

Immerhin funktionieren die 32-Bit-Compilate von Luckies Programm (Delphi und Lazarus) ja auch unter Windows 64 Bit! Nur diese eine Funktion "GetExeStringFromProcID" will in der 64-Bit-Version anscheinend nicht, aber wo hat die 32- oder 64-Bit-Spezifika?? Sie ruft CreateToolHelpSnapShot und - wohl vergeblich - Process32First und Proces32Next auf. Diese Aufrufe haben jedoch keine Bitbreitenspezifik?!

Zitat von implementation:
Bist du dir sicher, dass die Daten nicht heil bei der DLL ankommen? Vielleicht liegt auch in der der Fehler. Oder ist es gar eine 32-Bit-DLL?
Die Daten, die die DLL aus Dateien zieht, kommen heil bei dieser an, das merke ich ja am Programmverhalten. Die DLL ist 64 Bit und funktioniert auch teilweise - wenigstens der Modulschnappschuß und die 64-Bit-Hooks. Also, 64 Bit werden tatsächlich erzeugt.

Letztlich kann sich jeder anhand meines Anhangs weiter oben selbst davon überzeugen, daß irgendetwas mit dem 64-Bit-Compilat nicht stimmt.


Zur Zeit probiere, eher fummele ich an der Funktion "GetWindowModuleFileName", denn die wäre vielleicht eine brauchbare Alternative gewesen, aber an der klappt ja überhaupt nichts.
  Mit Zitat antworten Zitat