Zireael |
Отправлено: 30 Августа, 2021 - 15:06:43
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Класс одинаковый: "Chrome_WidgetWin_1"
Можно искать только по классу окна, вместо имени -1.
CODE:window (-1, "Chrome_WidgetWin_1", -1); |
|
|
koba |
Отправлено: 30 Августа, 2021 - 15:26:46
|
Участник
Покинул форум
Сообщений всего: 85
Дата рег-ции: Авг. 2021
Репутация: 0
|
Zireael пишет: Цитата: Класс одинаковый: "Chrome_WidgetWin_1"
Можно искать только по классу окна, вместо имени -1.
CODE:window (-1, "Chrome_WidgetWin_1", -1);
прописываю в старте
CODE:window (-1, "Chrome_WidgetWin_1", 1619, 90, 300, 949, -1)
но оно вообще не реагирует не меняет размер положение, а следовательно его не видит и не работает с ним в фоне.
только если окно перед запуском соответствует размеру положению.
Даже по полностью прописанному имени и классу размеру, все кавычки включены,
и все равно вообще не реагирует.(Отредактировано автором: 30 Августа, 2021 - 15:34:10) |
|
|
Zireael |
Отправлено: 31 Августа, 2021 - 01:43:54
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: только если окно перед запуском соответствует размеру положению.
Если указали позицию и размеры, то разумеется окно должно соответствовать указанным параметрам.
Цитата: Даже по полностью прописанному имени и классу размеру, все кавычки включены,
и все равно вообще не реагирует.
Не реагирует и не находится не одно и тоже. Можно проверить нашлось окно или нет:
CODE:win w = window (-1, "Notepad", -1); // найти окно блокнота
if(w)messagebox("Окно найдено");
else messagebox("Окно не найдено");
Поиск по части имени:
CODE:// блок Старт
external(INT, "FindWindowEx", "FindWindowExA", "user32.dll");
external(INT, "GetWindowText", "GetWindowTextA", "user32.dll");
string NameWindow="Блокнот"; // имя окна или часть имени
char FullNameWindow[255];
string temp;
win w[10];
int i, handle, CountWindow=0;
// блок кода
handle = FindWindowEx(0, 0, 0, 0);
while(handle!=0)
{
GetWindowText (handle, address (#FullNameWindow[0]), 255);
if(regexsearch(1, #temp, format(#FullNameWindow[0]), NameWindow))
{
messagebox(format(#FullNameWindow[0])); // полное имя окна
w[CountWindow]=window(format(#FullNameWindow[0])); // найти окно
CountWindow++;
}
handle=FindWindowEx(0, handle, 0, 0);
}
messagebox("Найдено окон: "+format(CountWindow));
for(i=0; i<CountWindow; i++) // цикл для всех окон
{
// новая позиция окна
w.left[i] = 200;
w.top[i] = 100;
// новый размер окна
w.width[i] = 600;
w.height[i] = 400;
movewindow(w[i]); // переместить окно
} |
|
|
koba |
Отправлено: 31 Августа, 2021 - 14:26:49
|
Участник
Покинул форум
Сообщений всего: 85
Дата рег-ции: Авг. 2021
Репутация: 0
|
Zireael Цитата: только если окно перед запуском соответствует размеру положению.
Все прописал как выше, только у меня был размер в старте прописан и по нему же работал в фоне:
window (-1, -1, 1619, 90, 300, 949, -1)
и теперь они не совпадали, пришлось подгонять менять на:
CODE:// новая позиция окна
w.left[i] = 1615;
w.top[i] = 63;
// новый размер окна
w.width[i] = 308;
w.height[i] = 980;
movewindow(w[i]); // переместить окно
Оно меняет размер и положение как надо, но далее не видит окно и по условиям скрипта закрывает кибор
и только когда второй раз прогу запускаешь, когда окно по размеру и положению подходит, тогда работает.
Это не дело. |
|
|
koba |
Отправлено: 31 Августа, 2021 - 14:50:47
|
Участник
Покинул форум
Сообщений всего: 85
Дата рег-ции: Авг. 2021
Репутация: 0
|
Zireael пишет: Цитата: и только когда второй раз прогу запускаешь, когда окно по размеру и положению подходит, тогда работает.
Зачем искать окно по позиции и размеру если оно не соответствует этим параметрам? Ищите по имени окна, классу, имени процесса.
Так в том то и беда, что находит только по размеру и положению окна.
Уже и по полному имени, и по классу, все галки включены, и поочередно, и по окнам и по контролам - не находит.
(Добавление)
Попробовал в Блокноте найти лишь по классу: window (-1, "Notepad", -1)
находит и работает не закрывается.
а в Хроме броузере не работает даже со всеми включенным. |
|
|
Zireael |
Отправлено: 31 Августа, 2021 - 15:07:08
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
По части имена нашлось же?
CODE:// блок Старт
external(INT, "FindWindowEx", "FindWindowExA", "user32.dll");
external(INT, "GetWindowText", "GetWindowTextA", "user32.dll");
string NameWindow="Google Chrome"; // имя окна или часть имени
char FullNameWindow[255];
string temp;
win w=formatiw(0);
int handle;
// блок кода
handle = FindWindowEx(0, 0, 0, 0);
while(handle!=0)
{
GetWindowText (handle, address (#FullNameWindow[0]), 255);
if(regexsearch(1, #temp, format(#FullNameWindow[0]), NameWindow))
{
messagebox(format(#FullNameWindow[0]));
w=window(format(#FullNameWindow[0])); // найти окно
break;
}
handle=FindWindowEx(0, handle, 0, 0);
}
if(w)
{
messagebox("Окно найдено");
activate(w); // активировать найденное окно
pause(2000);
}
else messagebox("Окно не найдено");
|
|
|
|