Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2010, 20:46   #1
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию Список процессов + пути к ним

Собственно
Код:
procedure TForm1.Button1Click(Sender: TObject);
var p:PROCESSENTRY32;ct:cardinal;th:Cardinal; mp:array[0..255] of char;
 mm:pchar;ts:TSearchRec; sst:STARTUPINFO;  ss,s:string;

begin
ListBox2.clear;
   ListBox3.Clear;
ct:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
 Process32First(ct,p);
 while Process32Next(ct,p) do begin
  begin
  if ExtractFileName(Application.ExeName)=string(p.szExeFile) then
   form1.Tag:=form1.Tag+1;
    OpenProcessToken(p.th32ProcessID,TOKEN_READ,th);
   ListBox2.Items.Append(string(p.szExeFile));
   ListBox3.Items.Append(inttostr(p.th32ProcessID));

    end;
     end;
Так получаем список процессов и занимаемую память. А можно ли как нибудь узнать ещё и путь каждого процеса т.е откуда запускаеться
Lauri вне форума Ответить с цитированием
Старый 16.06.2010, 21:20   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Посмотри проект. Сыроват правда. Там все понятно.

ADD:
Да, прости не пояснил - у меня Delphi 2010
Вложения
Тип файла: rar Список процессов с путями.rar (11.4 Кб, 128 просмотров)
"Заряженному танку в дуло не смотрят" @Dekmer in WoT

Последний раз редактировалось Kotofff; 16.06.2010 в 21:38.
Kotofff вне форума Ответить с цитированием
Старый 16.06.2010, 21:36   #3
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Kotofff спасибо! 7 делф не открыл форму почему то.... а в 2009 норм ща буду разбирать!
Lauri вне форума Ответить с цитированием
Старый 17.06.2010, 07:22   #4
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Собственно
Код:

procedure TForm1.Button1Click(Sender: TObject);
var p:PROCESSENTRY32;ct:cardinal;th:Car dinal; mp:array[0..255] of char;
mmchar;ts:TSearchRec; sst:STARTUPINFO; ss,s:string;

begin
ListBox2.clear;
ListBox3.Clear;
ct:=CreateToolhelp32Snapshot(TH32CS _SNAPALL,0);
Process32First(ct,p);
while Process32Next(ct,p) do begin
begin
if ExtractFileName(Application.ExeName )=string(p.szExeFile) then
form1.Tag:=form1.Tag+1;
OpenProcessToken(p.th32ProcessID,TO KEN_READ,th);
ListBox2.Items.Append(string(p.szEx eFile));
ListBox3.Items.Append(inttostr(p.th 32ProcessID));

end;
end;
А что ещё должно быть добавлено в Uses?
Я попробовал просто запустить, так пишет про PROCESSENTRY32 undeclared identifier
_-Re@l-_ вне форума Ответить с цитированием
Старый 17.06.2010, 07:34   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Всё, я нашёл. А как их можно программно уничтожать(процессы)?
_-Re@l-_ вне форума Ответить с цитированием
Старый 17.06.2010, 08:28   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Из DelphiWorld.....
Код:
function KillTask(ExeFileName: string): integer;
const
  PROCESS_TERMINATE=$0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  result := 0;

  FSnapshotHandle := CreateToolhelp32Snapshot
  (TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle,
  FProcessEntry32);

  while integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
    UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
    UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(OpenProcess(
      PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;

  CloseHandle(FSnapshotHandle);
end;
SERG1980 вне форума Ответить с цитированием
Старый 17.06.2010, 10:22   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
SERG1980
Это не даст полный путь к процессу.
Я лично вот такое пользую.
http://www.programmersforum.ru/showthread.php?t=62723
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.06.2010, 14:18   #8
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Виталь, в моем примере именно такая функция применяется.
Просто она там вспомогательная.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 17.06.2010, 14:47   #9
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это не даст полный путь к процессу.
Я лично вот такое пользую.
http://www.programmersforum.ru/showthread.php?t=62723
Stilet это ответ для поста №5
Цитата:
Всё, я нашёл. А как их можно программно уничтожать(процессы)?
SERG1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить список процессов? SoLL Win Api 19 28.01.2012 09:52
Список процессов в StringGrid artemavd Общие вопросы Delphi 2 02.04.2010 08:19
Пытаюсь получить список процессов... Flammpanzer Win Api 8 07.09.2009 21:00
Список процессов на удаленном компьютере Роман Радер Работа с сетью в Delphi 2 22.01.2009 02:52