Автокликер Clickermann :: Форум

Основной раздел => Использование => Topic started by: dramster on September 04, 2015, 11:14:18 PM

Title: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on September 04, 2015, 11:14:18 PM
  Проблемы при привязке? Пропадает картинка окна; не работают нажатия кнопок;  постоянное переключение между окнами, если требуется работа с несколькими?
  Есть решение!!!
Code: (clickermann) [Select]
//alternative windowed mode v1.1

//-----------------------------------------------------------
//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
//-----------------------------------------------------------
//A_LDOWN
SUB(A_LDOWN, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0201,0x0001,$A_x+($A_y*65536))
END_SUB
//-----------------------------------------------------------
//A_LUP
SUB(A_LUP, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0202,0x0001,$A_x+($A_y*65536))
END_SUB
//-----------------------------------------------------------
//A_DBLCLICK
SUB(A_DBLCLICK, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0203,0x0001,$A_x+($A_y*65536))
END_SUB
//-----------------------------------------------------------
// A_RCLICK
SUB(A_RCLICK, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0204,0x0002,$A_x+($A_y*65536))
   waitms($A_press_delay)
   postmessage($A_hwnd,0x0205,0x0002,$A_x+($A_y*65536))
END_SUB
//-----------------------------------------------------------
//A_RDOWN
SUB(A_RDOWN, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0204,0x0002,$A_x+($A_y*65536))
END_SUB
//-----------------------------------------------------------
//A_RUP
SUB(A_RUP, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0205,0x0002,$A_x+($A_y*65536))
END_SUB
//-----------------------------------------------------------
// A_MCLICK
SUB(A_MCLICK, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0207,0x0010,$A_x+($A_y*65536))
   waitms($A_press_delay)
   postmessage($A_hwnd,0x0208,0x0010,$A_x+($A_y*65536))
END_SUB
//-----------------------------------------------------------
//A_MDOWN
SUB(A_MDOWN, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0207,0x0010,$A_x+($A_y*65536))
END_SUB
//-----------------------------------------------------------
//A_MUP
SUB(A_MUP, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0208,0x0010,$A_x+($A_y*65536))
END_SUB
//-----------------------------------------------------------
//A_MOVE
SUB(A_MOVE, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0200,0,$A_x+($A_y*65536))
END_SUB
//-----------------------------------------------------------
//A_KEYPRESS
SUB(A_KEYPRESS, $A_key, $A_hwnd)
   postmessage($A_hwnd,0x0100,$A_key,0)
   waitms($A_press_delay)
   postmessage($A_hwnd,0x0101,$A_key,0)
END_SUB
//-----------------------------------------------------------
//A_KEYDOWN
SUB(A_KEYDOWN, $A_key, $A_hwnd)
   postmessage($A_hwnd,0x0100,$A_key,0)
END_SUB
//-----------------------------------------------------------
//A_KEYUP
SUB(A_KEYUP, $A_key, $A_hwnd)
   postmessage($A_hwnd,0x0101,$A_key,0)
END_SUB
//-----------------------------------------------------------
//A_GETSCREEN
SUB(A_GETSCREEN, $A_x1, $A_y1, $A_x2, $A_y2, $A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   IF($A_x1+$A_y1+$A_x2+$A_y2 = 0)
      $A_x2 = $A_width
      $A_y2 = $A_height
   END_IF
   GETSCREEN($A_x0+$A_x1,$A_y0+$A_y1,$A_x0+$A_x2,$A_y0+$A_y2)
END_SUB
//-----------------------------------------------------------
//A_SCREENSHOTEX
SUB(A_SCREENSHOTEX, $A_x1, $A_y1, $A_x2, $A_y2, $A_pref, $A_format, $A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   IF(($A_x1+$A_y1+$A_x2+$A_y2) = 0)
      $A_x2 = $A_width
      $A_y2 = $A_height
   END_IF
   SCREENSHOTEX($A_x0+$A_x1,$A_y0+$A_y1,$A_x0+$A_x2,$A_y0+$A_y2,$A_pref,$A_format)
END_SUB
//-----------------------------------------------------------
//A_PXL
SUB(A_PXL, $A_x, $A_y, $A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   $A_return1 = PXL($A_x0+$A_x, $A_y0+$A_y)
END_SUB
//-----------------------------------------------------------
//A_PXLCOUNT
SUB(A_PXLCOUNT, $A_x1, $A_y1, $A_x2, $A_y2, $A_color, $A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   $A_return1 = PXLCOUNT ($A_x0+$A_x1,$A_y0+$A_y1,$A_x0+$A_x2,$A_y0+$A_y2, $A_color)
END_SUB
//-----------------------------------------------------------
//A_PXLXOR
SUB(A_PXLXOR, $A_x1, $A_y1, $A_x2, $A_y2, $A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   $A_return1 = PXLXOR($A_x0+$A_x1,$A_y0+$A_y1,$A_x0+$A_x2,$A_y0+$A_y2)
END_SUB
//-----------------------------------------------------------
//A_PXLCRC
SUB(A_PXLCRC, $A_x1, $A_y1, $A_x2, $A_y2, $A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   $A_return1 = PXLCRC($A_x0+$A_x1,$A_y0+$A_y1,$A_x0+$A_x2,$A_y0+$A_y2)
END_SUB
//-----------------------------------------------------------
//A_IFPIXELIN
SUB(A_IFPIXELIN, $A_x1, $A_y1, $A_x2, $A_y2, $A_color, $A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   IF_PIXEL_IN($A_x0+$A_x1,$A_y0+$A_y1,$A_x0+$A_x2,$A_y0+$A_y2, $A_color)
      $A_return1 = $_return1-$A_x0
      $A_return2 = $_return2-$A_y0
   else
      $A_return1 = 0
      $A_return2 = 0
   END_IF
END_SUB
//-----------------------------------------------------------
//A_IFPICTUREIN
SUB(A_IFPICTUREIN, $A_x1, $A_y1, $A_x2, $A_y2, $A_file, $A_bgcolor, $A_currency, $A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   IF_PICTURE_IN($A_x0+$A_x1,$A_y0+$A_y1,$A_x0+$A_x2,$A_y0+$A_y2, $A_file, $A_bgcolor, $A_currency)
      $A_return1 = $_return1-$A_x0
      $A_return2 = $_return2-$A_y0
   else
      $A_return1 = 0
      $A_return2 = 0
   END_IF
END_SUB
//-----------------------------------------------------------
//A_SCANPICTURE
SUB(A_SCANPICTURE, $A_x1, $A_y1, $A_x2, $A_y2, $A_file, $A_bgcolor, $A_currency, $A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   SCANPICTURE($A_var,$A_x0+$A_x1,$A_y0+$A_y1,$A_x0+$A_x2,$A_y0+$A_y2,$A_file,$A_bgcolor,$A_currency)
   FOR($i=0, $i < ARRSIZE($A_var),2)
      $A_var[$i] = $A_var[$i]-$A_x0
      $A_var[$i+1] = $A_var[$i+1]-$A_y0
   END_CYC
END_SUB
//-----------------------------------------------------------
//A_SCANPXL
SUB(A_SCANPXL, $A_x1, $A_y1, $A_x2, $A_y2, $A_color, $A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   SCANPXL($A_var,$A_x0+$A_x1,$A_y0+$A_y1,$A_x0+$A_x2,$A_y0+$A_y2,$A_color)
   FOR($i=0, $i < ARRSIZE($A_var),2)
      $A_var[$i] = $A_var[$i]-$A_x0
      $A_var[$i+1] = $A_var[$i+1]-$A_y0
   END_CYC
END_SUB
//-----------------------------------------------------------
//A_COLORMODE
SUB(A_COLORMODE, $A_mode, $A_x1, $A_y1, $A_x2, $A_y2, $A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   IF(($A_x1+$A_y1+$A_x2+$A_y2) = 0)
      $A_x2 = $A_width
      $A_y2 = $A_height
   END_IF
   COLORMODE ($A_mode, $A_x0+$A_x1,$A_y0+$A_y1,$A_x0+$A_x2,$A_y0+$A_y2)
END_SUB
//-----------------------------------------------------------
//A_CHECK_PXL
SUB(A_CHECK_PXL,$A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   GETSCREEN
   print("(",$_xmouse-$A_x0,",",$_ymouse-$A_y0,") // ",PXL($_xmouse,$_ymouse))
END_SUB
//-----------------------------------------------------------
//A_KEYSTRING
SUB(A_KEYSTRING, $A_str, $A_delay, $A_hwnd)
   $A_kbl=GETKBLAYOUT($A_hwnd)
   IF($A_kbl ! 1049)
      setkblayout($A_hwnd, 1049)
   END_IF   
   FOR($A_nstr=1,$A_nstr<STRLEN ($A_str)+1)
      $A_l=STRCUT ($A_str, $A_nstr, 1)
      IF(ARRSIZE ($A_keys_arr) = 0)
         TFREADARR ("keys.txt", $A_keys_arr)
      END_IF   
      FOR($A_a=1,$A_a<ARRSIZE ($A_keys_arr),2)
         IF($A_keys_arr[$A_a] = $A_l)
            $A_key = $A_keys_arr[$A_a-1]
            IF($A_key = 46)
               IF(STRMD5($A_l) ! "5058F1AF8388633F609CADB75A75DC9D")
                  $A_key = 48
               END_IF
            END_IF
            IF((($A_key > 64)&($A_key < 91))|(($A_key > 185)&($A_key < 223)))
               $A_mess = 0x0100
            else
               $A_mess = 0x0102
            END_IF
            IF($A_key > 0)
               postmessage($A_hwnd,$A_mess,$A_key,0)
               waitms($A_delay)
            END_IF
            $A_a=999
         END_IF
      END_CYC
   END_CYC
   IF($A_kbl!GETKBLAYOUT($A_hwnd))
      setkblayout($A_hwnd, $A_kbl)
   END_IF
END_SUB
//-----------------------------------------------------------
$A_press_delay = 30


Альтернативные команды для работы с окнами:
A_LDOWN (x, y, hwnd)
A_LUP (x, y, hwnd)
A_LCLICK (x, y, hwnd)
A_RDOWN (x, y, hwnd)
A_RUP (x, y, hwnd)
A_RCLICK (x, y, hwnd)
A_MDOWN (x, y, hwnd)
A_MUP (x, y, hwnd)
A_MCLICK (x, y, hwnd)
A_MOVE(x, y, hwnd)
A_KEYPRESS(keycode, hwnd)
A_KEYDOWN (keycode, hwnd)
A_KEYUP (keycode, hwnd)
 Всё как со стандартными командами, только добавлен параметр hwnd окна. Команды нажатий и кликов отправляются окну напрямую, не мешая основной работе на ПК (как при привязке). Отсчет координат также как при привязке, начиная с левого верхнего угла окна.

Анализ экрана:
A_GETSCREEN(x1, y1, x2, y2, hwnd)
A_SCREENSHOTEX(x1, y1, x2, y2, pref, format,  hwnd)
Все параметры вводить обязательно
Если неохота вводить координаты области, пишем (0,0,0,0), и снимок сделается целого окна.

A_PXL(x, y, hwnd)
A_PXLCOUNT(x1, y1, x2, y2, color, hwnd)
A_PXLXOR(x1, y1, x2, y2, hwnd)
A_PXLCRC(x1, y1, x2, y2, hwnd)
Возвращают значение в переменную $A_return1.

A_IFPIXELIN(x1, y1, x2, y2, color, hwnd)
A_IFPICTUREIN(x1, y1, x2, y2, file, bgcolor, currency, hwnd)
Это уже не условия, это функции возвращающие  параметры $A_return1 и $A_return2. Если ничего не найдено, они возвращают "0".

A_SCANPICTURE(x1, y1, x2, y2, file, bgcolor, currency, hwnd)
A_SCANPXL(x1, y1, x2, y2, color, hwnd)
Возвращают массив $A_var .

A_COLORMODE(mode, x1, y1, x2, y2, hwnd)
Все параметры вводить обязательно, во всех командах, иначе "ошибка".
Не забываем, что все координаты вводить относительно верхнего левого угла окна.
Горячие клавиши alt+q в данном случае не помогут. Поможет команда A_CHECK_PXL(hwnd), которая запишет в лог нужные нам координаты и цвет пикселя под курсором.

Есть небольшой "косячек", который также присутствует при стандартной привязке. Это небольшая разница в 20-25 пикселей по иси Y между возвращенными координатами при поиске пикселя или картинки, и кликом по возвращенным координатам. Это высота строки заголовка.

Пример:
Code: (clickermann) [Select]
#include "alt_winmode.cms"

$hwnd1 = WNDFIND ("Заголовок первого окна")
$hwnd2 = WNDFIND ("Заголовок второго окна")
A_MOVE(10,10, $hwnd1)
wait(1)
A_GETSCREEN(0,0,0,0,$hwnd1)
A_IFPIXELIN(400,700,500,800, 11465971, $hwnd1)
IF($A_return1>0)
   A_MOVE($A_return1,$A_return2-20, $hwnd1)
   waitms(50)
   A_LCLICK($A_return1,$A_return2-20, $hwnd1)
   waitms(50)   
END_IF

THREAD(win_2)
   #include "alt_winmode.cms"
   A_LDOWN (155, 170, $hwnd2)
   waitms(50)
   A_MOVE(231, 170, $hwnd2)
   waitms(50)
   A_LUP(231, 170, $hwnd2)
   wait(5)
   A_KEYPRESS(#enter, $hwnd2)
   waitms(50)
END_THREAD

 Помним, в данном случае при работе с изображениями, нельзя чтобы окно было закрыто другим окном. Мало места на рабочем столе? Решается это просто. Включаем в настройках видеокарты дополнительный монитор и перетаскиваем наши окна на рабочий стол дополнительного монитора. Мы их не видим и они нам не мешают, а кликерманн видит и делает свое дело.
 Как включить доп. монитор при его отсутствии? пример для вин7. (http://crapware.aidf.org/forum/index.php?topic=2111.msg21592#msg21592)
 Теперь без проблем можно ботить в нескольких окнах одновременно, и одноременно заниматься на ПК своими делами  :D



Все функции не тестил, возможны ошибки. Если что не так, пишите, исправлю.



Обновление:

Добавлены команды:
A_DBLCLICK (x, y, hwnd)
A_KEYSTRING ("str", delay, hwnd)   // "str" - строка, delay - задержка между нажатиями клавиш в мс.
A_KEYSTRING может печатать как на русск. так и на англ. одновременно. Для работы требуется список кодов кнопок (во вложении).
Выведена в переменную и уменьшена задержка для в keypress, LRMclick ($A_press_delay). Как оказалось, 50мс это многовато.






Обновленный A_KEYSTRING, только для CM v4.13
Написал новую подпрограмму A_KEYSTRING. старая показалась мне уж слишком замудреной и корявой. в новой версии символы отправляются окну только лишь посредством  WM_CHAR. странно, но эта возможность появиласть лишь в версии  v.4.13 b3 (имеется в виду русск. буквы). в старших версиях работать не будет. исключил сравнение самих символов, что приводило к некоторым проблемам со всякими там "0", "." и другими символами. в новой версии сравнивается md5 хеш каждого символа со списком ранее записанных в файл. по сути в этот файл можно всунуть всё что угодно, [spoiler="типа этого"]❤☺☼☭☮⑯⑰㒇㒈㒉रऱलळ и кучи различных языков. все они в postmessage(hwnd,0x0102,[от 33  до~],0)  [/spoiler]
Code: (clickermann) [Select]
//A_KEYSTRING для clickermann v.4.13 b3
SUB(A_KEYSTRING, $A_str, $A_delay, $A_hwnd)
   FOR($A_nstr=1,$A_nstr<STRLEN ($A_str)+1)
      $A_md5 = strmd5(strcut2($A_str, $A_nstr, $A_nstr ))
      FOR($A_ntxt=1,$A_ntxt<TFCOUNT ("keys_v4.13.txt")+1)
         IF(STRPOS (TFREAD ("keys_v4.13.txt",$A_ntxt),$A_md5) > 0)
            postmessage($A_hwnd,0x0102,int(STRCUT (TFREAD("keys_v4.13.txt",$A_ntxt),1,STRPOS(TFREAD ("keys_v4.13.txt",$A_ntxt)," "))),0)
            $A_ntxt=TFCOUNT ("keys_v4.13.txt")+1
            waitms($A_delay)
         END_IF
      END_CYC
   END_CYC
END_SUB
//-----------------------------------------------------------

//пример:

//нужную строку обязательно записываенм в начале в переменную
$text = "English, Русский...! # $ % & ' ( * + , - . / 14890 : ; < = > ? @ [ \ ] ^ _ ` { | } ~  ¤ ¦ § © « ¬ ­ ® ° ± µ ¶ · » "

//и только после этого вызов подпрограммы.
A_KEYSTRING ($text,100,197534)

HALT

[spoiler="пример в картинке"](http://i.imgur.com/DDGY6at.png)[/spoiler]
единственное, что с кавычками так ничего и не удалось сделать  :(

Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Vint on September 07, 2015, 12:32:14 PM
GETSCREEN в привязке и GETSCREEN по всему экрану это разные вещи. Можешь попробовать.
В твоём варианте, как бы ты не делал, внутри буфера координаты останутся абсолютными, а не относительными.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on September 07, 2015, 03:17:51 PM
GETSCREEN в привязке и GETSCREEN по всему экрану это разные вещи. Можешь попробовать.
В твоём варианте, как бы ты не делал, внутри буфера координаты останутся абсолютными, а не относительными.
да, всё верно. но A_GETSCREEN бал сделан лишь для того, чтобы вводить область GETSCREEN в независимости от местоположения окна. да, будет одинаково работать и с стандартным GETSCREEN, кроме как с разницей скорости выполнения команды, а тем самым нагрузки на цп.
Code: (clickermann) [Select]
#include "alt_winmode.cms"
$hwnd1 = WNDFIND ("Блокнот")

wait(1)
$t=$_ms
A_GETSCREEN(0,0,0,0,$hwnd1)
print($_ms-$t)  //12мс

SCREENSHOT


wait(1)
$t=$_ms
GETSCREEN
print($_ms-$t)  //58мс . ведь скрин делается сразу двух рабочих столов 1920х1080х2, если для работы скрипта использовать дополнотельный монитор.

SCREENSHOT
halt

и плюс к этому в A_GETSCREEN вводятся координаты облости относительно окна. где бы окно не находилось, скринить будет только нужную область.



еще хотел добавить, что написание скриптов удобнее делать переместив окно в координаты (0,0,0,0). так удобнее ненакосячить с координатами и цветами в окне. а далее,при использовании, это акно можно перемещять куда угодно.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Vint on September 07, 2015, 04:02:30 PM
Getscreen в привязке располагает окно в начале 0,0. Без привязки скрин полного экрана, а окно там где окно  :D
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on September 07, 2015, 05:19:57 PM
еще один плюс A_GETSCREEN в работе с изображениями нескольких окон.можно использовать A_GETSCREEN-ы разных окон в разных потоках, и при этом они не будут помехой друг другу.
Code: (clickermann) [Select]
#include "alt_winmode.cms"

$hwnd1 = 727230 // текстовое поле первого блокнота
$hwnd2 = 1186412 // текстовое поле второго блокнота

wait(1)
A_KEYPRESS(#A, $hwnd1) //в первом пишем "а"
waitms(50)
A_GETSCREEN(0,0,0,0,$hwnd1) //скриним первый
SCREENSHOT

wait(1)
A_KEYPRESS(#BACKSPACE, $hwnd1) //стираем в первом "а"

waitms(50)
A_GETSCREEN(0,0,0,0,$hwnd2)  //скриним второй
SCREENSHOT  //и видим, что в первом асталось "а", хотя в самом деле там пусто. да и вообще это поле осталось в буфере и никуда не делось.

halt
первый скрин
(http://i.imgur.com/5H0J9Sl.png)
второй
(http://i.imgur.com/n2L89s2.png)
если бы мы использовали стандартный GETSCREEN, то при втором SCREENSHOT у нас бы затерлось первое окно. вернее не затерлось, а обновилось.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: msgkumisi on October 14, 2015, 12:22:28 AM
добавьте вот это тоже:

Code: (clickermann) [Select]
//A_DBLCLICK
SUB(A_DBLCLICK, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0203,0x0001,$A_x+($A_y*65536))
END_SUB
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Луций on October 14, 2015, 05:15:21 PM
это прекрасно, ждем пока кто то все команды для этого режима пропишет через сабы
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on October 15, 2015, 02:12:56 AM
добавьте вот это тоже:

[spoiler]
Code: (clickermann) [Select]
//A_DBLCLICK
SUB(A_DBLCLICK, $A_x, $A_y, $A_hwnd)
   postmessage($A_hwnd,0x0203,0x0001,$A_x+($A_y*65536))
END_SUB
[/spoiler]
добавил. спс.

это прекрасно, ждем пока кто то все команды для этого режима пропишет через сабы
да в принципе и добавлять то и нечего  :D . кручение колеса в разных окнах по разному себя ведет... а больше я и не знаю что еще нужно, связки кнопок shift+ ctrl+ alt+ нужно.
 а вот про принцип работы  mover я был бы рад разузнать. в 3д играх для движеня камеры (экрана) он необходим. эксперименты с move закончились ничем, с ним экран просто дергается на месте. да, можно использовать клавиши поворота и тп, но с mover движение происходит идеально точно, независимо от фпс в игре.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: vao on October 16, 2015, 10:42:07 AM
А никто не знает как в 10й винде реализовать привязку к разным рабочим столам?
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: n.vlad on November 13, 2015, 02:45:20 AM
Спасибо! невероятно полезно!
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on November 13, 2015, 03:59:29 PM
обноружил кое-какой баг при использовании этого кода в потоках. с небольшей вероятностью, команды могут выполняться в потоке и вне его почти одновременно, из-за этого переменные путаются. для наглядности:
Code: (clickermann) [Select]
SUB(test, $n)
      waitms(8)
      print("вне потока ", $n)
END_SUB

test("вне потока")



THREAD(thr_test)
   SUB(test, $n)
         waitms(10)
         print("в потоке ", $n)
   END_SUB
   
   test("в потоке")
   
END_THREAD
в логе:
Code: [Select]
15:47:28 в потоке вне потока
15:47:28 вне потока вне потока
15:47:28 вне потока вне потока
15:47:28 в потоке 0
15:47:28 вне потока в потоке
15:47:28 в потоке 0
15:47:28 вне потока в потоке
15:47:28 в потоке вне потока
15:47:28 вне потока в потоке
15:47:28 в потоке вне потока
15:47:28 вне потока в потоке
15:47:28 в потоке вне потока
15:47:28 вне потока в потоке
15:47:28 в потоке вне потока
15:47:28 вне потока 0
15:47:28 вне потока вне потока
15:47:28 в потоке вне потока
15:47:28 вне потока в потоке
15:47:28 в потоке 0
15:47:28 вне потока в потоке
15:47:28 в потоке 0
15:47:28 вне потока в потоке
15:47:28 в потоке в потоке
15:47:28 вне потока вне потока

может есть идеи как избежать этого? я меня идея лиш одна - для каждого потока отдельный инклуд с переименованными переменными.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Oraven on November 13, 2015, 04:22:42 PM
Никакого бага, переменные в потоках не изолированы, нужно использовать разные имена переменных.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: i0 on March 22, 2016, 12:53:43 PM
dramster, взял себе твой a_keystring, добавил недостающие ascii-коды в файл, ввод заработал в привязке к окну моей игры, спасибо огромное
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: m.igel on January 12, 2017, 05:53:53 PM
Помогите новичку разобраться куды лошадь запрягать!

Уже понял, что KEYSTRING лепит что попало и набрать через него D:\... задача нетривиальная. Пока я поборол её чтением из файла. Но оказалось, что A_KEYSTRING позволяет избежать этих проблем. Я правильно понимаю? Тогда поясните, пожалуйста, куда прицепить этот код и как дальше пользоваться.

Я пока понял так, что сперва кладём текстовик в папку с программой, потом где-то в начале вставляем SUB с A_KEYSTRING, после чего там где надо пишем A_KEYSTRING (Любой текст, который надо вставить) Но лыжи чота не едут...
Да, там же ещё надо куда-то привязаться...
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Vint on January 12, 2017, 06:05:09 PM
Пишем
A_KEYSTRING("Текст", 10-задержка, hwnd-окна куда пишем)
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: m.igel on January 12, 2017, 07:03:45 PM
Большое спасибо!

Видимо я чего-то не понимаю.

Code: [Select]
#name "New Script"
WAIT(1)

print("Hello:-) world! Проверка: связи*")

$A_hwnd = wndfind("Блокнот") // получаем HWND окна Блокнота

//A_KEYSTRING
SUB(A_KEYSTRING, $A_str, $A_delay, $A_hwnd)
   $A_kbl=GETKBLAYOUT($A_hwnd)
   IF($A_kbl ! 1049)
      setkblayout($A_hwnd, 1049)
   END_IF   
   FOR($A_nstr=1,$A_nstr<STRLEN ($A_str)+1)
      $A_l=STRCUT ($A_str, $A_nstr, 1)
      IF(ARRSIZE ($A_keys_arr) = 0)
         TFREADARR ("keys.txt", $A_keys_arr)
      END_IF   
      FOR($A_a=1,$A_a<ARRSIZE ($A_keys_arr),2)
         IF($A_keys_arr[$A_a] = $A_l)
            $A_key = $A_keys_arr[$A_a-1]
            IF($A_key = 46)
               IF(STRMD5($A_l) ! "5058F1AF8388633F609CADB75A75DC9D")
                  $A_key = 48
               END_IF
            END_IF
            IF((($A_key > 64)&($A_key < 91))|(($A_key > 185)&($A_key < 223)))
               $A_mess = 0x0100
            else
               $A_mess = 0x0102
            END_IF
            IF($A_key > 0)
               postmessage($A_hwnd,$A_mess,$A_key,0)
               waitms($A_delay)
            END_IF
            $A_a=999
         END_IF
      END_CYC
   END_CYC
   IF($A_kbl!GETKBLAYOUT($A_hwnd))
      setkblayout($A_hwnd, $A_kbl)
   END_IF
END_SUB
//-----------------------------------------------------------
$A_press_delay = 30

A_KEYSTRING ("Hello:-) world! Проверка: связи*", 20, $A_hwnd)


Ругается на
IF($A_keys_arr[$A_a] = $A_l)



Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Oraven on January 12, 2017, 08:40:07 PM
Функция поиска окон по заголовку возвращает hwnd окна, но проблема в том что нам нужно внутреннее окно блокнота, только туда можно вводить текст. Получить его возможно только либо в ручную либо функцией возвращающей hwnd по координате HGET.
А ошибка у тебя выскакивает, как оказалось, из за скобки. Убрал её и все стало нормально

Верный скрипт
Code: (clickermann) [Select]
//A_KEYSTRING
SUB(A_KEYSTRING, $A_str, $A_delay, $A_hwnd)
   $A_kbl=GETKBLAYOUT($A_hwnd)
   IF($A_kbl ! 1049)
      setkblayout($A_hwnd, 1049)
   END_IF   
   FOR($A_nstr=1,$A_nstr<STRLEN ($A_str)+1)
      $A_l=STRCUT ($A_str, $A_nstr, 1)
      IF(ARRSIZE ($A_keys_arr) = 0)
         TFREADARR ("keys.txt", $A_keys_arr)
      END_IF   
      FOR($A_a=1,$A_a<ARRSIZE ($A_keys_arr),2)
         IF($A_keys_arr[$A_a] = $A_l)
            $A_key = $A_keys_arr[$A_a-1]
            IF($A_key = 46)
               IF(STRMD5($A_l) ! "5058F1AF8388633F609CADB75A75DC9D")
                  $A_key = 48
               END_IF
            END_IF
            IF((($A_key > 64)&($A_key < 91))|(($A_key > 185)&($A_key < 223)))
               $A_mess = 0x0100
            else
               $A_mess = 0x0102
            END_IF
            IF($A_key > 0)
               postmessage($A_hwnd,$A_mess,$A_key,0)
               waitms($A_delay)
            END_IF
            $A_a=999
         END_IF
      END_CYC
   END_CYC
   IF($A_kbl!GETKBLAYOUT($A_hwnd))
      setkblayout($A_hwnd, $A_kbl)
   END_IF
END_SUB
//-----------------------------------------------------------
$A_press_delay = 30

$hw = HGET(310,177) // координата окна блокнота (белое пространство)
A_KEYSTRING ("Hello:- world! Проверка: связи*", 20, $hw)

HALT

Вообщето это представлено как библиотека функций. Тебе требуется приложить в ту же папку где лежит скрипт файлы alt_winmode.cms и keys.txt
В своем скрипте пишем в первых строках #include "alt_winmode.cms"

Выглядит так
Code: (clickermann) [Select]
#include "alt_winmode.cms"

$hw = HGET(310,177) // координата окна блокнота (белое пространство)
A_KEYSTRING ("Hello:- world! Проверка: связи*", 0, $hw)
HALT
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Oraven on January 12, 2017, 08:52:47 PM
Есть другой вариант. В оконном режиме KEYSTRING в точности печатает заданные символы. Можно временно включить оконный режим и напечатать.

Пример
Code: (clickermann) [Select]
SUB(A_KEYSTRING, $str, $a_cx,$a_cy)
   $hw = HGET($a_cx,$a_cy)
   HSET($hw,1)
   KEYSTRING($str)
   HSET($hw,0)
END_SUB


A_KEYSTRING ("Hello:-) world! Проверка: связи*", 310,177)
HALT
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: m.igel on January 13, 2017, 11:11:18 AM
Большое спасибо за развернутый ответ!

Функция поиска окон по заголовку возвращает hwnd окна, но проблема в том что нам нужно внутреннее окно блокнота, только туда можно вводить текст.
Может оно по идее и так, но у меня всё печатает.
То, что hwnd окна и рабочего поля разные я заметил. Но при поиске по окну печать идёт.

Про какую скобку идёт речь?
А, понял, про смайлик в печатаемом тексте. Писал для проверки, мелькнула мысль, что это ай-ай, но отвлекся. Зато возник резонный вопрос — что делать, если скобка таки нужна в тексте? Тот же смайлик. Подозреваю, что и другие знаки (слеши, кавычки и т.п.) так же могут попортить картину.



Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: m.igel on January 13, 2017, 11:33:40 AM
Есть другой вариант. В оконном режиме KEYSTRING в точности печатает заданные символы. Можно временно включить оконный режим и напечатать.

Пример
Code: (clickermann) [Select]
A_KEYSTRING ("Hello:-) world! Проверка: связи*", 310,177)

Чота мне эта строчка не нравится.
После текста вроде должна идти задержка и нумер окна.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Oraven on January 13, 2017, 11:39:04 AM
Есть другой вариант. В оконном режиме KEYSTRING в точности печатает заданные символы. Можно временно включить оконный режим и напечатать.

Пример
Code: (clickermann) [Select]
A_KEYSTRING ("Hello:-) world! Проверка: связи*", 310,177)

Чота мне эта строчка не нравится.
После текста вроде должна идти задержка и нумер окна.

В моем примере такого нет. Задержка не нужна вовсе. А HWND окна берется по координате. При этом кликер работает в обычном режиме эмуляции.
Возможно еще нужно добавить предварительный клик по полю ввода, для фокуса.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: m.igel on January 13, 2017, 11:52:24 AM
... либо функцией возвращающей hwnd по координате HGET.

Code: (clickermann) [Select]
...
$hw = HGET(310,177) // координата окна блокнота (белое пространство)
A_KEYSTRING ("Hello:- world! Проверка: связи*", 20, $hw)


Насколько я понял, тут мы жестко забиваем координаты точки в текстовом поле блокнота. Он окно может открыться/быть открыто где угодно. Верно ли я мыслю, что тут возможны два варианта.

1. Привязаться к окну (перейти в оконный режим, да?) и там кликнуть по нужному месту опираясь на "оконные" координаты.

2. Найти окно. Переместить его в 0,0. Задать размер, положим 300*200. Взять координату 150,100 (чтоб наверняка попасть).
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: m.igel on January 13, 2017, 12:13:54 PM
Есть другой вариант. В оконном режиме KEYSTRING в точности печатает заданные символы. Можно временно включить оконный режим и напечатать.

Пример
Code: (clickermann) [Select]
A_KEYSTRING ("Hello:-) world! Проверка: связи*", 310,177)

Чота мне эта строчка не нравится.
После текста вроде должна идти задержка и нумер окна.

В моем примере такого нет. Задержка не нужна вовсе. А HWND окна берется по координате. При этом кликер работает в обычном режиме эмуляции.
Возможно еще нужно добавить предварительный клик по полю ввода, для фокуса.

Я, конечно, прошу прощения, может чего не понял, но...

Есть другой вариант. В оконном режиме KEYSTRING в точности печатает заданные символы. Можно временно включить оконный режим и напечатать.

Пример
Code: (clickermann) [Select]
SUB(A_KEYSTRING, $str, $a_cx,$a_cy)
   $hw = HGET($a_cx,$a_cy)
   HSET($hw,1)
   KEYSTRING($str)
   HSET($hw,0)
END_SUB


A_KEYSTRING ("Hello:-) world! Проверка: связи*", 310,177)
HALT

и

Пишем
A_KEYSTRING("Текст", 10-задержка, hwnd-окна куда пишем)

Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: m.igel on January 13, 2017, 03:03:54 PM
Ерунда какая-то!

Попробовал пойти по второму варианту, с включением оконного режима. Чуток подшаманил, вроде должно работать, но — индейская изба! Печать идёт в стиле:
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeelllllllllllllllllllllllllllllllllllllllllllllllllllllloooooooooooooooooooooooo
только залипания ещё больше. Что я сделал не так?

Code: (clickermann) [Select]
// 12.01.2017 6

#name "Запись в notepad"//Имя нашего скрипта

EXECUTE("notepad.exe")//Запускаем программу notepad.exe. Команда EXECUTE равносильна окну "Выполнить" в Виндовс (Win+R).

WNDSTATE(WNDFIND("Блокнот"), 1)//Разворачиваем окно в заголовке которого есть строка "Блокнот". 1 - означает развернуть, 0 - свернуть.

WAITMS(1000)//Ждем чтобы блокнот окончательно запустился. 500 мс достаточно

$hw = wndfind("Блокнот") // получаем HWND окна Блокнота
//print   ($hw)

WNDPOS($hw,10,10)  // помещаем Блокнот в угол экрана
 
HSET($hw,1) // включаем в Блокноте оконный режим
$hw2 = HGET(100,100) // определяем hwnd текстового поля блокнота (как ни странно, 100,100 от угла экрана, а не от окна)
 
HSET($hw2,1) // включаем оконный режим в текстовом поле блокнота
KEYSTRING("Hello:- world! Проверка: связи*", 50) // пишем Привет...
HSET($hw2,0) // снимаем оконный режим.

print   ( $hw )
print   ( $hw2 )

//SUB(A_KEYSTRING, $str, 10,$hw)
//   //$hw = HGET($a_cx,$a_cy)
//      //$hw = wndfind("Безымянный") // (мой изврат) получаем HWND окна notepad
//   HSET($hw,1)
//   KEYSTRING($str)
//   HSET($hw,0)
//END_SUB

////--------------------
//$hwnd1 = wndfind("Clickermann -") // получаем HWND окна кликера
//$hwnd2 = wndfind("Блокнот") // получаем HWND окна Блокнота

//SETKBLAYOUT($hwnd1, 1033) // устанавливаем английскую раскладку для окон
//SETKBLAYOUT($hwnd2, 1033)
//print   ($hwnd1)
//print   ($hwnd2)

////или
////    SETKBLAYOUT($hwnd1, 1049) // устанавливаем русскую раскладку для окон
////    SETKBLAYOUT($hwnd2, 1049)
////--------------------

//FOR($i, $i < 2)//Начало цикла. Цифра 2 означает что цикл повторится 5 раз
//   
//   A_KEYSTRING("Hello:-/ world! Проверка: связи*", 20, $hw)//Вводим текст. 20 означает задержку в 20 мс между вводом каждой буквы
//   
//   KEYPRESS(#ENTER)//Нажимаем Enter чтобы перевести строку. #ENTER - код клавиши Enter
//   
//   print   ($hw)
//   
//END_CYC//Заканчиваем цикл

HALT//Останавливаем скрипт

Установка одинаковых раскладок не помогает.

Если вместо KEYSTRING использовать
KEYPRESS(#1)
KEYPRESS(#2)
KEYPRESS(#3)
то всё прекрасно работает!
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Vint on January 13, 2017, 03:16:51 PM
Что я сделал не так?

А ЧЯДНТ? Смотри скрин  :D.


Code: (clickermann) [Select]
$hw2 = HGET(100,100)  // определяем hwnd текстового поля блокнота (как ни странно, 100,100 от угла экрана, а не от окна)
А что здесь странного? HGET команда с глобальными координатами, иначе зачем бы она была нужна.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Oraven on January 13, 2017, 03:22:48 PM
Quote
Цифра 2 означает что цикл повторится 5 раз
С этой логикой не поспоришь...

Верный код
Code: (clickermann) [Select]
SUB(A_KEYSTRING, $str, $hwnd)
   HSET($hwnd,1)
   KEYSTRING($str)
   HSET($hwnd,0)
END_SUB

//=============================================

EXECUTE("notepad.exe")//Запускаем программу notepad.exe. Команда EXECUTE равносильна окну "Выполнить" в Виндовс (Win+R).
WAITMS(1000)

$hw = wndfind("Блокнот") // получаем HWND окна Блокнота
WNDGETINFO($hw, $px, $py, $sx, $sy)
$hw = HGET($px+100,$py+100)

FOR($i=0, $i < 2) //Начало цикла. Цифра 2 означает что цикл повторится 2 раза
   
   A_KEYSTRING("Hello:-/ world! Проверка: связи*", $hw)
   WAITMS(50)
   KEYPRESS(#ENTER)
   WAITMS(50)
   
END_CYC

HALT
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Oraven on January 13, 2017, 03:26:01 PM
Code: (clickermann) [Select]
SUB(A_KEYSTRING, $str, $hwnd)Переменные используемые в подпрограмме $str и $hwnd после окончания подпрограммы будут обнулены. Поэтому не стоит использовать переменные с темже именем где то еще.




Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: m.igel on January 13, 2017, 03:34:30 PM
Что я сделал не так?

А ЧЯДНТ? Смотри скрин  :D.


Code: (clickermann) [Select]
$hw2 = HGET(100,100)  // определяем hwnd текстового поля блокнота (как ни странно, 100,100 от угла экрана, а не от окна)
А что здесь странного? HGET команда с глобальными координатами, иначе зачем бы она была нужна.

Шаман, аднака!
Поставил вместо Hello... просто 5, так он мне аж 53 штуки напечатал. Но ашей гораздо больше.

А вот с глобальными координатами непонятно.
Из хелпа:
"После этого HWND на главной форме меняться уже не будет, он будет отображать рабочий элемент. Так же изменятся координаты, отображаемые в редакторе сценария, поскольку каждое отдельное "окно"-элемент обладает собственной относительной системой координат, где (0,0) находится в левом верхнем углу элемента. Относительная она потому что если передвигать окно по экрану, его "внутренняя" система координат не изменится.
Сам синтаксис сценариев является единым и для обычного режима, и для оконного. "
Поэтому я и решил, что в оконном режиме координаты оконные. Думал, что привязавшись к окну и развернув его до заданных размеров, можно будет тыкать мышкой куда надо. Но не прокатило. пришлось извращаться.

"После этого HWND на главной форме меняться уже не будет..." — вот это момент вообще не понял. Меняется за милую душу когда мышью елозишь.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: m.igel on January 13, 2017, 03:47:36 PM
Quote
Цифра 2 означает что цикл повторится 5 раз
С этой логикой не поспоришь...
С логикой вообще спорить бесполезно!  ;D

Верный код
Code: (clickermann) [Select]
SUB(A_KEYSTRING, $str, $hwnd)
   HSET($hwnd,1)
   KEYSTRING($str)
   HSET($hwnd,0)
END_SUB

//=============================================

EXECUTE("notepad.exe")//Запускаем программу notepad.exe. Команда EXECUTE равносильна окну "Выполнить" в Виндовс (Win+R).
WAITMS(1000)

$hw = wndfind("Блокнот") // получаем HWND окна Блокнота
WNDGETINFO($hw, $px, $py, $sx, $sy)
$hw = HGET($px+100,$py+100)

FOR($i=0, $i < 2) //Начало цикла. Цифра 2 означает что цикл повторится 2 раза
   
   A_KEYSTRING("Hello:-/ world! Проверка: связи*", $hw)
   WAITMS(50)
   KEYPRESS(#ENTER)
   WAITMS(50)
   
END_CYC

HALT


Логичненько.
Верный код это хорошо, спасибо. Но хотелось бы понять откуда вылез этот "дребезг клавиш".
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: m.igel on January 13, 2017, 03:49:06 PM
Похоже проблема на моей стороне...  :(

Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Vint on January 13, 2017, 03:50:05 PM
"После этого HWND на главной форме меняться уже не будет..." — вот это момент вообще не понял. Меняется за милую душу когда мышью елозишь.
:o У тебя точно программа Clickermann?  ;D ;D
После привязки, когда горит "вкл" - не меняется. Ты не пропустил слова "на главной форме"? НЕ В РЕДАКТОРЕ.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: m.igel on January 13, 2017, 05:07:10 PM
НЕ В РЕДАКТОРЕ.

Блин :o
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: kudrjashv on January 16, 2017, 03:04:01 PM
А скроллинг мышью как делать? Конкретно есть код крутить колесо мыши вниз, т.е WHEELDOWN?
Я пока только так смог (для вконтакте):
Code: (clickermann) [Select]
A_MDOWN (1000,560, 131540) //скролл вниз
A_MOVE(1000,600, 131540)
WAIT(1)
A_LCLICK (1000,650, 131540)
HALT
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Vint on January 16, 2017, 03:20:37 PM
А скроллинг мышью как делать? Конкретно есть код крутить колесо мыши вниз, т.е WHEELDOWN?
А про WHEELDOWN в привязке забудте. Колесо мыши действует по разному, в зависимости от положения указателя.
Используй клавиатуру, PageDown/PageUp, стрелки вверх/вниз.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: kudrjashv on January 16, 2017, 03:37:42 PM
понял
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: fisher on April 21, 2017, 10:59:13 AM
Добрый день.

Осваиваю Clickermann, делаю скриншот окна Chrome с flash игрой.
При использовании
Code: [Select]
GETSCREEN
SCREENSHOT
получаю черный экран.

Пробую альтернативный вариант из этой темы.
При указании hwnd в явном виде, все работает, 
Code: [Select]
$hwnd1 = 3805494а при указании имени окна - получаю черный экран (правда с какой то белой полосой).
Но если изменить имя, например добавив какой то символ, то Clickermann ругается, т.е. дело не в неправильном имени.
Code: [Select]
$hwnd2 = WNDFIND ("Имя - Google Chrome")
Направьте пожалуйста на путь истинный, как использовать по наименованию окна?
[spoiler=Пример кода]
Code: [Select]
#include "alt_winmode.cms"

$hwnd1 = 3805494
$hwnd2 = WNDFIND ("Имя - Google Chrome")

while($var1 < 2)
   A_GETSCREEN(0, 0, 0, 0, $hwnd1)
   A_SCREENSHOTEX(0, 0, 0, 0, Number, 0,  $hwnd1)
 
   inc($var1)
end_cyc

while($var2 < 2)
   A_GETSCREEN(0, 0, 0, 0, $hwnd2)
   A_SCREENSHOTEX(0, 0, 0, 0, Name, 0,  $hwnd2)
 
   inc($var2)
end_cyc
[/spoiler]
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Vint on April 21, 2017, 11:18:00 AM
окна Chrome с flash игрой.
...
Направьте пожалуйста на путь истинный, как использовать по наименованию окна?
Ключевое слово "flash"!  Окно флэша это не окно браузера. Привязываться нужно именно к окну флэша, по имени это не сделать, только по координатам.


Ещё на всякий случай вот это пусть тут полежит.
http://crapware.aidf.org/forum/index.php?topic=952.msg4188#msg4188
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on April 24, 2017, 12:50:30 PM
Переписал A_KEYSTRING, если кому интересно... http://crapware.aidf.org/forum/index.php?topic=2111.msg12566#msg12566
Теперь он стабильно печатает на любом языке с любой раскладкой + все основные символы. если нужны и неосновные символы, можно добавить, можно и добавить шрифты других языков, закорючки там всякие, иероглифы, смайлики и прочее...

Только для версии 4.13 b3 http://crapware.aidf.org/forum/index.php?topic=356.msg19022#msg19022
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: fisher on April 27, 2017, 01:38:00 PM
Ключевое слово "flash"!  Окно флэша это не окно браузера. Привязываться нужно именно к окну флэша, по имени это не сделать, только по координатам.

Прошу прощения, пропустил Ваш ответ. Спасибо. С hwnd разобрался, получаю нажатием в окне при старте скрипта.

Вопрос, как убрать окно к которому привязал Clickermann? Видеокарта Radeon вроде не поддерживает второй монитор (при отсутствии такового). Установил программу менеджер рабочего стола  Dexpot (http://www.dexpot.de/?lang=en), но она как я понял просто эмулирует столы, отображая программы соответствующие выбранному столу, как следствие, нужное окно оказывается под другими. Нашел другой вариант Desktops v2.0 (https://technet.microsoft.com/en-us/sysinternals/cc817881.aspx) - добавляет реальный рабочий стол, окно отображается как нужно, Clickermann его видит! Но, есть другая засада: изображение другого рабочего стола не обновляется. Т.е. я написал:
Code: [Select]
A_GETSCREEN(0, 0, 0, 0, $hwnd1)
A_SCREENSHOTEX(0, 0, 0, 0, pref, 0,  $hwnd1)
WAIT(2)

запустил, переключился на другой рабочий стол, в результате вижу одинаковый скриншот, с тем же временем на изображении, открываю стол на котором запущен Clickermann и исследуемое окно браузер - скриншот получается с текущим обновленным изображением.

Подскажите пожалуйста, каким образом соблюсти условие:

"нельзя чтобы окно было закрыто другим окном"

позволив работать Clickermann и отвоевать возможность пользоваться ПК самому.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Vint on April 27, 2017, 02:48:33 PM
Desktops v2.0 не вариант, его уже пробовали использовать. Там ничего не отрисовывается на неактивных столах. Выполняется или нет, не помню.

Почему не задвинуть окно за край до максимума?
Хочешь руками, хочешь командой

в угол
Code: (clickermann) [Select]
WNDPOS(hwnd, $_xmax, $_ymax)
впритык вправо
Code: (clickermann) [Select]
WNDPOS(hwnd, $_xmax, 0)
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: fisher on April 27, 2017, 03:44:41 PM
Почему не задвинуть окно за край до максимума?
Хочешь руками, хочешь командой

Спасибо, сейчас попробую. Минус, что процесс не видно, контролировать хочется  :)
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Vint on April 27, 2017, 04:02:57 PM
Минус, что процесс не видно, контролировать хочется  :)
Хм. А зачем тогда привязка?

Если время от времени нужно глянуть, хотя на что там смотреть, то можно сделать поток с горячей клавишей вытаскивающий/убирающий окно.
Code: (clickermann) [Select]
THREAD(whide, 1)
    IF(ISKEYDOWN(#F9) = 1)
        $hiden = $hiden ^ 1
        IF($hiden = 1)
            WNDPOS(WNDFIND("Входящие", 0), $_xmax, 0)
        ELSE
            WNDPOS(WNDFIND("Входящие", 0), 50, 50)
        END_IF
        WAITMS(500)
    ELSE
        WAITMS(100)
    END_IF
END_THREAD

//основной скрипт
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: fisher on April 27, 2017, 05:30:14 PM
Супер. Еще раз спасибо. Мысль была именно в этом направлении, но до раздельных потоков еще не дошла.
Все что делал, заработало!
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: fisher on April 28, 2017, 11:24:47 AM
Добрый день.

Рано я порадовался...  :( После того как экран задвинут, картинка почему то не обновляется.
Как задвигаю окно - скриншот делается нужного окна, но картинка одна и та же,
как только возвращаю - скриншот начинает обновляться.

В общем аналогично Desktops v2.0 получается.
Windows 8.1. Clickermann v4.12.001

Код (лишнее убрал):
Code: [Select]
#include "alt_winmode.cms"
LOGCLEAR    // очищаем лог
// Получение hwnd окна
HINTPOPUP ("нажмите СКМ для запуска")
WHILE(iskeydown(4)=0) // ждёт  нажатие левой=1 (средней=4) кнопки мыши
   WAITMS(50)
END_CYC

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

WHILE(iskeydown(4)=1) // ждёт  отпускание левой=1 (средней=4) кнопки мыши
   WAITMS(50)
END_CYC

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

CYCLE:  // основной цикл

A_GETSCREEN(0, 0, $_xmax, $_ymax, $hwnd1)
A_COLORMODE(6, 0, 0, $_xmax, $_ymax, $hwnd1)
A_SCREENSHOTEX(0, 0, 0, 0, "Wind_", 0,  $hwnd1)
WAIT(30)

GOTo (CYCLE)
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on April 28, 2017, 12:25:31 PM
немного не правильно, у тебя гетскрин и колормод выходит за пределы экрана. в место $_xmax, $_ymax пиши 0, 0.
в версии 4.13 это даже приводит к ошибке при выполнении COLORMODE

пример ошибки в версии 4.13:
Code: (clickermann) [Select]
GETSCREEN(0,0, $_xmax+10,$_ymax+10)
COLORMODE(6, 0,0, $_xmax+10,$_ymax+10)

но это не имеет дела к тому, что за пределами экрана картинка у тебя также не отрисовывается. я хз, пробуй задвигать не полностью, чтобы край окна торчал. если это возможно, сделай разрешение экрана побольше, чтоб твое окно стало меньше и не мешало. в nvidia вроде даже есть возможность ставить разрешение больше чем поддерживает монитор, типа масштабирования. пробуй какнибудь врубить доп. монитор, телик там подруби или еще чего  :) . в общем пробуй расширить твой рабочий стол.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Vint on April 28, 2017, 12:25:37 PM
Потому что так не прокатит. За экраном работает только стандартная привязка, а не альтернативная.
Если обычный режим эмуляции, то заскринить за пределами экрана не выйдет и получить 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
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Vint on April 28, 2017, 12:36:34 PM
Я давно уже проводил опыты, пытался заменить привязку просто задвиганием окна и попытками его анализировать. Так GETSCREEN работает только в пределах официального экрана. Если задавать за ним получается странный результат. Выходящие координаты опять берутся с 0 по горизонтали и происходит сдвиг по вертикали. Короче всё равно, то что на экране только смещённое неправильно.
COLORMODE же вообще не срабатывает если координаты выходят за край экрана. Я уже писал об этом рэпорт.
http://crapware.aidf.org/forum/index.php?topic=1914.0
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on April 28, 2017, 12:53:27 PM
 помнится мне в винХР я както делал разрешение рабочего стола намного больше разрешения тогдашних мониторов. при этом видимую область можно было перемещать мышкой, видимая часть двигалась за курсором.
 немного погуглил, ничего не нашел по этому вопросу. а по сути это очень даже помогло бы в данном случае. окно бы находилось за пределами видимой области монитора, при этом рабочее пространство монитора не изменилась бы, оно равно его максимальному разрешению. жаль что такой возможности сейчас нет, возможно она и есть, но нужно поискать как ее реализовать.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: fisher on April 28, 2017, 01:06:57 PM
в общем пробуй расширить твой рабочий стол.
В дровах копался, виртуальные столы попробовал, гуглил. Пока не нашел вариантов.. Ну кроме как отдать ноут под Clickermann  :)

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

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

PS В этом и есть причина, что не отрисовывается? GETSCREEN не работает и в буфере старый кадр висит, SCREENSHOTEX его сохраняет на диск.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on April 28, 2017, 01:11:03 PM
ставь виртуальную машину, и проблема решится, и ноут свободен  :).
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: fisher on April 28, 2017, 01:19:36 PM
ставь виртуальную машину, и проблема решится, и ноут свободен  :).
Пробовал, до того как начал экран анализировать. Просто кликал по координатам, но неудобно, координаты не привяжешь, карта игры (FoE) больше экрана, приходится при старте скрипта тыкать по зданиям, указывая местонахождение. Остановил скрипт, что то сделал, карту сместил и заново. 
Вроде и ноут не самый дохлый, хоть и не супер - AMD A8 4x2100, ОЗУ 8, но игруха на VirtualBox с установленной Win XP (использовалась для других целей) жутко тормозит, даже когда я в виртуалке разрешил все ядра и ОЗУ. Вероятно там внешняя видеокарта не работает, вот и тормозит.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Vint on April 28, 2017, 01:25:24 PM
Вроде у меня при альтернативной привязке скринит, но не отрисовывается. А при стандартной привязке flash не видно, черный экран (и через лупу).

Не использовать хром. Отключить аппаратное ускорение у flash. ПКМ... перезапустить. Всё видит прекрасно.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: fisher on April 28, 2017, 01:42:03 PM
Не использовать хром. Отключить аппаратное ускорение у flash. ПКМ... перезапустить. Всё видит прекрасно.

Да, видит, но при отключении аппаратного ускорения, тормозит flash жутко. При загрузке отрисовывает картинку 10 минут. Видать Flash довольно прожорлив.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: fisher on April 28, 2017, 05:35:51 PM
Да, видит, но при отключении аппаратного ускорения, тормозит flash жутко. При загрузке отрисовывает картинку 10 минут. Видать Flash довольно прожорлив.
Обновите железо, уменьшите разрешение экрана, отключите фоновые процессы.
Спасибо за совет, но тормозит то как раз потому, что отключается аппаратная производительность компа (не берусь утверждать, думаю видеокарта) и идет программная обработка, соответственно нагружающая процессор и т.п. Если при включенном аппаратном ускорении все летает, плюс еще открыто несколько десятков окон, то при выключенном ускорении Adobe Flash забирает 75-80% процессора.

PS Это мысли вслух, понимаю, что проблемы негра, шерифа не касаются  ::)
Интересует, может есть все таки возможность фонового использования Clickermann и Flash игрухи без отключения аппаратного ускорения?
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on April 28, 2017, 10:35:38 PM
Интересует, может есть все таки возможность фонового использования Clickermann и Flash игрухи без отключения аппаратного ускорения?

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

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


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

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

вот вам и расширенный рабочий стол, только его не видно, а нам и не надо  ;D.
 
 
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: fisher on April 29, 2017, 09:04:33 AM
самому интересно стало, неужели без физического монитора не возможно вкл его?
 оказалось, это очень просто!!!

тестировал на вин7.
 идем сюда - Панель управления\Все элементы панели управления\Экран\Разрешение экрана , или на рабочем столе пкм, и сразу разрешение экрана.
 жмем кнопку "найти" , появляется мониторчик справа от основного.
 тыкаем на него, и ниже, там где "несколько мониторов: экран не выбран" меняем на " попытаться в любом случае подключиться к: vga".
Спасибо за Ваше участие. У меня после нажатия кнопки "найти", ничего не появилось. Вероятно у Вас аппаратно есть еще один видео-выход (интегрированный видеовыход, при использовании внешней карты).
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: nermal on December 08, 2017, 11:44:12 PM
Всем доброго времени суток, а можно ли как то реализовать нажатие в окнах кнопок Enter, ctrl ? Интересует комбинация crtl+V но что то не выходит.. только V печатаются в текстовом поле.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on December 09, 2017, 12:45:29 AM
Всем доброго времени суток, а можно ли как то реализовать нажатие в окнах кнопок 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)
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: IDK on January 05, 2018, 08:25:35 PM
Здравствуйте, спрашивал в вконтакте мне вроде и ответили, только я не понял как это использовать, поэтому решил спросить в теме, которую это касается.
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 окна я указал правильно, и клики производятся только в нём. Но они не производятся по указанной координате. Куда ведёшь мышь туда и идут клики.
Во вконтакте мне посоветовали вот это.
"Сначала привязка к окну, потом определение и указание нужных вам координат, именно в таком порядке."
Но я так и не понял как это использовать.
Вообще когда перешёл на десятку появлялись проблемы с автоматической записью скрипта. Может быть десятка как-то и на это влияет?
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on January 08, 2018, 05:40:21 PM
Здравствуйте, спрашивал в вконтакте мне вроде и ответили, только я не понял как это использовать, поэтому решил спросить в теме, которую это касается.
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 окна я указал правильно, и клики производятся только в нём. Но они не производятся по указанной координате. Куда ведёшь мышь туда и идут клики.
Во вконтакте мне посоветовали вот это.
"Сначала привязка к окну, потом определение и указание нужных вам координат, именно в таком порядке."
Но я так и не понял как это использовать.
Вообще когда перешёл на десятку появлялись проблемы с автоматической записью скрипта. Может быть десятка как-то и на это влияет?
Сорри, отсутствовал, праздников уж очень много было.
Данный режим нужен только в тех случаех, если с обычной привязкой проблемы, а именно если кликер слепнет при привязке. Второй плюс, это возможность работы в нескольких окнах одновременно, и при этом не мешая основной работе на пк.
По твоему вопросу могу лишь посоветовать предворительное перемещение курсору в нужные координату, и далее клик. Насколько помню, в арчейдже я использовал альтернативу, и без передвижения курслра клик не проходил. И никакого ссворачивания окна. В теме есть куча советов куда всунуть неактивное окно.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: inilim on January 21, 2018, 06:20:33 AM
Включаем в настройках видеокарты дополнительный монитор и перетаскиваем наши окна на рабочий стол дополнительного монитора.

Вы имеете в виду подключить второй монитор? или утилита позволяющая это сделать?
Будьте добры по подробней.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on January 21, 2018, 09:06:22 AM
Включаем в настройках видеокарты дополнительный монитор и перетаскиваем наши окна на рабочий стол дополнительного монитора.

Вы имеете в виду подключить второй монитор? или утилита позволяющая это сделать?
Будьте добры по подробней.
http://crapware.aidf.org/forum/index.php?topic=2111.msg21592#msg21592
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: inilim on January 23, 2018, 05:33:31 AM
Огромное спасибо, разобрался, но как мне подсмотреть ту сторону. В редакторе лупой можно посмотреть, но не удобно.(Так как требуется проверять работу скрипта) Есть возможность добавить горизонтальный "скролинг". В интернете встречал отдельные программы, которые позволяют расширить горизонтальные границы рабочего стола, при это есть возможность прокрутки.
Но к сожалению чистой программы не удалось найти.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on January 24, 2018, 12:04:14 AM
Есть возможность добавить горизонтальный "скролинг". В интернете встречал отдельные программы, которые позволяют расширить горизонтальные границы рабочего стола, при это есть возможность прокрутки.
Но к сожалению чистой программы не удалось найти.

 когдато 1000 лет назад у меня была видеокарта gf4 mx440. в вин хр с тогдашними драйверами при выставлении разрешения превышающего разрешение монитора, драйвер без дополнительного софта включал "скролинг" рабочего стола. то есть на мониторе была видна только часть рабочего стола равная его разрешению. остальная область находилась за пределами видимой части. но стоило поднести курсор к краю монитора, и картинка сдвигалась.
 пару лет назад пытался найти софт для такой возможности.... но безрезультатно  :-\.

 если что нибудь найдешь, сообщи.



как вариант:

Code: (clickermann) [Select]
GETSCREEN(1100,100,1500,500)
SCREENSHOTFIX(1100,100,1500,500, "file.jpeg", 1)
waitms(400)

 выделить файл "file.jpeg" в папке с этим скриптом, открыть область предварительного просмотра, и наблюдать за изменениями в области SCREENSHOTFIX. либо открыть этот файл в "просмотрщике" фотографий, там тоже при обновлении файла обновляется просмотр. в вин7 обновление в средствах просмотра ~2 кадра в секунду.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: ya12 on April 08, 2018, 10:14:38 AM
Я правильно понимаю, что в альтернативной привязке PS/2 режим не используется?

Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Интересующийся on April 17, 2018, 10:03:54 PM


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

тестировал на вин7.
 идем сюда - Панель управления\Все элементы панели управления\Экран\Разрешение экрана , или на рабочем столе пкм, и сразу разрешение экрана.
 жмем кнопку "найти" , появляется мониторчик справа от основного.
 тыкаем на него, и ниже, там где "несколько мониторов: экран не выбран" меняем на " попытаться в любом случае подключиться к: vga".
 жмем применить.
 тыкаем опять на второй (доп. монитор), и меняем там где "несколько экранов: отобразить рабочий стол только на 1" на "расширить эти экраны".
 жмем применить и сохранить изменения.
 меняем разрешение дополнительного монитора на нужное нам (для нас чем больше тем лучше) и применяем изменения.
 готово  :D
[img]http://i.imgur.com/uLi6j3Q.png[/img
[/quote]
Здравствуйте.
Все как у Вас получились, но только не соображу - как перейти на второй монитор, туда задвинул окно, а как перейти?!
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on April 18, 2018, 09:55:21 PM
Все как у Вас получились, но только не соображу - как перейти на второй монитор, туда задвинул окно, а как перейти?!
что значит "туда задвинул окно, а как перейти?!"? все, окно задвинул, бот там делает все что нужно. если нужно посмотреть что там происходит, то тут уж нужно думать. вот один из вариантов http://crapware.aidf.org/forum/index.php?topic=2111.msg25800#msg25800 . я в таких случаях просто делаю подробное логирование, дабы быть в курсе всех дел. еще, как вариант, подключить второй монитр  :D
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Интересующийся on April 19, 2018, 07:34:31 AM
Я сильно сдвинул окно, достать не могу, и экран не сдвигается вправо
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: i0 on April 19, 2018, 08:36:01 AM
переключиться на задвинутое окно alt+tab и нажать win+shift+left
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: melkichelik on January 20, 2021, 11:49:52 PM
Файл alt_winmode.
строка 38 и 39.
Code: [Select]
//A_LUP
SUB(A_LUP, $A_x, $A_y, $A_hwnd)

Тут наверное ошибка, нужно заменить за

Code: [Select]
//A_RUP
SUB(A_RUP, $A_x, $A_y, $A_hwnd)
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: dramster on January 25, 2021, 12:39:18 AM
Файл alt_winmode.
строка 38 и 39.
Code: [Select]
//A_LUP
SUB(A_LUP, $A_x, $A_y, $A_hwnd)

Тут наверное ошибка, нужно заменить на

Code: [Select]
//A_RUP
SUB(A_RUP, $A_x, $A_y, $A_hwnd)
Заменил.
Title: Re: Альтернатива привязке - работа с несколькими окнами, решение черного окна, и тп.
Post by: Artur on March 15, 2023, 05:54:37 PM
В браузерах хром не работает.