Форум: "WinAPI";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];
ВнизКак получить список работающих на данный момент DLL от всех Найти похожие ветки
← →
dreamse (2008-02-11 17:56) [0]процессов. или от персонального процесса указанного в программе.
Есть код позволяющий получить список dll которые используються в нашем приложении. А как получить список всех DLL которые активны на данный момент ?
Код для получения списка DLL своего приложения
unit ModuleProcs;
interface
uses
Windows, Classes;
type
TModuleArray = array [0..400] of HMODULE;
TModuleOption = (moRemovePath, moIncludeHandle);
TModuleOptions = set of TModuleOption;
function GetLoadedDLLList(sl: TStrings;
Options: TModuleOptions = [moRemovePath]): Boolean;
implementation
uses
SysUtils;
function GetLoadedDLLList(sl: TStrings;
Options: TModuleOptions = [moRemovePath]): Boolean;
type
EnumModType = function (hProcess: Longint; lphModule: TModuleArray;
cb: DWord; var lpcbNeeded: Longint): Boolean; stdcall;
var
psapilib: HModule;
EnumProc: Pointer;
ma: TModuleArray;
I: Longint;
FileName: array[0..MAX_PATH] of Char;
S: string;
begin
Result := False;
(* Данная функция запускается только для Widnows NT *)
if Win32Platform <> VER_PLATFORM_WIN32_NT then
Exit;
psapilib := LoadLibrary("psapi.dll");
if psapilib = 0 then
Exit;
try
EnumProc := GetProcAddress(psapilib, "EnumProcessModules");
if not Assigned(EnumProc) then
Exit;
sl.Clear;
FillChar(ma, SizeOF(TModuleArray), 0);
if EnumModType(EnumProc)(GetCurrentProcess, ma, 400, I) then
begin
for I := 0 to 400 do
if ma[i] <> 0 then
begin
FillChar(FileName, MAX_PATH, 0);
GetModuleFileName(ma[i], FileName, MAX_PATH);
if CompareText(ExtractFileExt(FileName), ".dll") = 0 then
begin
S := FileName;
if moRemovePath in Options then
S := ExtractFileName(S);
if moIncludeHandle in Options then
sl.AddObject(S, TObject(ma[I]))
else
sl.Add(S);
end;
end;
end;
Result := True;
finally
FreeLibrary(psapilib);
end;
end;
end.
← →
clickmaker © (2008-02-11 18:07) [1]Process32First, Process32Next, ну и получать список DLL, загруженных каждым
← →
dreamse (2008-02-11 18:59) [2]> clickmaker © (11.02.08 18:07) [1]
Это понятно :)
Я только к сожалению не смог разобраться с вышеприведенным кодом, где там указывать путь или Id процесса ?
GetCurrentProcess ?
← →
clickmaker © (2008-02-11 19:25) [3]
> [2] dreamse (11.02.08 18:59)
GetCurrentProcess -- это только для твоего.
для чужих нужно OpenProcess делать
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c