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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2011, 13:40   #1
Crunkordie
Пользователь
 
Регистрация: 18.02.2011
Сообщений: 48
По умолчанию Чтение всех запущенных процессов

Здравствуйте.
есть код программы :
Код:
S:                 array of string;
cb,z:              Integer;
ProcessHandle:     THandle;
ProcessExePath:    array[0..127] of Char;
pmc:               PPROCESS_MEMORY_COUNTERS;
T: Textfile;
...
procedure GetProcs();
var
  hProcSnap: THandle;
  pe32: TProcessEntry32;
begin
  z:=0;
  FileDescription:= '';
  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
                                              S[z]:=pe32.szExeFile+' : '+ExpandFileName(ProcessExePath);
                                              z:=z+1;
                                              SetLength(S, z+1);
                                           end;
    end;
  CloseHandle(hProcSnap);
  CloseHandle(ProcessHandle);
  showmessage('vse');
end;
...
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;

begin
GetProcs();
AssignFile(T,'D:\test.txt');
Rewrite(T);
Writeln(T, '[Proc]');
for I := 0 to z do begin
                    Writeln(T, S[i]);
                   end;
end;
Программа считывает все процессы и записывает в текстовый файл. При запуске в среде разработки отображаются все процессы, а если запустить через exe, то большую часть не видит. Это можно как-нибудь исправить?
Crunkordie вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ограничение на кол-во запущенных копий программы seregarem Общие вопросы Delphi 6 04.10.2010 16:15
резидентная программа выводящая список запущенных процессо vaquero Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 02.06.2010 19:13
как получить список запущенных процессов на компе One.Love Win Api 10 17.03.2009 01:36
Проверка количества запущенных экземпляров приложения yulia Общие вопросы Delphi 3 07.10.2008 02:30
Закрыть доступ для всех процессов к файлу Sanek_ntsk Общие вопросы Delphi 6 04.12.2007 16:26