Текущий архив: 2005.10.02;
Скачать: CL | DM;
Вниз
Проблема с OpenProcess Найти похожие ветки
← →
Anonim (2005-08-08 10:34) [0]Почему функция OpenProcess возвращает для всех ID (их около 30) полученных функцией EnumProcesses один и тот же не нулевой Handle?
← →
begin...end © (2005-08-08 10:46) [1]Код можно увидеть?
← →
n0name (2005-08-08 11:52) [2]Неправильно используешь OpenProcess.
← →
begin...end © (2005-08-08 11:58) [3]> Anonim
Сейчас попробовал -- у меня то же самое. Использовал такой код:var
ProcList: array [1..1024] of Cardinal;
I, ProcHandle, ProcCount: Cardinal;
begin
if EnumProcesses(@ProcList, sizeof(ProcList), ProcCount) then
begin
ProcCount := ProcCount div sizeof(Cardinal);
for I := 1 to ProcCount do
begin
ProcHandle := OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcList[I]);
try
Memo.Lines.Add(IntToStr(ProcHandle))
finally
CloseHandle(ProcHandle)
end
end
end
end.
Вероятно, ничего страшного в этом нет. Хоть новый хэндл и имеет такое же значение, как и старый, но связан он уже с другим процессом. Вот если бы закрытия хэндла (CloseHandle) после его получения не было, и вызовы OpenProcess для разных процессов возвращали бы одинаковые значения, тогда стоило бы задумываться.
← →
begin...end © (2005-08-08 12:14) [4]
var
ProcList: array [1..1024] of Cardinal;
FileName: array [0..MAX_PATH] of Char;
I, ProcHandle, ProcCount: Cardinal;
begin
if EnumProcesses(@ProcList, sizeof(ProcList), ProcCount) then
begin
ProcCount := ProcCount div sizeof(Cardinal);
for I := 1 to ProcCount do
begin
ProcHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, ProcList[I]);
if ProcHandle <> 0 then
try
if GetModuleFileNameEx(ProcHandle, 0, @FileName, sizeof(FileName)) <> 0 then
Memo.Lines.Add(Format("Handle: %d; File: %s", [ProcHandle, FileName]))
finally
CloseHandle(ProcHandle)
end
end
end
end.
Хэндлы одинаковые, а имена файлов модулей -- разные. Так что -- ничего страшного. Главное, что в одно и то же время нет двух хэндлов, имеющих одинаковое значение, но относящихся при этом к разным процессам.
Страницы: 1 вся ветка
Текущий архив: 2005.10.02;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.048 c