Текущий архив: 2004.10.10;
Скачать: CL | DM;
Вниз
Процессы в системе Найти похожие ветки
← →
sesh (2004-09-01 15:05) [0]День добрый! Подскажите пож-ста как реализовать следующее:
Мне необходимо просмотреть все процессы в системе и если нахожу к примеру процесс winamp.exe чтоб сработало какое-нибудь мое действие.
← →
Игорь Шевченко © (2004-09-01 15:16) [1]http://www.schevchenko.net.ru/SRC/QuerySystemInformation_60.zip
Может, поможет...
← →
Digitman © (2004-09-01 15:26) [2]
> Игорь Шевченко © (01.09.04 15:16) [1]
может, предложить автору "утренний" обсужденный код ? заодно и проверка и обкатка ?
← →
Игорь Шевченко © (2004-09-01 15:42) [3]Digitman © (01.09.04 15:26) [2]
Сергей, я не думаю, что в этом случае внедрение DLL окажется полезным, NtQuerySystemInformation неплохо справляется с получением списка процессов, а найти процесс по имени в том, списке, который реализован в коде по ссылке, не составит особого труда.
← →
Digitman © (2004-09-01 15:55) [4]
> Игорь Шевченко © (01.09.04 15:42) [3]
я не в плане внедрения ... это - "побочный эффект" ... вместо вызова InjectLibrary() можно всандалить все что угодно .. главное - там используется банальнейший psapi, т.е. один из вариантов решения задачи
← →
sesh (2004-09-01 15:58) [5]Спасибо, я нашел тут код один, вроде работает нормально, вот:
procedure GetProcessList(var sl:TStrings);
var
pe:TProcessEntry32;
ph, snap:THandle;
mh:hmodule;
procs:array[0..$fff] of dword;
count, cm:cardinal;
i:integer;
ModName:array[0..max_path] of char;
begin
sl.Clear;
if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then
begin
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
if not EnumProcesses(@procs, sizeof(procs), count) then
begin
exit;
end;
for i := 0 to count div 4 - 1 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));
sl.Add(string(ModName));
CloseHandle(ph);
end;
end;
end;
end;
← →
Digitman © (2004-09-01 16:09) [6]
> sesh (01.09.04 15:58) [5]
да, в общем и целом это приводит к заветной цели
← →
Alex870 (2004-09-01 17:23) [7]Во-во, а psapi работает только в NT.
← →
GrayFace © (2004-09-01 17:30) [8]Digitman © (01.09.04 15:26) [2]
может, предложить автору "утренний" обсужденный код ? заодно и проверка и обкатка ?
Дайте, plz, ссылку на ветку, в которой вы это обсуждали.
← →
Digitman © (2004-09-01 17:34) [9]
> GrayFace © (01.09.04 17:30) [8]
извини, но это было сугубо частное обсуждение
Страницы: 1 вся ветка
Текущий архив: 2004.10.10;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.025 c