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

Основной раздел => Общие вопросы => Topic started by: Omich on May 13, 2019, 06:40:26 PM

Title: Привязка к окну
Post by: Omich on May 13, 2019, 06:40:26 PM
Я уже обращался за помощью сюда, мне помогли.
Теперь появилась другая проблема с этим скриптом) когда привязываю к окну клавиатура не работает (действия не производятся) как решить?

GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 15198207,6248287,5400184,12447743)
   SETTHREAD (t1,2)
   IF(ISKEYDOWN(#A)=1)
      KEYUP(#A)
   END_IF
   IF(ISKEYDOWN(#D)=1)
      KEYUP(#D)
   END_IF
   IF(ISKEYDOWN(#E)=1)
      KEYUP(#E)
   END_IF
   LCLICK($_return1, $_return2)
   WAITMS(10)
ELSE
   SETTHREAD (t1,1)
   WAITMS(30)
END_IF
 
THREAD(t1,0)
   KEYDOWN(#A)
   WAIT(1)
   KEYUP(#A)
   WAIT(1)
   KEYDOWN(#D)
   WAIT(1)
   KEYUP(#D)
   WAIT(1)
   KEYPRESS(#E)
   WAIT(1)
END_THREAD
Title: Re: Привязка к окну
Post by: Космич on May 13, 2019, 07:16:07 PM
можно попробовать сделать вот так, только не забудь дескриптор окна в переменную hwnd записать

Code: (clickermann) [Select]
SUB(_KEYBOARD_EVENT, $event, $key, $hwnd)

   $_SUB_DELAY_KEYBOARD_EVENT = 25
   
   SWITCH($event)
   CASE("KEYPRESS")
      SENDMESSAGE($hwnd, 0x0100, $key, 0)
      WAITMS($_SUB_DELAY_KEYBOARD_EVENT)
      SENDMESSAGE($hwnd, 0x0101, $key, 0)
   CASE("KEYDOWN")
      SENDMESSAGE($hwnd, 0x0100, $key, 0)
   CASE("KEYUP")
      SENDMESSAGE($hwnd, 0x0101, $key, 0)
   END_SWITCH
END_SUB

Code: (clickermann) [Select]
THREAD(t1,0)
   _KEYBOARD_EVENT("KEYDOWN", #A, $hwnd)
   WAIT(1)
   _KEYBOARD_EVENT("KEYUP", #A, $hwnd)
   WAIT(1)
   _KEYBOARD_EVENT("KEYDOWN", #D, $hwnd)
   WAIT(1)
   _KEYBOARD_EVENT("KEYUP", #D, $hwnd)
   WAIT(1)
   _KEYBOARD_EVENT("KEYPRESS", #E, $hwnd)
   WAIT(1)
END_THREAD
Title: Re: Привязка к окну
Post by: Oraven on May 13, 2019, 08:23:49 PM
можно попробовать сделать вот так, только не забудь дескриптор окна в переменную hwnd записать

Кликер может возвращать текущий HWND привязанного окна. К тому же описание подпрограммы должно быть внутри потока.

Я уже обращался за помощью сюда, мне помогли.
Теперь появилась другая проблема с этим скриптом) когда привязываю к окну клавиатура не работает (действия не производятся) как решить?

Скрипт что я написал выше не предназначен для оконного режима. Клавиши в оконном режиме не могут быть зажаты командами KEYDOWN но с помощью SENDMESSAGE есть вероятность что будет работать. Все зависит от окна.

Скрипт для оконного режима.
Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 15198207,6248287,5400184,12447743)
   SETTHREAD (t1,2)
   LCLICK($_return1, $_return2)
   WAITMS(10)
ELSE
   SETTHREAD (t1,1)
   WAITMS(30)
END_IF

THREAD(t1,0)
   SUB(_KEYBOARD_EVENT, $event, $key)
      SWITCH($event)
         CASE("KEYPRESS")
            SENDMESSAGE($_hwnd, 0x0100, $key, 0)
            WAITMS(30)
            SENDMESSAGE($_hwnd, 0x0101, $key, 0)
         CASE("KEYDOWN")
            SENDMESSAGE($_hwnd, 0x0100, $key, 0)
         CASE("KEYUP")
            SENDMESSAGE($_hwnd, 0x0101, $key, 0)
      END_SWITCH
   END_SUB
   _KEYBOARD_EVENT("KEYDOWN", #A)
   WAIT(1)
   _KEYBOARD_EVENT("KEYUP", #A)
   WAIT(1)
   _KEYBOARD_EVENT("KEYDOWN", #D)
   WAIT(1)
   _KEYBOARD_EVENT("KEYUP", #D)
   WAIT(1)
   _KEYBOARD_EVENT("KEYPRESS", #E)
   WAIT(1)
END_THREAD
Title: Re: Привязка к окну
Post by: Космич on May 13, 2019, 08:43:33 PM
а ну да, точно.  тогда лучше прописать через директиву #include

Title: Re: Привязка к окну
Post by: Omich on May 14, 2019, 02:17:12 PM
можно попробовать сделать вот так, только не забудь дескриптор окна в переменную hwnd записать

Кликер может возвращать текущий HWND привязанного окна. К тому же описание подпрограммы должно быть внутри потока.

Я уже обращался за помощью сюда, мне помогли.
Теперь появилась другая проблема с этим скриптом) когда привязываю к окну клавиатура не работает (действия не производятся) как решить?

Скрипт что я написал выше не предназначен для оконного режима. Клавиши в оконном режиме не могут быть зажаты командами KEYDOWN но с помощью SENDMESSAGE есть вероятность что будет работать. Все зависит от окна.

Скрипт для оконного режима.
Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 15198207,6248287,5400184,12447743)
   SETTHREAD (t1,2)
   LCLICK($_return1, $_return2)
   WAITMS(10)
ELSE
   SETTHREAD (t1,1)
   WAITMS(30)
END_IF

THREAD(t1,0)
   SUB(_KEYBOARD_EVENT, $event, $key)
      SWITCH($event)
         CASE("KEYPRESS")
            SENDMESSAGE($_hwnd, 0x0100, $key, 0)
            WAITMS(30)
            SENDMESSAGE($_hwnd, 0x0101, $key, 0)
         CASE("KEYDOWN")
            SENDMESSAGE($_hwnd, 0x0100, $key, 0)
         CASE("KEYUP")
            SENDMESSAGE($_hwnd, 0x0101, $key, 0)
      END_SWITCH
   END_SUB
   _KEYBOARD_EVENT("KEYDOWN", #A)
   WAIT(1)
   _KEYBOARD_EVENT("KEYUP", #A)
   WAIT(1)
   _KEYBOARD_EVENT("KEYDOWN", #D)
   WAIT(1)
   _KEYBOARD_EVENT("KEYUP", #D)
   WAIT(1)
   _KEYBOARD_EVENT("KEYPRESS", #E)
   WAIT(1)
END_THREAD

Теперь когда привязываю к окну не работают клики
Title: Re: Привязка к окну
Post by: Космич on May 14, 2019, 02:26:13 PM
Code: (clickermann) [Select]
SUB(_MOUSE_EVENT, $event, $x, $y, $_hwnd)

   $_SUB_DELAY_MOUSE_EVENT = 25
   
   SWITCH($event)
   CASE("LCLICK")
      SENDMESSAGE($_hwnd, 0x0201, 0x0001, $x + ($y*65536))
      WAITMS($_SUB_DELAY_MOUSE_EVENT)
      SENDMESSAGE($_hwnd, 0x0202, 0x0001, $x + ($y*65536))
   CASE("RCLICK")
      SENDMESSAGE($_hwnd, 0x0204, 0x0002, $x + ($y*65536))
      WAITMS($_SUB_DELAY_MOUSE_EVENT)
      SENDMESSAGE($_hwnd, 0x0205, 0x0002, $x + ($y*65536))
   CASE("MCLICK")
      SENDMESSAGE($_hwnd, 0x0207, 0x0010, $x + ($y*65536))
      WAITMS($_SUB_DELAY_MOUSE_EVENT)
      SENDMESSAGE($_hwnd, 0x0208, 0x0010, $x + ($y*65536))
   CASE("DBLCLICK")   
      SENDMESSAGE($_hwnd, 0x0203, 0x0001, $x + ($y*65536))
   CASE("LDOWN")
      SENDMESSAGE($_hwnd, 0x0201, 0x0001, $x + ($y*65536))
   CASE("LUP")
      SENDMESSAGE($_hwnd, 0x0202, 0x0001, $x + ($y*65536))
   CASE("RDOWN")
      SENDMESSAGE($_hwnd, 0x0204, 0x0002, $x + ($y*65536))
   CASE("RUP")
      SENDMESSAGE($_hwnd, 0x0205, 0x0002, $x + ($y*65536))
   CASE("MDOWN")
      SENDMESSAGE($_hwnd, 0x0207, 0x0010, $x + ($y*65536))
   CASE("MUP")
      SENDMESSAGE($_hwnd, 0x0208, 0x0010, $x + ($y*65536))
   CASE("MOVE")   
      SENDMESSAGE($_hwnd, 0x0200, 0,      $x + ($y*65536))   
   END_SWITCH
END_SUB