Форум: "WinAPI";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];
ВнизGetModuleFileNameEx Найти похожие ветки
← →
SpyBoy © (2006-01-16 17:24) [0]
procedure GetProcessList(sl:Tstrings);
var
pe:TProcessEntry32;
ph, snap:THandle;//дескрипторы процесса и снимка
mh:hmodule;//дескриптор модуля
procs:array[0..$fff] of dword;//массив для хранения дескрипторов процессов
count, cm:cardinal;//количество процессов
q,i:integer;
ModName:array[0..max_path] of char;//имя модуля
begin
sl.Clear;
if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then begin //если это Win9x
snap:=CreateToolhelp32Snapshot(th32cs_snapprocess, 0);
if integer(snap)=-1 then
begin
exit;
end else
begin
pe.dwSize:=sizeof(pe);
if Process32First(snap, pe) then
repeat
sl.Add(string(pe.szExeFile));
until not Process32Next(snap, pe);
end;
end
else
begin //Если WinNT/2000/XP
if not EnumProcesses(@procs, sizeof(procs), count) then
begin
exit;
end;
for i := 0 to count do
begin
ph:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
false, procs[i]);
if ph>0 then
begin
EnumProcessModules(ph, @mh, 4, cm);
GetModuleFileNameEx(ph, mh, ModName, sizeof(ModName));
if string(ModName)="E:\585.exe" then l=true else l=false; ///////////-???
sl.Add(string(ModName));
for q:=0 to sl.Count-1 do ///////////-???
if sl.text="E:\585.exe" then l=true else l=false;
CloseHandle(ph);
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetProcessList(listbox1.Items) ;
end;
Если 585.ехе запущен после моей проги то всё нормально(t:=true), а вот если до то почему-то не катит :(
Может кто подскажет !?!?
← →
begin...end © (2006-01-16 17:37) [1]> SpyBoy © (16.01.06 17:24)
> for i := 0 to count do
for i := 0 to count div sizeof(DWORD) - 1 do
> EnumProcessModules(ph, @mh, 4, cm)
А это зачем?
> GetModuleFileNameEx(ph, mh, ModName, sizeof(ModName))
GetModuleFileNameEx(ph, 0, ModName, sizeof(ModName))
← →
SpyBoy © (2006-01-16 18:41) [2]Замечания учтены и ошибки исправленны, однако....:(
Если 585.ехе запущен после моей проги то всё нормально(t:=true), а вот если до то почему-то не катит :(
Даже если переделать
for q:=0 to sl.Count-1 do
if sl.text="E:\585.exe" then l=true else l=false;
в
for q:=0 to sl.Count-1 do
if sl.strings[q]="E:\585.exe" then l=true else l=false;
← →
ALFER © (2006-02-23 14:03) [3]Неужели никаких вариантов болше нет ?!!!
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.013 c