Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.25;
Скачать: CL | DM;

Вниз

Как получить список запущенных приложений   Найти похожие ветки 

 
Pasha L   (2005-07-31 13:21) [0]

Здравствуйте. Вот в чем заключается мой вопрос:
Можно ли в дельфи получить список всех запущенных в данный момент приложений? если да, то каким образом?
и ещё. все ли запущенные приложения отображаются в списке Windows Task Manager >> Processes?


 
Eraser ©   (2005-07-31 13:36) [1]

см. Process32First/Process32Next и CreateToolhelp32Snapshot.


 
Pasha L   (2005-07-31 13:47) [2]

ясно. а каком компоненте содержатся это ф-ции?


 
Eraser ©   (2005-07-31 13:55) [3]

Pasha L   (31.07.05 13:47) [2]

Не в компоненте, в модуле TlHelp32.


 
Pasha L   (2005-07-31 13:57) [4]

спа


 
Eraser ©   (2005-07-31 14:03) [5]

Pasha L   (31.07.05 13:57) [4]

неза


 
TechnoDreamer ©   (2005-08-01 02:49) [6]

Вот недавно использовал как раз:

procedure TForm1.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 //если это 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 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;


 
Pasha L   (2005-08-02 16:01) [7]

TechnoDreamer ©   (01.08.05 02:49) [6]
А в каком модуле искать EnumProcesses?


 
Pasha L   (2005-08-02 16:38) [8]

И что такое $FFF ?


 
n0name   (2005-08-02 17:00) [9]

>>Pasha L   (02.08.05 16:01) [7]
PsAPI
>>Pasha L   (02.08.05 16:38) [8]
Число от балды. Лучше использовать дин. массивы.


 
Pasha L   (2005-08-02 17:02) [10]

Ясно. Спасибо


 
Pasha L   (2005-08-02 23:16) [11]

У меня ХР. Использую вторую часть программы TechnoDreamer"а. Но что то вылезает ошибка на OpenProcess. Access violation at address 0044DB8F in module Project2.exe. Project2.exe - это моя программа


 
Pasha L   (2005-08-02 23:43) [12]

У меня вопрос. Действует ли process32first и next в видоусе ХР


 
Джо ©   (2005-08-03 01:06) [13]


>  [12] Pasha L   (02.08.05 23:43)
> У меня вопрос. Действует ли process32first и next в видоусе
> ХР

Да.



Страницы: 1 вся ветка

Текущий архив: 2005.09.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
1-1125561181
aybolit66
2005-09-01 11:53
2005.09.25
запуск одного экземпляра приложения


1-1125639191
bon
2005-09-02 09:33
2005.09.25
Чертёж Autocad на форме


14-1125085422
Piter
2005-08-26 23:43
2005.09.25
ЦСКА - ЛИВЕРПУЛЬ


6-1117460178
Flame
2005-05-30 17:36
2005.09.25
что за привычка закрывать темы?


1-1125575838
kyn66
2005-09-01 15:57
2005.09.25
ListView с разноцветными строками