Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 5.86 Получение списка всех открытых, видимых окон открытых процессом по его PID

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

1. Kibor - 18 Марта, 2021 - 05:42:53 - перейти к сообщению
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]));
}
}
2. Kibor - 18 Марта, 2021 - 09:17:34 - перейти к сообщению
Получение 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]);
}
}
}

Powered by ExBB FM 1.0 Final