Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Скрипт чтобы спрятать/показать окно.
Varlock
сообщение 2.2.2018, 17:31
Сообщение #1


**

Neophyte
Сообщений: 31
Регистрация: 17.1.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.789



Собственно сам скрипт работает без нареканий, так что его код я выкладываю на случай если кому-то пригодится. (может кто-то предложит что более оптимизированное)

Единственное, может кто посоветует, как отсекать случай - когда Findwindow не находит окна по названию(свернул и забыл что свернул) и возвращает хендл рабочего стола? А то он в этом случае, если его случайно запустить все иконки с рабочего стола винды прячет (IMG:style_emoticons/default/smile.gif)

Код
//прячем и показываем окно
log start!

set #w Findwindow (testWindow)  //находим хендл окна по имени
log #w

Get windowpos #w #X #Y #width #height        //получаем его координаты
log pos is #X #Y

if (#X != 3205) or (#Y != 0)   //если какая-то из координат не равна тем по которым он прячется
    Set windowpos 3205 0 1280 1024 #w   //прячем окно
    log pos set 3205 0

else                                   //иначе
    Set windowpos 1920 0 1280 1024 #w  //достаем его на открытую позицию.
    log pos set 1920 0

end_if

end_script

для работы надо поменять название окна и координаты куда прячем и откуда достаем. (у меня достается на второй монитор и прячется за его границу. Размеры окна я сохраняю одинаковыми чтобы другой скрипт, который будет с ним работать все адекватно делал.)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 2.2.2018, 17:48
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26689
Пользователь №: 16.971
Возраст: 29



Цитата
Единственное, может кто посоветует, как отсекать случай - когда Findwindow не находит окна по названию(свернул и забыл что свернул) и возвращает хендл рабочего стола?

Если окно не найдено возвращает 0, а не хендл рабочего стола. Все проверки через if/while.
Код
set #w Findwindow (testWindow)  //находим хендл окна по имени
if #w > 0 // если окно найдено
    log какие-то действия
end_if

Свёрнутость окна можно проверить плагином: https://forum.uokit.com/index.php?showtopic=28991.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Varlock
сообщение 2.2.2018, 21:25
Сообщение #3


**

Neophyte
Сообщений: 31
Регистрация: 17.1.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.789



странно тогда, почему у меня при свернутом окне оно взяло и рабочий стол загнало за границы экрана?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 2.2.2018, 21:45
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26689
Пользователь №: 16.971
Возраст: 29



Может скрипт был привязан к рабочему столу. Свёрнутость окна никак не влияет на поиск окна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Varlock
сообщение 3.2.2018, 0:05
Сообщение #5


**

Neophyte
Сообщений: 31
Регистрация: 17.1.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.789



Цитата(cirus @ 2.2.2018, 21:45) *

Может скрипт был привязан к рабочему столу. Свёрнутость окна никак не влияет на поиск окна.

ну я его просто ни к чему не привязывал. т.е. контрл+а не жал нигде. он по умолчанию к чему привязывается?

Впрочем добавление ифа с проверкой на 0 в любом случае вроде помогло (IMG:style_emoticons/default/smile.gif)

Еще возник такой вопрос, связанный с убиранием окон за край экрана.
При использовании гугл хрома, на убирание окна за край экрана он реагирует так же как на сворачивание его - перестаёт отрисовывать и искать в нем картинки и соответственно выполнять скрипт. Причем это происходит даже при частичном убирании окна. Т.е. когда я ставлю ему позицию так, чтобы окно убралось за край экрана оставив полоску в 10 пикселей, которые не будут мешать.
Это косяк самого хрома? Или 7-й винды? Или надо что-то добавить в настройки?

Аналогично не получается перекрыть окно другим, т.к. при выполнении другого скрипта в окно регулярно кликается мышкой, и оно становится активным поверх остальных окон.
Может браузер сменить? Но тогда на какой? Чтобы можно было пару окон в которых будут работать скрипты убрать либо за границу экрана, либо перекрыть другими окнами в которых я буду работать сам?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.2.2018, 0:09
Сообщение #6


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26689
Пользователь №: 16.971
Возраст: 29



Цитата
Может браузер сменить? Но тогда на какой?

С мозилой вроде проблем не было.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Varlock
сообщение 3.2.2018, 13:07
Сообщение #7


**

Neophyte
Сообщений: 31
Регистрация: 17.1.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.789



Что-то поставил мозиллу - та же проблема (IMG:style_emoticons/default/sad.gif) прячу окно за границу экрана - сразу же пререстают отрисовываться картинки (IMG:style_emoticons/default/sad.gif) и другим окном она тоже не перекрывается - как только перекрыл - та же фигня, что и при заведении за границу экрана (IMG:style_emoticons/default/sad.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.2.2018, 18:30
Сообщение #8


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26689
Пользователь №: 16.971
Возраст: 29



Цитата
прячу окно за границу экрана - сразу же пререстают отрисовываться картинки

Findimage не работает или что?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Varlock
сообщение 3.2.2018, 21:25
Сообщение #9


**

Neophyte
Сообщений: 31
Регистрация: 17.1.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.789



да, можно сказать что Findimage не работает. Я использую GetImage, потом в полученном изображении ищу нужные кнопки. (в гетимадже хендл или ещё чего не указываю. только сам скрипт к окну привязан)
Когда окно находится наверху всё работает нормально.
Как только я его перекрываю другим окном или прячу за границу экрана(именно ту часть где кнопки располагаются), сразу перестают находится картинки. Т.е. я в лог информацию вывожу и по ней смотрю - в норме он 3-5 кнопок регулярно находит и нажимает, а как только перекрываю область с кнопками чем-либо, сразу сообщения о том что найдено 0 кнопок. при том что необходимые активные кнопки там точно есть.

т.е. код, если убрать остальные действия выглядит примерно:
Код
//сохраняем картинку окна.
set %window GetImage  (100 0 1900 1000)
set #imgadress %window [1 1] //получаем адрес окна в памяти.

   //ищем картинки с кнопками для апов.
    set #a findimage (0 0 1400 800 (%Images [3 1]) %ResultButtons #imgadress 99 -1 2)

    log count of images size(%ResultButtons)             // результат поиска
    if #a > 0                                            // если картинка найдена
    for #i size(%ResultButtons) 1 -1
        set #ButtonX %ResultButtons[#i 1] + 15           //добавляем к найденым координатам пиксеей, чтобы кликать куда надо
        set #ButtonY %ResultButtons[#i 2] + 10
        log координаты кнопки #i это #ButtonX и #ButtonY
        left #ButtonX #ButtonY                           //кликаем по найденой кнопке
        wait 1500                       //ожидаем полторы секунды чтобы если надо нажать несколько кнопок программа успевала среагировать.
    end_for
    end_if



в открытом окне кликает, а в спрятанном или перекрытом в лог все время пишет" count of images 0"
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.2.2018, 21:34
Сообщение #10


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26689
Пользователь №: 16.971
Возраст: 29



Цитата
set %window GetImage (100 0 1900 1000)

Код
set %window GetImage  (100 0 1900 1000 workwindow) 
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Varlock
сообщение 3.2.2018, 21:53
Сообщение #11


**

Neophyte
Сообщений: 31
Регистрация: 17.1.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 18.789



судя по логу всё поехало работать (IMG:style_emoticons/default/smile.gif) минут через 15-ть проверю по результату но думаю всё нормально должно быть (IMG:style_emoticons/default/smile.gif)
Спасибо (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 16.4.2024, 23:49
Designed by Nickostyle