Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.029 c
4-1094025255
Alex870
2004-09-01 11:54
2004.10.10
Командный процессор


14-1095667120
Drakosha
2004-09-20 11:58
2004.10.10
множественное наследование


1-1096280146
Koala
2004-09-27 14:15
2004.10.10
Ошибка закрытии формы


9-1084737397
Жириновский_
2004-05-16 23:56
2004.10.10
как лучше сделать бой в рпг?


14-1095670956
}|{yk
2004-09-20 13:02
2004.10.10
Агония правительства Януковича,или что стоит за поднятием пенсий