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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2011, 14:41   #1
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию список процессов windows 7

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TLHelp32, PsAPI, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    btn1: TButton;
    lst1: TListBox;
    lst2: TListBox;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ProcessHandle: THandle;
  ProcessExePath: array[0..127] of Char;
  pmc: PPROCESS_MEMORY_COUNTERS;
  cb: Integer;

implementation

{$R *.dfm}

procedure GetProcs(listbox1, listbox2: TListBox);
var
  hProcSnap: THandle;
  pe32: TProcessEntry32;

begin
  listbox1.Clear;
  listbox2.Clear;
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap = INVALID_HANDLE_VALUE then
    exit;
  pe32.dwSize := SizeOf(ProcessEntry32);
  if Process32First(hProcSnap, pe32) = true then
    while Process32Next(hProcSnap, pe32) = true do
    begin
      ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
        False, pe32.th32ProcessID);
      GetModuleFileNameEx(ProcessHandle, 0, ProcessExePath, 127);
      cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
      GetMem(pmc, cb);
      pmc^.cb := cb;
      GetProcessMemoryInfo(ProcessHandle, pmc, cb);
      if pmc^.PeakPagefileUsage <> 0 then
      begin
        listbox1.Items.add(pe32.szExeFile);
        listbox2.Items.Add(ExpandFileName(ProcessExePath));
      end;
    end;
  CloseHandle(hProcSnap);
  CloseHandle(ProcessHandle);
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  GetProcs(lst1,lst2);
end;

end.
вот что у меня получилось...ну или не получилось)

мне нужен только список процессов и пути к exeшникам
процедуру взял из менеджера процессов с delphisources.ru, немного переделал...

вообщем, что я сделал не так?

Последний раз редактировалось unbanned; 02.11.2011 в 15:15.
unbanned вне форума Ответить с цитированием
Старый 02.11.2011, 15:09   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Перед GetProcs не вставил два пробела (какой вопрос, такой и ответ).
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 02.11.2011, 15:19   #3
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

вставил два пробела, ничего не изменилось))

проблема в том что пути показывает практически все не верные, список процессов далеко не полный, и ладно бы всегда был результат одинаковый... сколько раз на кнопку нажмешь столько результатов и получишь) то пути поменяются, то количество процессов... вообщем никакой стабильности
unbanned вне форума Ответить с цитированием
Старый 02.11.2011, 15:26   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Вот как бы это в вопросе изначально надо было указывать - в чём проблема.

Система 64-битная?

Посмотрите лучше в сторону PSApi, чем с ToolHelp мучаться. ToolHelp - это старый API из Win 9x.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 02.11.2011, 15:36   #5
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

так точно... система x64
unbanned вне форума Ответить с цитированием
Старый 02.11.2011, 16:58   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

То unbanned
Поиск по форуму для "лохов" сделан ?
http://programmersforum.ru/showthread.php?t=104243
mihali4 вне форума Ответить с цитированием
Старый 02.11.2011, 20:51   #7
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

вам виднее. вопрос был "почему мой код не работает", а не "как сделать"
unbanned вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить список процессов? SoLL Win Api 19 28.01.2012 09:52
Список процессов + пути к ним Lauri Общие вопросы Delphi 8 17.06.2010 14:47
Список процессов в 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