Author Topic: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.  (Read 39403 times)

0 Members and 1 Guest are viewing this topic.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Потому что так не прокатит. За экраном работает только стандартная привязка, а не альтернативная.
Если обычный режим эмуляции, то заскринить за пределами экрана не выйдет и получить GETSCREEN и COLORMODE. Там проверяется на не превышение $_xmax, $_ymax. Обычная же привязка прекрасно гетскринит задвинутые окна.


Вот с обычной всё работает:
Code: (clickermann) [Select]
LOGCLEAR
$xmax = $_xmax

THREAD(whide, 1)
    IF(ISKEYDOWN(#F9) = 1)
        $hiden = $hiden ^ 1
        IF($hiden = 1)
            WNDPOS(WNDFIND("Mozilla Firefox", 0), $xmax, 0)
        ELSE
            WNDPOS(WNDFIND("Mozilla Firefox", 0), 0, 0)
        END_IF
        WAITMS(500)
    ELSE
        WAITMS(100)
    END_IF
END_THREAD

// Получение hwnd окна
HINTPOPUP("нажмите СКМ для запуска")
WHILE(iskeydown(4) = 0) // ждёт  нажатие левой=1 (средней=4) кнопки мыши
    WAITMS(50)
END_CYC

$hwnd1 = HGET($_xmouse, $_ymouse) // выбор окна при нажатии СКМ
HSET($hwnd1, 1)
LOGWRITE("hwnd окна:", $hwnd1)

WHILE(iskeydown(4) = 1)
    WAITMS(50)
END_CYC

WHILE(1)
    HINTPOPUP("Скрин!", "")
   
    GETSCREEN
    COLORMODE(6)
    SCREENSHOT("Wind_")
    //SCREENSHOTEX(0, 0, 0, 0, "Wind_", 0)
    WAIT(1)
    HINTPOPUP("", "")
    WAIT(5)
END_CYC
« Last Edit: April 28, 2017, 12:28:41 PM by Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Я давно уже проводил опыты, пытался заменить привязку просто задвиганием окна и попытками его анализировать. Так GETSCREEN работает только в пределах официального экрана. Если задавать за ним получается странный результат. Выходящие координаты опять берутся с 0 по горизонтали и происходит сдвиг по вертикали. Короче всё равно, то что на экране только смещённое неправильно.
COLORMODE же вообще не срабатывает если координаты выходят за край экрана. Я уже писал об этом рэпорт.
http://crapware.aidf.org/forum/index.php?topic=1914.0


dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
 помнится мне в винХР я както делал разрешение рабочего стола намного больше разрешения тогдашних мониторов. при этом видимую область можно было перемещать мышкой, видимая часть двигалась за курсором.
 немного погуглил, ничего не нашел по этому вопросу. а по сути это очень даже помогло бы в данном случае. окно бы находилось за пределами видимой области монитора, при этом рабочее пространство монитора не изменилась бы, оно равно его максимальному разрешению. жаль что такой возможности сейчас нет, возможно она и есть, но нужно поискать как ее реализовать.

fisher

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
в общем пробуй расширить твой рабочий стол.
В дровах копался, виртуальные столы попробовал, гуглил. Пока не нашел вариантов.. Ну кроме как отдать ноут под Clickermann  :)

Потому что так не прокатит. За экраном работает только стандартная привязка, а не альтернативная.
Если обычный режим эмуляции, то заскринить за пределами экрана не выйдет и получить GETSCREEN и COLORMODE. Там проверяется на не превышение $_xmax, $_ymax. Обычная же привязка прекрасно гетскринит задвинутые окна.
Вроде у меня при альтернативной привязке скринит, но не отрисовывается. А при стандартной привязке flash не видно, черный экран (и через лупу).

Уменьшать рабочее окно и поместить в край экрана тоже не получается. Картинки слишком мелкие получаются, поиск затруднит. В браузере масштаб приходится уменьшать до 80%, чтобы большинство объектов поместилось в экран. Печально..

PS В этом и есть причина, что не отрисовывается? GETSCREEN не работает и в буфере старый кадр висит, SCREENSHOTEX его сохраняет на диск.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
ставь виртуальную машину, и проблема решится, и ноут свободен  :).

fisher

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
ставь виртуальную машину, и проблема решится, и ноут свободен  :).
Пробовал, до того как начал экран анализировать. Просто кликал по координатам, но неудобно, координаты не привяжешь, карта игры (FoE) больше экрана, приходится при старте скрипта тыкать по зданиям, указывая местонахождение. Остановил скрипт, что то сделал, карту сместил и заново. 
Вроде и ноут не самый дохлый, хоть и не супер - AMD A8 4x2100, ОЗУ 8, но игруха на VirtualBox с установленной Win XP (использовалась для других целей) жутко тормозит, даже когда я в виртуалке разрешил все ядра и ОЗУ. Вероятно там внешняя видеокарта не работает, вот и тормозит.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Вроде у меня при альтернативной привязке скринит, но не отрисовывается. А при стандартной привязке flash не видно, черный экран (и через лупу).

Не использовать хром. Отключить аппаратное ускорение у flash. ПКМ... перезапустить. Всё видит прекрасно.


fisher

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Не использовать хром. Отключить аппаратное ускорение у flash. ПКМ... перезапустить. Всё видит прекрасно.

Да, видит, но при отключении аппаратного ускорения, тормозит flash жутко. При загрузке отрисовывает картинку 10 минут. Видать Flash довольно прожорлив.

fisher

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Да, видит, но при отключении аппаратного ускорения, тормозит flash жутко. При загрузке отрисовывает картинку 10 минут. Видать Flash довольно прожорлив.
Обновите железо, уменьшите разрешение экрана, отключите фоновые процессы.
Спасибо за совет, но тормозит то как раз потому, что отключается аппаратная производительность компа (не берусь утверждать, думаю видеокарта) и идет программная обработка, соответственно нагружающая процессор и т.п. Если при включенном аппаратном ускорении все летает, плюс еще открыто несколько десятков окон, то при выключенном ускорении Adobe Flash забирает 75-80% процессора.

PS Это мысли вслух, понимаю, что проблемы негра, шерифа не касаются  ::)
Интересует, может есть все таки возможность фонового использования Clickermann и Flash игрухи без отключения аппаратного ускорения?

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Интересует, может есть все таки возможность фонового использования Clickermann и Flash игрухи без отключения аппаратного ускорения?

самому интересно стало, неужели без физического монитора не возможно вкл его?
 оказалось, это очень просто!!!

тестировал на вин7.
 идем сюда - Панель управления\Все элементы панели управления\Экран\Разрешение экрана , или на рабочем столе пкм, и сразу разрешение экрана.
 жмем кнопку "найти" , появляется мониторчик справа от основного.
 тыкаем на него, и ниже, там где "несколько мониторов: экран не выбран" меняем на " попытаться в любом случае подключиться к: vga".
 жмем применить.
 тыкаем опять на второй (доп. монитор), и меняем там где "несколько экранов: отобразить рабочий стол только на 1" на "расширить эти экраны".
 жмем применить и сохранить изменения.
 меняем разрешение дополнительного монитора на нужное нам (для нас чем больше тем лучше) и применяем изменения.
 готово  :D



проверяем кликером
Code: (clickermann) [Select]
GETSCREEN
SCREENSHOT
halt
и.... чудо, скрин на выходе с разрешением 7936х2160, и вссе окна отображаются  :D, и весит этот скрин 65.3 мб  :o

 

физически ничего к видеокарте кроме основного монитора не подключено.

вот вам и расширенный рабочий стол, только его не видно, а нам и не надо  ;D.
 
 

fisher

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
самому интересно стало, неужели без физического монитора не возможно вкл его?
 оказалось, это очень просто!!!

тестировал на вин7.
 идем сюда - Панель управления\Все элементы панели управления\Экран\Разрешение экрана , или на рабочем столе пкм, и сразу разрешение экрана.
 жмем кнопку "найти" , появляется мониторчик справа от основного.
 тыкаем на него, и ниже, там где "несколько мониторов: экран не выбран" меняем на " попытаться в любом случае подключиться к: vga".
Спасибо за Ваше участие. У меня после нажатия кнопки "найти", ничего не появилось. Вероятно у Вас аппаратно есть еще один видео-выход (интегрированный видеовыход, при использовании внешней карты).

nermal

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Всем доброго времени суток, а можно ли как то реализовать нажатие в окнах кнопок Enter, ctrl ? Интересует комбинация crtl+V но что то не выходит.. только V печатаются в текстовом поле.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Всем доброго времени суток, а можно ли как то реализовать нажатие в окнах кнопок Enter, ctrl ? Интересует комбинация crtl+V но что то не выходит.. только V печатаются в текстовом поле.
пробуй вот этот вариант http://crapware.aidf.org/forum/index.php?topic=1728.msg9846#msg9846


 в некоторых приложениях (играх) сочетание
Code: (clickermann) [Select]
A_KEYDOWN (#CTRL)
WAITMS (50)
A_KEYDOWN (#V)
WAITMS (50)
A_KEYUP (#V)
A_KEYUP (#CTRL)
работает. в некоторых работает, но с лишней буквой "V". в некоторых не работает.
то же самое и с SENDMESSAGE ($_hwnd, 0x0302, 0, 0) . нужно пробовать разные варианты. в блокноте к примеру вообще вставить - postmessage($hwnd,0x0102,22,0)

IDK

  • Зашел в гости
  • *
  • Posts: 1
    • View Profile
Здравствуйте, спрашивал в вконтакте мне вроде и ответили, только я не понял как это использовать, поэтому решил спросить в теме, которую это касается.
Code: (clickermann) [Select]
//создаем A_LCLICK
SUB(A_LCLICK, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0201,0x0001,$A_x+($A_y*65536))
   waitms($A_press_delay)
   postmessage($A_hwnd,0x0202,0x0001,$A_x+($A_y*65536))
END_SUB
// кликаем в свёрнутом окне 782,556
A_LCLICK(782,556,1639690)
WAITMS(200)
Нужно чтобы в определённом свёрнутом окне виндовс автоматически производились клики в одну точку.
Hwnd окна я указал правильно, и клики производятся только в нём. Но они не производятся по указанной координате. Куда ведёшь мышь туда и идут клики.
Во вконтакте мне посоветовали вот это.
"Сначала привязка к окну, потом определение и указание нужных вам координат, именно в таком порядке."
Но я так и не понял как это использовать.
Вообще когда перешёл на десятку появлялись проблемы с автоматической записью скрипта. Может быть десятка как-то и на это влияет?
« Last Edit: January 05, 2018, 08:27:42 PM by IDK »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Здравствуйте, спрашивал в вконтакте мне вроде и ответили, только я не понял как это использовать, поэтому решил спросить в теме, которую это касается.
Code: (clickermann) [Select]
//создаем A_LCLICK
SUB(A_LCLICK, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0201,0x0001,$A_x+($A_y*65536))
   waitms($A_press_delay)
   postmessage($A_hwnd,0x0202,0x0001,$A_x+($A_y*65536))
END_SUB
// кликаем в свёрнутом окне 782,556
A_LCLICK(782,556,1639690)
WAITMS(200)
Нужно чтобы в определённом свёрнутом окне виндовс автоматически производились клики в одну точку.
Hwnd окна я указал правильно, и клики производятся только в нём. Но они не производятся по указанной координате. Куда ведёшь мышь туда и идут клики.
Во вконтакте мне посоветовали вот это.
"Сначала привязка к окну, потом определение и указание нужных вам координат, именно в таком порядке."
Но я так и не понял как это использовать.
Вообще когда перешёл на десятку появлялись проблемы с автоматической записью скрипта. Может быть десятка как-то и на это влияет?
Сорри, отсутствовал, праздников уж очень много было.
Данный режим нужен только в тех случаех, если с обычной привязкой проблемы, а именно если кликер слепнет при привязке. Второй плюс, это возможность работы в нескольких окнах одновременно, и при этом не мешая основной работе на пк.
По твоему вопросу могу лишь посоветовать предворительное перемещение курсору в нужные координату, и далее клик. Насколько помню, в арчейдже я использовал альтернативу, и без передвижения курслра клик не проходил. И никакого ссворачивания окна. В теме есть куча советов куда всунуть неактивное окно.