Получение 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]);
}
}
} |