Что нового

[Мышь, клавиатура] Использование WinSetState в коде на кнопки

Akaboshi

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

Описание:WinSetState

Нашел функцию WinSetState с семью как я понял используемыми ей макросами
ну это как я понял, я конечно только пару часов знаком с AutoIt вообще и много совсем не понимаю
но на первый взгляд так.

И сколько бы я ни смотрел, ни проверял
Никак не могу прикрутить WinSetState с маркросами @SW_HIDE и @SW_SHOW к кнопкам,
Да еще и так, что бы работало в Скрипте полученном от пользователя inx,
его код рабочий, за что ему ещё одно отдельное спасибо.

Сам код в который хочу вставить сворачивание окна в трей:
Код:
Global $KeyDownDelay = Random (30, 80) ; случайное значение от 30 до 80 миллисекунд (удерживание клавиши в нажатом положении)
Opt("SendKeyDownDelay", $KeyDownDelay) ; удерживание клавиши в нажатом положении $KeyDownDelay миллисекунд
Global $gameclient = "World of Warcraft" ; Имя нужного окна
Global $play = WinExists($gameclient)
Global $paused
Global $time_between_01 = Random (2300, 2400) ; Сколько миллисекунд ждать между нажатиями 4 и 1 кнопок
Global $time_between_02 = Random (2100, 3000) ; Сколько миллисекунд ждать между нажатиями 1 и 2 кнопок
Global $time_between_03 = Random (3000, 3800) ; Сколько миллисекунд ждать между нажатиями 2 и 3 кнопок
Global $time_between_04 = Random (1800, 3200) ; Сколько миллисекунд ждать между нажатиями 3 и 4 кнопок
; Нажимаемые кнопки
Global $Button01 = "1" ; Кнопка 1
Global $Button02 = "2" ; Кнопка 2
Global $Button03 = "3" ; Кнопка 3
Global $Button04 = "4" ; Кнопка 4
; Горячие клавиши
HotKeySet("{F8}", "Quit") ; Хоткей для выхода из скрипта
HotKeySet("{F5}", "Pause") ; Хоткей для паузы

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 Quit()
   $exit = MsgBox(4, "Выход", "Выйти?")
If $exit = 6 Then
Exit
EndIf
EndFunc


Просто думаю стоит сделать не просто сворачивание в трей по клику,
а сворачивание и разворачивание по нажатию разных клавиш.

Примечания: WinSetState
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Akaboshi
Код:
WinSetState ;к кнопкам

:rofl:
Ну вы насмешили, этой функцией нельзя управлять кнопкой (Даже функция имеет название Window - окно)
Можно использовать функцию
Код:
ControlShow
ControlHide



Добавлено:
Сообщение автоматически объединено:

Akaboshi
OffTopic:
Как я понимаю вы хотите "поиграть" с окном 3D(или какая там графика у Warcraft), у вас это наверное не получиться из-за того что там нет элементов управления за которые AutoIt мог бы "ухватиться"(ботоводы форума смогут вам объяснить)
 
Автор
A

Akaboshi

Новичок
Сообщения
11
Репутация
0
MnM
Может я и насмешил, но я вроде как указал что еще не знаю что к чему..

про ваш OffTopic,
как с этим AutoIt может не справиться, если у меня в окне уже бегает бот который просто нажимает
на кнопки 1,2,3,4 на которых стоят макросы самой игры, он садится на питомца, следует за первым
попавшимся союзником, бьет пока не убьет или не умрет сам, и регистрируется на поле боя..
и все это 4 кнопки..
А если вы сугубо про то что бы прятать окно игры в трее,
блин с этим первая же попавшаяся программа для хайда окон справилась,
хотя она даже не предназначена именно для игр, о чем тут можно говорить?

Вот и сама программа WinHide
С ней правда не работает =(
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Akaboshi [?]
прикрутить WinSetState с маркросами @SW_HIDE и @SW_SHOW к кнопкам
Вероятно, вы имели в виду "к клавишам клавиатуры" ?
Код:
...
; Горячие клавиши
HotKeySet("{F8}", "Quit") ; Хоткей для выхода из скрипта
HotKeySet("{F5}", "Pause") ; Хоткей для паузы
HotKeySet("{F9}", "Hide") ; Хоткей для скрытия
HotKeySet("{F10}", "Show") ; Хоткей для отображения
...
Func Hide()
  WinSetState($gameclient, "", @SW_HIDE)
EndFunc

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


MnM [?]
этой функцией нельзя управлять кнопкой
Если вы про кнопки, которые "class:Button", то можно. Включаете опцию
Код:
Opt("WinSearchChildren", 1)
и все кнопки становятся окнами. В качестве заголовка можно использовать, например, текст кнопки.
 
Автор
A

Akaboshi

Новичок
Сообщения
11
Репутация
0
InnI большое спасибо, то что нужно=)
 
Верх