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

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

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

> Без описания
Zireael
Отправлено: 22 Января, 2018 - 15:48:26
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017  
Репутация: 585




Функция поиска нескольких окон с одинаковым именем и/или классом. (Отобразить)

Возвращает количество найденных окон.
В массиве окна упорядочены в порядке их последней активности. Т. е. первым будет последнее активное окно, вторым предпоследнее и т. д.
Допускается указывать часть имени и/или класса.
Синтаксис:
CODE:
win wind[10]; // массив для указателей на окна
int count; // переменная, в которую вернётся количество найденных окон
count=Find_Window(#wind[0], "Блокнот", "Notepad", 0, 1); // вызов функции

1й параметр - указатель на массив win.
2й параметр - имя окна или часть имени. Если имени нет или не нужно учитывать, то пишем "".
3й параметр - класс окна или часть класса. Если класс не нужно учитывать, то пишем "".
4й параметр - флаг полного имени окна. 0 - указана часть имени окна, 1 - указано полное имя окна. Если имя не указано параметр игнорируется.
5й параметр - флаг полного имени класса. 0/1. Если класс не указан параметр игнорируется.
Если флаг 1, то окно будет найдено при полном совпадении имени/класса.
Если флаг 0, то будет искать указанную часть в имени/классе. Т. е., если указать имя "Блокнот" и не указывать класс, то будут найдены все окна, в имени которых содержится текст 'Блокнот'.

Сохранить функцию в txt файл, загружать через include.
Пример (Отобразить)
 
 Top
Diablo2
Отправлено: 26 Мая, 2018 - 21:09:16
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2018  
Репутация: 0




Спасибо за скрипт, пригодился. Но не пойму, должен ли он заполнять width и height найденного окна? У меня эти поля выдают мусорные значения. Можно ли как-то самому узнать размеры экрана по win переменной?

(Отредактировано автором: 26 Мая, 2018 - 21:10:50)

 
 Top
Zireael
Отправлено: 26 Мая, 2018 - 22:05:21
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
Можно ли как-то самому узнать размеры экрана по win переменной?

Наверное, размеры окна, а не экрана.
На примере блокнота:
CODE:
#include "C:\Program Files\Kibor\include\FindWindow.txt" // загружаем функцию
start("C:\Windows\system32\notepad.exe"); // запускаем блокнот
while(window(-1,"Notepad", -1)==0)sleep(100); // ждём когда блокнот откроется

win wind[10];
int count;
count=Find_Window(#wind[0], "", "Notepad", 1, 1);

external(INT, "GetClientRect", "GetClientRect", "user32.dll");
external(INT, "GetWindowRect", "GetWindowRect", "user32.dll");
int pos[4], rect[4];

GetClientRect(formatwi(wind[0]), address(#rect[0])); // получаем размеры клиента
GetWindowRect(formatwi(wind[0]), address(#pos[0])); // получаем позицию окна

messagebox(format(rect[0])+" "+format(rect[1])+" "+format(rect[2])+" "+format(rect[3]));
messagebox(format(pos[0])+" "+format(pos[1])+" "+format(pos[2])+" "+format(pos[3]));
 
 Top
Diablo2
Отправлено: 26 Мая, 2018 - 22:53:03
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2018  
Репутация: 0




Спасибо за быстрый ответ. Не знаю почему, но когда загружаю твой скрипт через include, то выдает ошибку в "full_name==1goto157", а если просто добавляю в скрипт, то все норм. Может ты знаешь в чем дело?
 
 Top
Zireael
Отправлено: 26 Мая, 2018 - 23:13:17
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017  
Репутация: 585




include никак не влияет на работу скрипта. Просто загружается содержимое файла.
 
 Top
KeSeG
Отправлено: 24 Сентября, 2018 - 13:55:17
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 52
Дата рег-ции: Сент. 2018  
Репутация: 0




Zireael, Подскажи пожалуйста, почему не работает этот код? т.е. он после выполнения куда-то "засовывает" окна, не меняя как я понимаю их размеры. Получается таким образом нельзя обращаться к окнам?

CODE:

#include "D:\FindWindow.txt"

win wind[10];
int count;
count=Find_Window(#wind[0], "", "Notepad", 1, 1);

for(int i=0;i<count;i++)
{
wind[i].width=457;
wind[i].height=836;
movewindow(wind[i]);
}

 
 Top
Zireael
Отправлено: 24 Сентября, 2018 - 14:36:26
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
wind[i].width=457;

CODE:
wind.width[i]=457;

Похоже что movewindow не работает с массивами.
CODE:
#include "D:\FindWindow.txt"
external(INT, "SetWindowPos", "SetWindowPos", "User32.dll");

win wind[10];
int count;
count=Find_Window(#wind[0], "", "Notepad", 1, 1);

for(int i=0;i<count;i++)
{
SetWindowPos(formatwi(wind[i]), -2, 0, 0, 836, 457, 2); // изменит размеры окна, положение не изменится
// SetWindowPos(formatwi(wind[i]), -2, 100, 50, 836, 457, 0); // изменит размеры и положение
}

Описание SetWindowPos https://docs.microsoft.com/en-us...ser-setwindowpos
 
 Top
Kibor
Отправлено: 24 Сентября, 2018 - 14:44:43
Post Id



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


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




Zireael , Работает
CODE:
win w[5];
w[1]=window ("Безымянный — Блокнот", "Notepad", -1);
w.width[1]=5;
movewindow(w[1]);


 KeSeG пишет:
wind[i].width


Не так тут.
Так надо.
CODE:
wind.width[i]
 
 Top
KeSeG
Отправлено: 24 Сентября, 2018 - 14:56:15
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 52
Дата рег-ции: Сент. 2018  
Репутация: 0




Zireael , Kibor , Спасибо большое. И тот и тот вариант работают. Проблема в том, что если делать так:

CODE:

for(int i=0;i<count;i++)
{
wind.width[i]=457;
wind.height[i]=836;
movewindow(wind);
}


Он меняет размер, но по всей видимости выносит положение окон за пределы видимости.

если делать так:

CODE:
for(int i=0;i<count;i++)
{
wind.width[i]=457;
wind.height[i]=836;
wind.left[i]=0;
wind.top[i]=0;
movewindow(wind[i])
}


то складывает все их в одну стопку, т.е. не оставляя их на месте.

(Отредактировано автором: 24 Сентября, 2018 - 14:56:37)

 
 Top
Zireael
Отправлено: 24 Сентября, 2018 - 15:00:29
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017  
Репутация: 585




Сначала получите позицию окна. Потом присвойте .left и .top.
http://kibor-bot.com/forum/topic...61521#1527361521
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Готовые скрипты »


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




Powered by