Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.06.2010, 23:31
guranvir guranvir вне форума
Начинающий
 
Регистрация: 19.01.2010
Сообщения: 113
Репутация: 11
По умолчанию Перечисление процессов при помощи PsAPI

Выдает весьма странные результаты следующий код:
Код:
rocedure TForm1.Button3Click(Sender: TObject);
var
pID:array[0..1024] of DWORD;//ID поцессов от функции EnumProcess
hp:THandle;//open handle to the specified process(от функции OpenProcess)
cbNeeds:dword;//Сколько требовалось для списка IDшек и именни процесса
i:integer;
procname:array[0..255] of WideChar; //буфер для имени
str:string; //буфер для преобразования
begin
 if  EnumProcesses(@pID,sizeof(pID),cbNeeds)=true then //перечисляем процессы
 begin
if cbNeeds<=sizeof(pID) then//проверяем хватило ли места?
begin

for i := 0 to 1024 do
begin
hP := OpenProcess(PROCESS_QUERY_INFORMATION or
                                    PROCESS_VM_READ,
                                     false, pID[i]);//открываем процесс для получения инфы
GetModuleFileNameEx(hp,0,procname,cbneeds);//получаем имя
str:=WideCharToString(procname);//преобразуем

Memo1.Lines.Add(str);
if pos(str,'winlogon.exe')<>0 then//проверяем это winlogon? (Ищем подстроку)
begin
Memo1.Lines.Add(str);
end;
end;
end
 end
else
begin
showMessage(intTosTr(cbNeeds)); //выодим необходимое количество памяти в случае нехватки
end;
end;
В чем проблемы:
1) В именах отобржает кразябру
2) Какие то процессы отображает верно, но одни и те же многократно
3) Не видит winlogon
Ответить с цитированием
  #2  
Старый 17.06.2010, 09:03
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

вот уже давно работает код:
Код:
uses
  PsAPI,

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);

procedure TForm1.Button2Click(Sender: TObject);
var
  lpidProcess: array [0..$ffff] of DWORD;
  cbNeeded: DWORD;
  i: Integer;
  openprocesshandle: THandle;
  lphModule: HMODULE;
  lpFilename: array [0..MAX_PATH] of Char;
  len: Cardinal;
begin
  Memo1.Lines.Clear;
  if EnumProcesses(@lpidProcess, SizeOf(lpidProcess), cbNeeded) then
  begin
    for i:=0 to cbNeeded div SizeOf(DWORD)-1 do
    begin
      openprocesshandle:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, lpidProcess[i]);
      if openprocesshandle>0 then
      begin
        if EnumProcessModules(openprocesshandle, @lphModule, SizeOf(HMODULE), cbNeeded) then
        begin
          len:=GetModuleFileNameEx(openprocesshandle, lphModule, lpFilename, SizeOf(lpFilename));
          if len>0 then
            Memo1.Lines.Add(Copy(lpFilename, 1, len));
        end;
        CloseHandle(openprocesshandle);
      end;
    end;
  end;
end;
Ответить с цитированием
  #3  
Старый 17.06.2010, 12:40
guranvir guranvir вне форума
Начинающий
 
Регистрация: 19.01.2010
Сообщения: 113
Репутация: 11
По умолчанию

Спасибо проблему некорректного воспроизведения имен решило. Однако Опять же тот самый процесс за которым идет охота не обнаружен. Я так понимаю что к нему требуется применить отладочные привилегии. И опять повторяется ситуация дублирования имен процессов
Ответить с цитированием
  #4  
Старый 17.06.2010, 12:43
guranvir guranvir вне форума
Начинающий
 
Регистрация: 19.01.2010
Сообщения: 113
Репутация: 11
По умолчанию

Хотя дублирования нет))Это просто Google Chrome для каждой вкладки инициирует отдельный процесс))
Ответить с цитированием
  #5  
Старый 17.06.2010, 16:28
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

какая ОС? на XP winlogon.exe под администратором виден. на 7 проверю попозже.
Ответить с цитированием
  #6  
Старый 17.06.2010, 17:45
guranvir guranvir вне форума
Начинающий
 
Регистрация: 19.01.2010
Сообщения: 113
Репутация: 11
По умолчанию

Ось Виста и 7
Ответить с цитированием
  #7  
Старый 17.06.2010, 17:50
guranvir guranvir вне форума
Начинающий
 
Регистрация: 19.01.2010
Сообщения: 113
Репутация: 11
По умолчанию

Достаточно запустить прогу от имени админа и все увидит)Спасибо за помощь!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:38.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025