Author Topic: Привязанное окно  (Read 8117 times)

0 Members and 1 Guest are viewing this topic.

Cyc

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Привязанное окно
« on: January 11, 2015, 09:42:06 PM »
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, 1360,670,"1.bmp")
LCLICK($_return1, $_return2)
WAIT(RND(1,3))
ELSE
IF_PICTURE_IN (0,0, 1365,130, "2.bmp")
   LCLICK($_return1, $_return2)
   WAIT(RND(1,3))
ELSE
   LCLICK(1790,365)
   waitms(55)
   LCLICK(1790,365)
   keydown(#ctrl)
   waitms(99)
   keypress(#c)
   keyup(#ctrl)
   wait(1)
   GETSCREEN
   $lov=fromclip()
   if($lov>5)
      print("проверяю ловкость",$lov)
      IF_PICTURE_IN (0,0, 1190,400, "3.bmp")
         LCLiCK($_return1, $_return2)
         wait(1)
         
      end_if
Вот такая часть скрипта, в определенных координатах нажимает и копирует в буфер если скопированное число меньше 5 нажимает на картинку 3.
Вопрос заключается вот в чём если окно привязать то оно не хочет этого делать в чём проблема?

з.ы.: Раньше создавая\отвечая можно было выбрать параметры текста, коды, цитаты сейчас же окно стандартное и не чего такого делать нельзя. Я как то изменил оформление форума? Уж больше не удобное прописывать коды кликермена, цитаты, смайлы ручками ;(

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Привязанное окно
« Reply #1 on: January 11, 2015, 09:50:21 PM »
При привязке не работают зажатия клавиш

Code: (clickermann) [Select]
keydown(#ctrl)
waitms(99)
keypress(#c)
keyup(#ctrl)
будет нажиматься ctrl а потом с но не вместе.

з.ы.: Раньше создавая\отвечая можно было выбрать параметры текста, коды, цитаты сейчас же окно стандартное и не чего такого делать нельзя. Я как то изменил оформление форума? Уж больше не удобное прописывать коды кликермена, цитаты, смайлы ручками ;(

Может глюк? Попробуй сбросить кеш
« Last Edit: January 11, 2015, 09:52:07 PM by Oraven »

Cyc

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Re: Привязанное окно
« Reply #2 on: January 11, 2015, 10:10:23 PM »
чистка кеша помогла, спасибо.
То есть скопировать в буфер не получится при привязке ;(
То есть вариант в привязанном окне остаётся 1. Создать картинки с цифрами их то по сути цифр этих то и не много от 3-23, грубо говоря создать 20 бмп файлов и что б он их перебирал, то есть если данная картинка найдена нажимаем картинку 1, если нет то 2. Вопрос тогда в другом. Такой перебор как бы будет подгружать программу или не сильно? В общем стоит таким заморачиватся или проще поставить виртуалку?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Привязанное окно
« Reply #3 on: January 11, 2015, 10:31:12 PM »
В оконном режиме может сработать использование функции POSTMESSAGE

Code: (clickermann) [Select]
POSTMESSAGE ($_hwnd, 0x0100, 0x11, 0)    //нажал Ctrl
WAITMS(50)
POSTMESSAGE ($_hwnd, 0x0100, 0x43, 0)    //нажал C
WAITMS(50)
POSTMESSAGE ($_hwnd, 0x0101, 0x43, 0)     //отпустил C
WAITMS(50)
POSTMESSAGE ($_hwnd, 0x0101, 0x11, 0)     //отпустил Ctrl
WAITMS(50)

Cyc

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Re: Привязанное окно
« Reply #4 on: January 11, 2015, 11:16:27 PM »
В оконном режиме может сработать использование функции POSTMESSAGE

Code: (clickermann) [Select]
POSTMESSAGE ($_hwnd, 0x0100, 0x11, 0)    //нажал Ctrl
WAITMS(50)
POSTMESSAGE ($_hwnd, 0x0100, 0x43, 0)    //нажал C
WAITMS(50)
POSTMESSAGE ($_hwnd, 0x0101, 0x43, 0)     //отпустил C
WAITMS(50)
POSTMESSAGE ($_hwnd, 0x0101, 0x11, 0)     //отпустил Ctrl
WAITMS(50)
SENDMESSAGE / POSTMESSAGE (hwnd, message, wParam, lParam) - посылает окну системное сообщение
Я походу твердолобый не могу понять. Что в данном случае 0х0100, 0х43 и для чего нам 0 в конце. В интсрукции не 4.10 не чего толком не описано про этот postmessage, а в 4.11 который я использую у меня вообще нету (.
$_2244 ну окно как бы, а дальше что цифры обозначают?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Привязанное окно
« Reply #5 on: January 12, 2015, 06:51:55 AM »
Вот тебе более понятный пример с использованием переменных

Code: (clickermann) [Select]
$HWND = $_hwnd // записываем текущий HWND
$KEYDOWN = 0x0100  //WM_KEYDOWN message
$KEYUP = 0x0101  //WM_KEYUP message
$w = 0x57   // 16-ный код клавиши W
 
POSTMESSAGE ($HWND, $KEYDOWN, $w, 0)    //нажал
WAIT(1)
POSTMESSAGE ($HWND, $KEYUP, $w, 0)     //отпустил
WAIT(1)

HALT

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Привязанное окно
« Reply #6 on: January 12, 2015, 03:37:56 PM »
Вот тебе более понятный пример с использованием переменных

Code: (clickermann) [Select]
$HWND = $_hwnd // записываем текущий HWND
$KEYDOWN = 0x0100  //WM_KEYDOWN message
$KEYUP = 0x0101  //WM_KEYUP message
$w = 0x57   // 16-ный код клавиши W
 
POSTMESSAGE ($HWND, $KEYDOWN, $w, 0)    //нажал
WAIT(1)
POSTMESSAGE ($HWND, $KEYUP, $w, 0)     //отпустил
WAIT(1)

HALT

Который раз пытаюсь заставить нормально работать POSTMESSAGE. И который раз нет окончательного ответа.
В подобном примере у меня не работает. Точнее происходит два нажатия.
Я так понял с Iparam нужно "поработать", для $KEYUP 1,30 и 31 бит должны быть включены.
Получается 0xC0000001,  но при этом значении POSTMESSAGE выдаёт ошибку интерпритации. Если на символ короче-всё нормально. Может там не докрутили чего?
И уже надцатый раз рою сеть на предмет Shift+, Ctrl+ в POSTMESSAGE. Все пробованные варианты не работают.
Давайте новую тему создадим и добъём, а?
« Last Edit: January 13, 2015, 08:29:22 AM by Vint »


dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Привязанное окно
« Reply #7 on: January 12, 2015, 10:30:45 PM »
Который раз пытаюсь заставить нормально работать POSTMESSAGE. И который раз нет окончательного ответа.
В подобном примере у меня не работает. Точнее происходит два нажатия.
Я так понял с Iparam нужно "поработать", для $KEYUP 1,30 и 31 бит должны быть включены.
Получается 0xC0010001,  но при этом значении POSTMESSAGE выдаёт ошибку интерпритации. Если на символ короче-всё нормально. Может там не докрутили чего?
И уже надцатый раз рою сеть на предмет Shift+, Ctrl+ в POSTMESSAGE. Все пробованные варианты не работают.
Давайте новую тему создадим и добъём, а?

поддерживаю, создавал тему когдато http://crapware.aidf.org/forum/index.php?topic=1124.0 . некто ничего пояснить несмог. таже проблема с Shift+, Ctrl+ . я уже искал может есть команда какая - копировать, вставить,...  перебрал кучу вариантов, ничего не вышло. опять же повторюсь, что в игре, например мта-са, нажатия и отпускания кнопок происходит правильно, сказал нажать - нажмет, и не отпустит пока не скажу. в остальных случаях нажатия происходят и на кейдаун и на кейап(например блокнот). неможет такого быть, чтоб никто неразбирался в этих  message, wParam, lParam. возможно, если создать тему (и привязать ее), то найдутся знатоки, которые подробно опишут всё. неужели никому неинтересно?! возможно с помощю POSTMESSAGE можно зделать кучу всякого интересного.


хочу добавить, что в км в POSTMESSAGE в wParam можно писать код клавиши в виде константы, напр #ENTER, #w, #1. и команда понимат их.

Code: (clickermann) [Select]
POSTMESSAGE ($_hwnd, 0x0100, #w, 0)    //нажал
WAIT(1)
POSTMESSAGE ($_hwnd, 0x0101, #w, 0)     //отпустил
WAIT(1)
HALT
« Last Edit: January 12, 2015, 10:41:25 PM by dramster »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Привязанное окно
« Reply #8 on: January 13, 2015, 07:24:10 AM »
На счет вставить вот

Code: (clickermann) [Select]
// Вариант 1 (работает не всегда)
TOCLIP ("Тест") // текст в буфер
SENDMESSAGE ($_hwnd, 0x0302, 0, 0) // вставить
halt

// Вариант 2 (через временное отключения оконного режима)
TOCLIP ("Тест")
WAITMS (50)

$hwnd = $_hwnd
HSET ($hwnd,0)
KEYDOWN (#CTRL)
HSET ($hwnd,1)
WAITMS (20)
KEYPRESS (#V)
HSET ($hwnd,0)
KEYUP (#CTRL)
HSET ($hwnd,1)
halt

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Привязанное окно
« Reply #9 on: January 13, 2015, 08:38:07 AM »
Ну вставить через WM_PASTE = 0x0302 я давно нашёл. Ctrl не только для этого нужен. А Shift так нужен позарез.
В блокнот правда удаётся послать в верхнем регистре через CHAR

Code: (clickermann) [Select]
$CHAR = 0x0102 // WM_CHAR
$h = 0x48
POSTMESSAGE ($HWND, $CHAR , $h, 0)

А через $KEYDOWN - в нижнем. Но тоже это как-то не по людски. А вот с принятием Iparam для KEYUP точно какой-то косяк.


dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Привязанное окно
« Reply #10 on: October 15, 2015, 10:38:07 AM »
когда писал коды символов для A_KEYSTRING , использовал вот такую штуку
Code: (clickermann) [Select]
//wm -102

//wp
//3 - copy
//22 - paste
//24 - cut
//26 - отмена ctrl+z

$hwnd = 1383338 //hwnd текст.поля, блокнота

wait(1)
FOR($a=1,$a<256)
//   KEYSTRING($a)
//   KEYPRESS(#enter)
//   waitms(100)
   
   postmessage($hwnd,0x0102,$a,0)
   waitms(100)
//   KEYPRESS(#enter)
END_CYC
halt
что мы видим в блокноте:
Code: [Select]
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿи мы видим что с помощью CHAR, отправляются символы как  латинские, так и не очень (не совсем понимаю эти все кодировки), как в верхнем так и в нижнем регистре.
но, самое главное, что wparam от 1 до 33 отправляет блокноту всяческие команды. было обноружено следующее:
//wparam
//3 - copy
//22 - paste
//24 - cut
//26 - отмена ctrl+z
жаль конечно, что это работает только в блокноте  :D