Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (1): [1]   

> Описание: Получение списка окон процесса по его PID
Kibor
Отправлено: 18 Марта, 2021 - 12:42:53
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




listwinprocess Получает список всех открытых, видимых окон открытых процессом по его PID.
Узнать PID процесса - Поиск и / или получение списков процессов

Синтаксис:
CODE:
int k=listwinprocess(#w[0], PID);

Первым параметром идет указатель на массив win, в который запишутся указатели на окна.
Структуры win надо потом заполнить с помощью функции setwindowparam
Вторым - PID процесса.

Возвращает количество окон или -1 если массив win мал.

Пример:
CODE:
int PID;
win w[100];

PID=findprocess("notepad.exe");//AvtoK.exe firefox.exe notepad.exe TOTALCMD.EXE
if (PID>0)
{
int k=listwinprocess(#w[0], PID);
messagebox (k);
for (int n=0; n<k; n++)
{
setwindowparam (w[n]);
messagebox (w.name[n]+" - "+w.class[n]+" -- "+format(w.left[n])+" - "+format(w.widthclient[n]));
}
}
 
 Top
Kibor
Отправлено: 18 Марта, 2021 - 16:17:34
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Получение PID процесса по указателю на окно.
CODE:
external(INT, "GetWindowThreadProcessId", "GetWindowThreadProcessId", "User32.dll");

win w=window (-1, "MozillaWindowClass", -1);
int Hwnd=formatwi(w);
int pid=0;
GetWindowThreadProcessId(Hwnd, address(#pid));
messagebox (pid);


Получение списка всех окон процесса, по указателю на любое открытое окно этим процессом.
Пример получения указателей на окна блокнота с указателя на открытое дочерное окно "Заменить".
CODE:
external(INT, "GetWindowThreadProcessId", "GetWindowThreadProcessId", "User32.dll");

win t=window ("Заменить", "#32770", -1);
if (t)
{
int pid=0;
if(GetWindowThreadProcessId(formatwi(t), address(#pid)))
{
win w[100];
int k=listwinprocess(#w[0], pid);
for (int n=0; n<k; n++)
{
setwindowparam (w[n]);
messagebox (w.name[n]+" - "+w.class[n]+" -- "+format(w.left[n])+" - "+format(w.widthclient[n]));
}
}
}


Закрыть все окна открытые процессом. кроме главного
CODE:
external(INT, "GetWindowThreadProcessId", "GetWindowThreadProcessId", "User32.dll");
external(INT, "TerminateProcess", "TerminateProcess", "Kernel32.dll");

win t=window ("Имя файла резервной копии закладок", "#32770", -1);//Указатель на любое окно открытое
if (t)
{
int pid=0;
if(GetWindowThreadProcessId(formatwi(t), address(#pid)))
{
win w[100];
int k=listwinprocess(#w[0], pid);
for (int n=0; n<k-1; n++)
{
sendmessage(WM_CLOSE, 0, 0, w[n]);
}
}
}
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« О программе Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by