Что нового

[Мышь, клавиатура] Скрипт начинает работать за пределами нужного окна

Статус
Закрыто для дальнейших ответов.

Akaboshi

Новичок
Сообщения
11
Репутация
0
Версия AutoIt: 3.3.8.1

Описание:
Есть рабочий скрипт кликера кнопок 1,2,3,4
Код:
Global $KeyDownDelay =  50 ; удерживание клавиши в нажатом положении
Opt("SendKeyDownDelay", $KeyDownDelay) ; удерживание клавиши в нажатом положении $KeyDownDelay миллисекунд
Global $gameclient = "World of Warcraft" ; Имя нужного окна
Global $play = WinExists($gameclient)
Global $paused
Global $time_between_01 = 400 ; Сколько миллисекунд ждать между нажатиями 1 кнопки
Global $time_between_02 = 500 ; Сколько миллисекунд ждать между нажатиями 2 кнопки
Global $time_between_03 = 300 ; Сколько миллисекунд ждать между нажатиями 3 кнопки
Global $time_between_04 = 7000 ; Сколько миллисекунд ждать между нажатиями 4 кнопки
; Нажимаемые кнопки
Global $Button01 = "1" ; Кнопка 1
Global $Button02 = "2" ; Кнопка 2
Global $Button03 = "3" ; Кнопка 3
Global $Button04 = "4" ; Кнопка 4
Global $Button05 = "{TAB}" ; TAB для смены цели
; Горячие клавиши
HotKeySet("{F8}", "Quit") ; Хоткей для выхода из скрипта
HotKeySet("{F5}", "Pause") ; Хоткей для паузы
HotKeySet("{F6}", "Hide") ; Хоткей для скрытия
HotKeySet("{F7}", "Show") ; Хоткей для отображения

If $play = 0 Then
   MsgBox (16, "Ошибка", "World of Warcraft не запущен")
Else
   WinActivate($gameclient, "") ;
   While 1
      Pushing()
   WEnd
EndIf
Exit 0

	Func Pushing()
        Sleep ($time_between_01)
        ControlSend ( $gameclient, "", "", $Button01)
        Sleep ($time_between_02)
        ControlSend ( $gameclient, "", "", $Button02)
        Sleep ($time_between_03)
        ControlSend ( $gameclient, "", "", $Button03)
        Sleep ($time_between_04)
        ControlSend ( $gameclient, "", "", $Button04)
EndFunc

Func Pause()
    $paused = NOT $paused
    While $paused
        sleep(100)
        ToolTip("Пауза - Нажмите 'F5' для продолжения")
    WEnd
    ToolTip("")
EndFunc

Func Hide()
  WinSetState($gameclient, "", @SW_HIDE)
EndFunc

Func Show()
  WinSetState($gameclient, "", @SW_SHOW)
EndFunc

Func Quit()
   $exit = MsgBox(4, "Выход", "Выйти?")
If $exit = 6 Then
Exit
EndIf
EndFunc

Все работает прекрасно, он нажимает на нужные кнопки, с нужным интервалом
Прячет окно игры и т.д.
Но через некоторое время начинает работать за пределами окна в котором он должен работать.
А т.е. нажимает Shift и некоторые кнопки, которые в нём вообще не используются.
Это происходит у меня на домашней машинке с win 8 x64 =(
на других не проверял.
Кто знает что делать?
Может кто ни будь сталкивался с такой проблемой?

Примечания: нету
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
А после этого читаем правила раздела разработки ботов, иначе перемещаемся в блок.
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Мышь, клавиатура] Скрипт начинает работать за пределами нужного окна" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.
 

Booster

Новичок
Сообщения
48
Репутация
1
Ну в твоем ответе, смысловой нагрузки точно нет) ИМХО, Наблюдается проблема связки слов в структурированное предложение )
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Akaboshi [?]
Но через некоторое время начинает работать за пределами окна в котором он должен работать.
За пределами конкретно где? В другом окне?

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

[?]
Вы считаете что название темы не несет смысловую нагрузку?
По крайней мере не больше, чем сама постановка вашего вопроса. Ее попросту нет.

Выложите полный скрипт (по крайней мере те части, которые влияют на переменные в этой вырезке) и вам постараются помочь, незачем так остро реагировать на замечания, это ведь не наказания.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Akaboshi
А не пробовали нажимать на кнопки через ControlClick?
Код:
ControlClick
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Akaboshi
:rofl: хаха, скрипт фокусничает, лол. Заканчивайте уже с пьянкой после работы, и читайте предупреждение модератора, если не хотите закрытия темы.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Akaboshi
Чисто теоретически в зависимости от значения переменной $gameclient он вам может где угодно нажимать и что угодно ( в зависимости от Button0X ).
 
Автор
A

Akaboshi

Новичок
Сообщения
11
Репутация
0
firex
Извиняюсь за ошибочный пост до, о том, что это полный код скрипта
Уже исправил и теперь точно полный!

Все указанно
Код:
Global $gameclient = "World of Warcraft" ; Имя нужного окна
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Akaboshi
Даже не знаю каким образом он выбирается у вас к другим окнам, а уж и тем более жмет там Shift.

Единственное адекватное объяснение - те окна содержат ваш заголовок (скажем в начале), а Shift - особенность реакции окна. Глупее и не придумаешь, однако ничего в голову не приходит.
В момент "выхода к другим окнам" просмотрите список окон:
Код:
#Include <Array.au3>

$aWinList = WinList( "World of Warcraft" )
_ArrayDisplay( $aWinList )


А может это проблема в самой OC, кто его знает, с такими подробностями остается только гадать.
 
Автор
A

Akaboshi

Новичок
Сообщения
11
Репутация
0
firex
Вот именно этого я и остерегался
не особо заманчивая идея OC менять

Днем на работе проверю и отпишусь
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Мышь, клавиатура] Скрипт начинает работать за пределами нужного окна" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.









Последнее китайское
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Akaboshi
http://autoit-script.ru/index.php/topic,6125.0.html пункт 2.
В названии темы в квадратных скобках нужно указать название игры.

кто ни будь сталкивался с такой проблемой
http://autoit-script.ru/index.php?topic=15075.0
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
OffTopic:
InnI
Не знаешь случаем на чьей стороне случается проблема? Ибо лично я о подобной проблеме ControlSend'а и не слыхал. Может особенность билда системы?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Есть у меня подозрение что эта тема скоро закроется...
 
Автор
A

Akaboshi

Новичок
Сообщения
11
Репутация
0
Belfigor
давно пора закрыть тему =)

firex
скорее всего с операционной системой проблема,
на Win XP(SP3) работала нормально, проблем не вызывала целый день. Проверял на работе.
на Win 7, даже параметрами совместимости с XP и Vista ничего достичь не удалось,
проблема не решилась.
на Win 8 проблема решилась с параметрами совместимости с Win Vista!=)
как то так..
в общем проблема работы с самой OC.

InnI
Работает если параметры совместимости настроить.

alex33
давно пора
 
Статус
Закрыто для дальнейших ответов.
Верх