![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить список запущенных приложений [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.