큰꼼의 세상

주어진 프로세스 ID에 해당하는 프로세스가 로드하고 있는 모듈들의 목록을 구하는 함수의 소스입니다.
참고하세요.

//-----------------------------------------------------------------------
//  주어진 프로세스 ID에 해당하는 프로세스가 로드하고 있는 모듈 목록을 구한다.
//-----------------------------------------------------------------------
procedure EnumModules(const AProcessID: THandle; const AStrings: TStrings);
var
  Snapshot: THandle;
  ModuleEntry: TModuleEntry32;
  NextModule: BOOL;
  ModuleName: string;
begin
  Snapshot := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, AProcessID);
  try
    if Snapshot = INVALID_HANDLE_VALUE then 
    begin
      Exit;
    end;

    ModuleEntry.dwSize := sizeof(TModuleEntry32);
    NextModule := Module32First(Snapshot, ModuleEntry);

    while NextModule do
    begin
      ModuleName := GetLongFileName(ModuleEntry.szExePath);
      AStrings.Add(ModuleName);
      NextModule := Module32Next(Snapshot, ModuleEntry);
    end;
  finally
    CloseHandle(Snapshot);
  end;
end;



출처 : Delmadang