AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TlHelp32 - "SnapModule32" nicht enthalten???
Thema durchsuchen
Ansicht
Themen-Optionen

TlHelp32 - "SnapModule32" nicht enthalten???

Ein Thema von hhhuut · begonnen am 17. Nov 2014 · letzter Beitrag vom 14. Mai 2015
 
hhhuut
(Gast)

n/a Beiträge
 
#1

TlHelp32 - "SnapModule32" nicht enthalten???

  Alt 17. Nov 2014, 20:45
Delphi-Version: XE5
Hallo liebe DP-Community,

Ich stehe gerade vor einem Problem:

Ich habe mir folgende Prozedur geschrieben, die alle geladenen Module eines Prozesses anzeigen soll:

Delphi-Quellcode:
procedure ListProcessModules(cThreadID: Cardinal; var SL: TStringList);
var
  Snapshot: THandle;
  Module: TModuleEntry32;
begin
  Snapshot := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, cThreadID);
  if (Snapshot <> 0) and (Snapshot <> INVALID_HANDLE_VALUE) then
  begin
    try
      ZeroMemory(@Module, SizeOf(TModuleEntry32));
      Module.dwSize := SizeOf(TModuleEntry32);
      if Module32First(Snapshot, Module) then
        repeat
          SL.Add(StrPas(Module.szModule));
        until not Module32Next(Snapshot, Module);
    finally
      CloseHandle(Snapshot);
    end;
  end;
end;
Die EXE aus der diese Prozedur aufgerufen wird compiliere ich als 64bit. Allerdings werden nun entsprechend nur geladene 64bit Module eines Prozesses angezeigt.
Nach ein wenig Sucherei habe ich dann herausgefunden, dass ich statt/zusätzlich zu "TH32CS_SNAPMODULE" noch den Parameter "TH32CS_SNAPMODULE32" angeben müsste.
Das Problem ist, dass Delphi diesen Paramter in der Unit TlHelp32.pas nicht findet!
Delphi-Quellcode:
// dwFlags
//
const
{$EXTERNALSYM TH32CS_SNAPHEAPLIST}
  TH32CS_SNAPHEAPLIST = $00000001;
{$EXTERNALSYM TH32CS_SNAPPROCESS}
  TH32CS_SNAPPROCESS = $00000002;
{$EXTERNALSYM TH32CS_SNAPTHREAD}
  TH32CS_SNAPTHREAD = $00000004;
{$EXTERNALSYM TH32CS_SNAPMODULE}
  TH32CS_SNAPMODULE = $00000008;
{$EXTERNALSYM TH32CS_SNAPALL}
  TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST or TH32CS_SNAPPROCESS or
    TH32CS_SNAPTHREAD or TH32CS_SNAPMODULE;
{$EXTERNALSYM TH32CS_INHERIT}
  TH32CS_INHERIT = $80000000;
//
// Use CloseHandle to destroy the snapshot
In der C++ Headerdatei (TlHelp32.h) ist er aber noch angegeben.
Meine Frage wäre jetzt: Hab ich einfach nur eine falsche/kaputte TlHelp32 Unit oder (wenn nicht) weiß jemand, wie ich mit einem 64bit Programm trotzdem 32bit & 64bit Module eines anderen Prozesses mir anzeigen lassen kann?

Liebe Grüße
Erik

P.S.: Ich benutze Delphi XE5
  Mit Zitat antworten Zitat
 


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 15:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz