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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2007, 14:44   #1
SoLL
Пользователь
 
Регистрация: 26.07.2007
Сообщений: 18
Вопрос Как получить список процессов?

Ну собственно сам вопрос в названии темы. Заодно хотелось бы уточнить кое-что. Существуют ли процессы которые нельзя отобразить в списке? Если нет, то есть ли такие, которые нельзя отобразить стандартным методом?
SoLL вне форума Ответить с цитированием
Старый 30.07.2007, 07:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот так :

Код:
unit Unit1;

interface

uses        tlhelp32,     
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    ListBox2: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.FormCreate(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
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);
   ListBox1.Items.Append(string(p.szExeFile));
   ListBox2.Items.Append(inttostr(p.th32ProcessID));
  end;
 end;  {}

 end;
end.
Процессы которые нельзя отобразить вот так существуют. Но это уже посложнее.
I'm learning to live...

Последний раз редактировалось rpy3uH; 23.10.2008 в 09:03.
Stilet вне форума Ответить с цитированием
Старый 31.07.2007, 20:01   #3
SoLL
Пользователь
 
Регистрация: 26.07.2007
Сообщений: 18
По умолчанию

Ого, как сложно оказалось, однако, попробовал и всё работает
Спасибо огромное, буду теперь разбираться в написанном.
SoLL вне форума Ответить с цитированием
Старый 11.08.2007, 21:26   #4
SoLL
Пользователь
 
Регистрация: 26.07.2007
Сообщений: 18
По умолчанию

Здравствуйте. У меня всё же возник вопрос о том как можно отобразить скрытые процессы?
SoLL вне форума Ответить с цитированием
Старый 16.08.2007, 01:09   #5
Хs-You
Пользователь
 
Аватар для Хs-You
 
Регистрация: 16.08.2007
Сообщений: 33
Счастье CloseProg

(сделай всё как сдесь написано если всё правильно напишеш то сможеш увидеть и скрытые процесы и не скрытые и убить даже сможещ )

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Panel1: TPanel;
    Button2: TButton;
    Button1: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    Button3: TButton;
    CheckBox4: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure CheckBox3Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure CheckBox4Click(Sender: TObject);
  private
    { Private declarations }
  public
    procedure KillProgram(ClassName: PChar; WindowTitle: PChar);
    { Public declarations }
  end;

var
  Form1: TForm1;
  i:integer;
implementation

{$R *.DFM}


procedure TForm1.KillProgram(ClassName: PChar; WindowTitle: PChar);
const
 PROCESS_TERMINATE = $0001;
var
 ProcessHandle:THandle;
 ProcessID:Integer;
 TheWindow:HWND;
begin
 TheWindow:=FindWindow(Classname, WindowTitle);
 GetWindowThreadProcessID(TheWindow, @ProcessID);
 ProcessHandle:=OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
 TerminateProcess(ProcessHandle,4);
end;

procedure TForm1.Button1Click(Sender: TObject);
VAR
 Wnd : hWnd;
 buff: array [0..127] of Char;
begin
 ListBox1.Clear;
 Wnd:=GetWindow(Handle, gw_HWndFirst);
 while Wnd<>0 do
  begin //Не показываем:
   if (Wnd<>Application.Handle) and //-Собственное окно
   (IsWindowVisible(Wnd)or checkbox1.checked) and //-Невидимые окна
   ((GetWindow(Wnd, gw_Owner)=0) or checkbox2.checked) and //-Дочернии окна
   (GetWindowText(Wnd, buff, sizeof(buff))<>0) //-Окна без заголовков
    then
     begin
      GetWindowText(Wnd, buff, sizeof(buff));
      ListBox1.Items.Add(StrPas(buff));
     end;
    Wnd:=GetWindow(Wnd, gw_hWndNext);
  end;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
 Killprogram(nil,pchar(ListBox1.Items.Strings[ListBox1.ItemIndex]));
 Sleep(100);
 Button1Click(Form1);
 if i=ListBox1.Items.Count
  then ListBox1.Selected[i-1]:=true
 else
  ListBox1.Selected[i]:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Button1Click(Form1);
 Application.Title:='Close Program';
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 Button1Click(Form1);
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
 Button1Click(Form1);
end;

procedure TForm1.CheckBox3Click(Sender: TObject);
begin
 if Listbox1.Sorted=false then Listbox1.Sorted:=true
 else Listbox1.Sorted:=false;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
 i:=ListBox1.ItemIndex;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 WinExec(Pchar('rundll32 shell32,SHExitWindowsEx 2'),sw_Show);
end;

procedure TForm1.CheckBox4Click(Sender: TObject);
begin
 if Button3.Enabled=false then
  begin
   Button3.Enabled:=true;
   CheckBox4.Caption:='ON';
  end
 else
  begin
   Button3.Enabled:=false;
   CheckBox4.Caption:='OFF';
  end;
end;

end.
Как два байта переслать???

Последний раз редактировалось rpy3uH; 29.07.2008 в 15:52.
Хs-You вне форума Ответить с цитированием
Старый 16.08.2007, 13:54   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
сделай всё как сдесь написано если всё правильно напишеш то сможеш увидеть и скрытые процесы и не скрытые и убить даже сможещ
Хыы, не факт
пыщь
JTG вне форума Ответить с цитированием
Старый 18.08.2007, 01:19   #7
Хs-You
Пользователь
 
Аватар для Хs-You
 
Регистрация: 16.08.2007
Сообщений: 33
По умолчанию

ФАКТ!!! Доказано ZANYSI!!!
Как два байта переслать???
Хs-You вне форума Ответить с цитированием
Старый 18.08.2007, 13:13   #8
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Я боюсь эта прога даже не все нескрытые процессы увидит, потому что опирается на хэндлы окон...
Юзаем NtQuerySystemInformation.
still_alive вне форума Ответить с цитированием
Старый 20.01.2012, 14:21   #9
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

А в чем разница, между ZwQuerySystemInformation и NtQuerySystemInformation ?
Что ту, что другую MSDN рекомендует не использовать.
L6go1as вне форума Ответить с цитированием
Старый 20.01.2012, 14:30   #10
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Хs-You Посмотреть сообщение
(сделай всё как сдесь написано если всё правильно напишеш то сможеш увидеть и скрытые процесы и не скрытые и убить даже сможещ )
БРЕД. поиск процессов основанный на окнах заведомо ненадёжен.
rpy3uH вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить список запущенных процессов на компе One.Love Win Api 10 17.03.2009 01:36
Получить список сетевых принтеров Старовъръ Win Api 4 12.08.2008 17:06
Получить список автозагрузки, из меню ПУСК Alter Общие вопросы Delphi 5 03.05.2008 17:45
Получить список папок Иллидан Общие вопросы Delphi 1 22.03.2008 15:24
Как получить список запускаемых программ? kozei Win Api 8 01.11.2007 16:07