Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как получить список всех процессов(+)?

6.8K
09 сентября 2004 года
VoldemarS
8 / / 09.09.2004
Как получить список всех процессов запущенных в текущий момент?
6.3K
09 сентября 2004 года
xTrim
38 / / 11.06.2004
вот, правда на паскале, но я думаю смысл ясен

var a:hwnd;
b:array [0..255] of char;
a:=GetWindow(GetTopWindow(0),GW_HWNDNEXT);
GetWindowText(a,b,32);
while a<>0 do begin
a:=GetWindow(a,GW_HWNDNEXT);
GetWindowText(a,b,32);
str.Add(IntToStr(a));
ListBox1.Items.Add(StrPas(b));
end;

либо функцией ЕnumWindows по ситуации
246
09 сентября 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by xTrim
вот, правда на паскале, но я думаю смысл ясен

var a:hwnd;
b:array [0..255] of char;
a:=GetWindow(GetTopWindow(0),GW_HWNDNEXT);
GetWindowText(a,b,32);
while a<>0 do begin
a:=GetWindow(a,GW_HWNDNEXT);
GetWindowText(a,b,32);
str.Add(IntToStr(a));
ListBox1.Items.Add(StrPas(b));
end;

либо функцией ЕnumWindows по ситуации



А Ты уверен, что найдешь консоли и процессы без окон?
см. Toolhelp.dll

243
10 сентября 2004 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by GIZMO


А Ты уверен, что найдешь консоли и процессы без окон?
см. Toolhelp.dll


Вот прога через которую можно найти все процессы и вывести имена процессов имеющих заголовок (даже у невидимых). Как вывести имя исполняемого файла я не помню, надо ковыряться в справках (могу только сказать, что это так же через дескриптор - добавить одну строчку). Посмотри сам по WIN API. Кстати, если найдешь хорошую справку на эту тему, можешь прислать мне адресок (на [email]pacific_7@mail.ru[/email]) - свою я к сожалению утратил с HDD превратившимся в 40 Gb bad'ов.
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

HWND win,WIN;
char nam_proc[255];//имя найденого процесса
int kol_proc=0;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
win=FindWindow//берем дескриптор своей программы
(
"TApplication",//тип приложения (можно посмотреть в WinSight32 - поставляется вместе с Builder
0/*Здесь можно написать имя своей проги если в системе есть еще приложения написаные в Buider или Delphi*/
);
WIN=win;
while(1)//цикл для определения процессов вверх в Z-последовательности
{
kol_proc++;
if(!GetNextWindow(win,GW_HWNDNEXT))break;//остановка, если следующего окна нет
win=GetNextWindow(win,GW_HWNDNEXT);//присваиваем дескриптору новое значение
GetWindowText(win,nam_proc,255);//сохраняем имя его окна
if((AnsiString)nam_proc!="")Memo1->Lines->Add((AnsiString)nam_proc);//если у процесса есть заголовок, то выводим
}
win=WIN;//восстанавливаем исходное значение дескриптора
while(1)//цикл для определения процессов вниз в Z-последовательности
{
kol_proc++;
if(!GetNextWindow(win,GW_HWNDPREV))break;//остановка, если предыдущего окна нет
win=GetNextWindow(win,GW_HWNDPREV);//присваиваем дескриптору новое значение
GetWindowText(win,nam_proc,255);//сохраняем имя его окна
if((AnsiString)nam_proc!="")Memo1->Lines->Add((AnsiString)nam_proc);//если у процесса есть заголовок, то выводим
}
Memo1->Lines->Add("Количество процессов в системе (найденых):" +(AnsiString)kol_proc);
}
//---------------------------------------------------------------------------

246
10 сентября 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by pacific_7

Вот прога через которую можно найти все процессы и вывести имена процессов имеющих заголовок (даже у невидимых). Как вывести имя исполняемого файла я не помню, надо ковыряться в справках (могу только сказать, что это так же через дескриптор - добавить одну строчку). Посмотри сам по WIN API. Кстати, если найдешь хорошую справку на эту тему, можешь прислать мне адресок (на [email]pacific_7@mail.ru[/email]) - свою я к сожалению утратил с HDD превратившимся в 40 Gb bad'ов.


Говорю не найдешь процессы у которых НЕТ ОКОН (нет это НЕТ совсем, а значит через дескриптор ничего не найдешь...)

В Win32.hlp - который в поставке с билдером:

The following functions are used with tool help services:

CreateToolhelp32Snapshot
Heap32First
Heap32ListFirst
Heap32ListNext
Heap32Next
Module32First
Module32Next
Process32First
Process32Next
Thread32First
Thread32Next
Toolhelp32ReadProcessMemory

243
12 сентября 2004 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by GIZMO

Говорю не найдешь процессы у которых НЕТ ОКОН (нет это НЕТ совсем, а значит через дескриптор ничего не найдешь...)


На счет справок с билдером - про них мне и так известно (в них дочерта чего нет), а про дескрипторы ты помоему не прав - например если создать приложение без формы (удалить ее), то в моем варианте ее видно. Ты сам проверь этот вариант, кстати отображается процессов больше чем в диспетчере задач и это не считая дочерних окон (отображается - это только те, что выведены в поле Memo, а имееется еще множество без названий - если убрать if((AnsiString)nam_proc!="") то появится множество пустых строк).
P.S. А ты в своем варианте использовал не дескрипторы???

246
13 сентября 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by pacific_7

На счет справок с билдером - про них мне и так известно (в них дочерта чего нет),


$(BCB)\include\tlhelp32.h с комментариями...

Цитата:
Originally posted by pacific_7

а про дескрипторы ты помоему не прав -


Нет формы -> нет вызова CreateWindow -> нет дескриптора...

Цитата:
Originally posted by pacific_7

P.S. А ты в своем варианте использовал не дескрипторы???


Использую только не оконные (HWND). Вот нашел пример от Victor Kazakov & K (комментировать к сожалению нет времени, разберетесь сами...), см. также - tlhelp32.h и если есть MSDN там должен быть пример PView.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог