Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить список запущенных приложений [D6, WinXP]


Pasha L ©   (2005-07-31 13:21:00) 

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


Джо   (2005-08-03 01:06:00) [1]


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

Да.


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

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


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

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


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

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


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

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


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

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


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

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


TechnoDreamer   (2005-08-01 02:49:00) [8]

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

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;


Eraser   (2005-07-31 14:03:00) [9]

Pasha L   (31.07.05 13:57) [4]

неза


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

спа


Eraser   (2005-07-31 13:55:00) [11]

Pasha L   (31.07.05 13:47) [2]

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


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

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


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

см. Process32First/Process32Next и CreateToolhelp32Snapshot.


Наверх

Титульная страница Поиск, карта сайта Написать письмо