首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi 中怎么取某一进程所加载的所有dll

2012-03-21 
Delphi 中如何取某一进程所加载的所有dll?取得某进程加载调用的所有dll.包括静态加载和动态加载.[解决办法

Delphi 中如何取某一进程所加载的所有dll?
取得某进程加载调用的所有dll.包括静态加载和动态加载.


[解决办法]
需要自己翻译一下
http://msdn.microsoft.com/en-us/library/ms686849.aspx
[解决办法]
找到一个Delphi版的,你可以试试

Delphi(Pascal) code
uses tlhelp32;//根据进程名称获取进程IDfunction TForm1.GetProcessIDByName(const ProcessName: string): DWORD;var    FSnapshotHandle: THandle;    pe: PROCESSENTRY32;begin    result := 0;    FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);    pe.dwSize := SizeOf(PROCESSENTRY32);    if (Process32First(FSnapshotHandle, pe)) then    begin        while (Process32Next(FSnapshotHandle, pe)) do        begin            if (UpperCase(ExtractFileName(pe.szExeFile)) = UpperCase(ProcessName)) then            begin                Result := pe.th32ProcessID;            end;        end;    end;    CloseHandle(FSnapshotHandle);end;procedure TForm1.Button1Click(Sender: TObject);var    pid: dword;    hnd: THandle;    hModuleSnap: THandle;    me32: MODULEENTRY32;begin    pid := GetProcessIDByName(edit1.Text);    hnd := openprocess(PROCESS_ALL_ACCESS, FALSE, pid);    hModuleSnap := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);    if hModuleSnap = INVALID_HANDLE_VALUE then         exit;    me32.dwSize := SizeOf(MODULEENTRY32);    if Module32First(hModuleSnap, me32) then    begin        repeat            Memo1.Lines.Add(format('MODULE NAME: %s', [me32.szModule]));            Memo1.Lines.Add(format('executable:  %s', [me32.szExePath]));            Memo1.Lines.Add(format('process id:  %d', [me32.th32ProcessID]));            Memo1.Lines.Add(format('ref count(g):%d', [me32.GlblcntUsage]));            Memo1.Lines.Add(format('ref count(p):%d', [me32.ProccntUsage]));            Memo1.Lines.Add(format('base address:%d', [DWORD(me32.modBaseAddr)]));            Memo1.Lines.Add(format('base size:   %d', [me32.modBaseSize]));        until not Module32Next(hModuleSnap, me32);    end;    CloseHandle(hModuleSnap);end;
[解决办法]
1L不带这样的,回复的也太快了啊,好不容易懂一道题的说
[解决办法]
也可以用OpenProcess,EnumProcessModules配合GetModuleFileNameEx来使用
函数在PSAPI单元

热点排行