Author Topic: getscreen не видит контекстное меню  (Read 2192 times)

0 Members and 1 Guest are viewing this topic.

Annihilant

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
getscreen не видит контекстное меню
« on: August 09, 2016, 01:26:31 PM »
Всем привет!
Следующая проблема, скрипт находит иконку и щелкает на ней правой кнопкой, открывается контекстное меню, он снова смотрит на экран, что бы найти пункт в меню, но меню это не видит хотя оно открылось. Возникает это при выборе простой или классической темы в Windows 7, а при теме AERO, все нормально, но комп и без того нагружен и мне хочется ее отключить. простой принтскрин все видит, что то я не понимаю в чем фишка.
Code: [Select]
wait (3)
log ("ищем иконку")
getscreen ()
scanpicture ($koor,50,980,1023,1023,"1.bmp",-1,80)
if (arrsize($koor) > 0)
wait (1)
log ("нашли")
$y=arrpop($koor)
$x=arrpop($koor)
log (STRCONCAT ("x=", $x," y=", $y))
log ("открываем контекстное меню")
wait (1)
rclick ($x+15,$y+15) //открываем контекстное меню
else
log ("не нашли")
goto (begin)
end_if
wait (4)
log ("ищем пункт в меню")
getscreen ()
wait (2)
screenshot ("глядим")
scanpicture ($koor,2,700,250,800,"2.bmp",-1,75)
if (arrsize($koor) > 0)
wait (1)
log ("нашли")
waitms (200)
$y=arrpop($koor)
$x=arrpop($koor)
log (STRCONCAT ("x=", $x," y=", $y))
waitms (200)
log ("выбираем пункт меню")
waitms (500)
move ($x+20,$y+5)
wait (2)
lclick ($x+20,$y+5) //выбираем пункт меню
else
log ("не нашли")
goto (begin)
end_if

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: getscreen не видит контекстное меню
« Reply #1 on: August 09, 2016, 02:13:36 PM »
Для начала исправим ошибки. И нечего придумывать свои команды они все равно работать не будут

Code: (clickermann) [Select]
LOGWRITE ("ищем иконку")

GETSCREEN
IF_PICTURE_IN (50,980,1023,1023,"1.bmp",-1,80)
   RCLICK($_return1+15, $_return2+15) //открываем контекстное меню
   WAITMS(500)
   LOGWRITE ("нашли")
   LOGWRITE ("x=", $x," y=", $y)
   LOGWRITE ("открываем контекстное меню")
   
   LOGWRITE ("ищем пункт в меню")
   
   GETSCREEN
   SCREENSHOT("глядим")
   IF_PICTURE_IN (2,700,250,800,"2.bmp",-1,75)
      MOVE($_return1+20, $_return2+5)
      WAITMS(100)
      LCLICK($_return1+20, $_return2+5) // выбираем пункт меню
      WAITMS(500)
     
      LOGWRITE ("нашли")
      LOGWRITE ("x=", $x," y=", $y)
      LOGWRITE ("выбираем пункт меню")
     
      HALT // стоп
     
   ELSE
      LOGWRITE ("не нашли 2.bmp")
   END_IF
ELSE
   LOGWRITE ("не нашли 1.bmp")
END_IF
WAITMS(500)

Annihilant

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: getscreen не видит контекстное меню
« Reply #2 on: August 09, 2016, 02:39:54 PM »
мой код работает, выложил просто для ознакомления.
пишу лог в файл
Code: [Select]
SUB(LOG,$note) // подпрограмма лога с датой
//укорачиваем переменные
   $th = $_time_h
   $tm = $_time_m
   $ts = $_time_s
   $dd = $_date_d
   $dm = $_date_m
   $dy = $_date_y
//проверяем переменные на двузначность
   IF(STRLEN($th)<2)
      $th = STRCONCAT ("0", $th)
   END_IF
   IF(STRLEN($tm)<2)
      $tm = STRCONCAT ("0", $tm)
   END_IF
   IF(STRLEN($ts)<2)
      $ts = STRCONCAT ("0", $ts)
   END_IF
   IF(STRLEN($dd)<2)
      $dd = STRCONCAT ("0", $dd)
   END_IF
   IF(STRLEN($dm)<2)
      $dm = STRCONCAT ("0", $dm)
   END_IF
   IF(STRLEN($dy)<2)
      $dy = STRCONCAT ("0", $dy)
   END_IF
   TFWRITE("otchet.txt", STRCONCAT($dd,".",$dm,".",$dy," ",$th,":",$tm,":",$ts, " ", $note)) // запись в файл
END_SUB
logwrite мне не подходит.

Проблема в том что когда срабатывает команда getscreen фоткается только рабочий стол, а открытое контекстное меню отсутствует на снимке.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: getscreen не видит контекстное меню
« Reply #3 on: August 09, 2016, 04:40:47 PM »
Ну так ты и показывай весь скрипт. Мало ли что там напишут. Поверь, отсебятину частенько сунут.

...Возникает это при выборе простой или классической темы в Windows 7, а при теме AERO, все нормально...

Ну так сюда и копай.

Предложу варианты:
1. Без AERO нужный пункт меню на 1 месте и его закрывает курсор... ну х.з.
2. Без AERO начинают работать другие параметры прозрачности в системе. Не знаю у себя не крутил давно. Хотя с прозрачностями у людей как раз с AERO начинаются проблемы.
3. Ты сделал скрин контекстного меню в AERO при полупрозрачном окне меню. Т.к. меню на одном фоне(?) то ищет нормально. Без AERO, естественно, меню выглядит по другому.
4. То же, что и п.3 но со шрифтами. Разные темы-разные шрифты.


Annihilant

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: getscreen не видит контекстное меню
« Reply #4 on: August 09, 2016, 05:11:34 PM »
сразу после getscreen пишу команду сохранить скриншот, что бы увидеть что не так, а там тупо нет контекстного меню, хотя в этот момент оно точно открыто, как буд есть несколько слоев и прога фоткает самый нижний.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: getscreen не видит контекстное меню
« Reply #5 on: August 09, 2016, 05:20:24 PM »
Ты случаем не привязался к рабочему столу?