Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.18;
Скачать: CL | DM;

Вниз

DLL   Найти похожие ветки 

 
Alex ©   (2002-07-07 18:56) [0]

Как получить список загруженных DLL?


 
Eugene Lachinov ©   (2002-07-07 22:04) [1]

uses
PSApi, SysUtils, TlHelp32;

procedure GetModuleList(List : TStrings; ProcessID : THandle);
var
i : Integer;
hProcess, hSnapshot : THandle;
hModules : array of DWORD;
ME32 : TModuleEntry32;
cRequest, cModules : DWORD;
szModuleName : array[0..MAX_PATH] of Char;
begin
List.Clear;
if Win32Platform = VER_PLATFORM_WIN32_NT then begin
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or
PROCESS_VM_READ, False, ProcessID);
if hProcess <> 0 then try
cRequest := 96;
repeat
SetLength(hModules, cRequest div 4);
if EnumProcessModules(hProcess, Pointer(hModules), cRequest, cModules) then
Break;
if cModules < cRequest then Break else cRequest := cRequest shl 1
until False;
cModules := cModules div 4;
for i := 0 to cModules - 1 do
if GetModuleBaseName(hProcess, hModules[i], szModuleName, MAX_PATH) > 0 then
List.Add(szModuleName)
finally
CloseHandle(hProcess)
end
end else begin
hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessID);
if hSnapshot > 0 then try
ME32.dwSize := SizeOf(ME32);
if Module32First(hSnapshot, ME32) then repeat
List.Add(ME32.szModule);
until not Module32Next(hSnapshot, ME32)
finally
CloseHandle(hSnapshot)
end
end
end;

Пример использования:
GetModuleList(ListBox1.Items, GetCurrentProcessId)

Правда тут будут не только DLL :-)




Страницы: 1 вся ветка

Текущий архив: 2002.07.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
4-58363
МишА
2002-05-15 20:42
2002.07.18
SendMessage в Dos приложение


3-57994
Игорь Шевченко
2002-06-26 14:31
2002.07.18
Read only транзакции в Interbase. Можно ли ?


7-58338
_Leo
2002-04-16 14:43
2002.07.18
WMQueryEndSession? не дайте выключиться моему Windows, плз


3-57955
boa
2002-06-24 06:50
2002.07.18
Проблема с доступом к пакетной процедуре через роль


14-58286
SeF
2002-06-21 03:24
2002.07.18
ловля багов