Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)

Модерирует : gyra, Maz

gyra (23-01-2020 10:51): AutoIT (Часть 4)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя эмуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши, управление окнами и их визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
  • Справки
  • Инструменты
  • Ресурсы, посвящённые AutoIt
  • Полезные советы новичкам и не только
  • Готовые решения
  • Скрипт раскраски кода AutoIt для публикации в форумах
     


     
    За шапкой следит ViSiToR / AZJIO  

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 13:07 01-06-2010 | Исправлено: Maz, 12:29 10-01-2020
    MaxPowers

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Написал в ЛС и на почту. Ответьте пожалуйста

    Всего записей: 12 | Зарегистр. 10-03-2009 | Отправлено: 18:35 22-02-2014
    MaxPowers

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ищу !оплачиваемого! добровольца для написания небольшого макроса в AutoIT. Пишите в ЛС.

    Всего записей: 12 | Зарегистр. 10-03-2009 | Отправлено: 20:40 23-02-2014
    Fanat Andrew



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Всем доброго времени суток!
     
    Каким образом можно отключить контекстное меню скрипта AutoIt, а что бы при его нажатии в трее появлялось обыкновенное окно GUI c управляющими элементами.
    Заранее спасибо.

    Всего записей: 84 | Зарегистр. 14-03-2006 | Отправлено: 01:28 25-02-2014
    SlavaS



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Каким образом можно отключить контекстное меню скрипта AutoIt, а что бы при его нажатии в трее появлялось обыкновенное окно GUI c управляющими элементами.  

    копипаст из справки

    Код:
    #include <Constants.au3>
    #NoTrayIcon
     
    Opt("TrayMenuMode", 1 + 2) ; Не отображать в трее пункты меню по умолчанию (Script Paused/Exit) и не отмечать галочками при выборе.
     
    $iOSVersion = TrayCreateItem("Информация OS")
    $iAbout = TrayCreateItem("О программе")
    TrayCreateItem("")
    $iExit = TrayCreateItem("Выход")
     
    TraySetState(1) ; Показывает меню трея
     
    While 1
        Switch TrayGetMsg()
            Case $iOSVersion
                MsgBox(64, "Информация OS:", "OS:" & @OSVersion)
     
            Case $iAbout
                MsgBox(4096, "", "Пример меню в трее." & @CRLF & @CRLF & _
                        "Версия AutoIt: " & @AutoItVersion & @CRLF & _
                        "Путь установки: " & StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", 0, -1) - 1))
     
            Case $iExit ; Выход
                ExitLoop
        EndSwitch
    WEnd

    Всего записей: 45 | Зарегистр. 16-01-2006 | Отправлено: 11:57 25-02-2014 | Исправлено: SlavaS, 11:58 25-02-2014
    Fanat Andrew



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Вроде что-то похоже. Будем пробовать. Спасибо.

    Всего записей: 84 | Зарегистр. 14-03-2006 | Отправлено: 19:27 25-02-2014
    Fanat Andrew



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Каким образом можно заблокировать окно IE от внешних воздействий (кликания не в те точки, случайное закрытие) пока скрипт выполнят с ним какие либо действия (заполнение формы, посыл данных и т.д.). Всё это в цикле. Он бесконечен.
     
    Можно ли скрыть окно IE вообще или показать обратно?
     

    Всего записей: 84 | Зарегистр. 14-03-2006 | Отправлено: 17:47 26-02-2014
    SlavaS



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Можно ли скрыть окно IE вообще или показать обратно?  


    Код:
    _IEAction($oIE, "disable") - Сделать указанный элемент не доступным.
    _IEAction($oIE, "enable") - Сделать указанный элемент доступным.
    _IEAction($oIE, "invisible") - Устанавливает скрытое состояние объекта.
    _IEAction($oIE, "visible") - Устанавливает состояние объекта видимым.


    Всего записей: 45 | Зарегистр. 16-01-2006 | Отправлено: 06:43 27-02-2014
    RVM_aka_Vasil

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно как-то реализовать выполнение HotKeySet только в конкретном приложении (т.е. когда окно этого приложения активно)? При этом назначенная гор. клавиша при неактивном окне данного приложения должна работать как если бы скрипт не был запущен. Вот кусок кода:
     
    AutoItSetOption ("TrayAutoPause", 0)  
    HotKeySet ("{F3}", "_emulate2")
     
    While 1
        Sleep (100)  
    WEnd
     
    Func _emulate2()
        $hWin = WinActive ("[CLASS:TfSpu_main]")
        Sleep (400)
        If  $hWin Then ; если окно активно
    WinActivate ( "[CLASS:TfSpu_main]",""  )
    ControlClick ( "[CLASS:TfSpu_main]",  "", "[CLASSNN:TRzSpinEdit3]")  
    Sleep(20)
    Send ("{TAB 3}" )
    Send ("{RIGHT 2}" )
    MouseClick("left", 648, 380, 1, 5)
    Send ("{LEFT}")  
        EndIf
    EndFunc
     
    Сейчас у меня при неактивном окне приложения F3 просто не работает.  

    Всего записей: 166 | Зарегистр. 16-11-2006 | Отправлено: 19:04 02-03-2014
    Ivan_Strelec



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RVM_aka_Vasil
     
    Если не ошибаюсь, то вставь в свой код  
     

    Код:
     
    If Winactive(....) Then
    .........
    Else  
        Send ("{F3}")
    EndIF
     

     
    И таким образом передашь это нажатие другому окну.

    Всего записей: 110 | Зарегистр. 06-07-2006 | Отправлено: 16:27 03-03-2014 | Исправлено: Ivan_Strelec, 16:32 03-03-2014
    RVM_aka_Vasil

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ivan_Strelec
    Извини, а можно подробнее применительно к приведенному мной куску кода - что именно из твоего кода и куда вставить? Я пробовал по-разному, не получается.

    Всего записей: 166 | Зарегистр. 16-11-2006 | Отправлено: 18:05 03-03-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RVM_aka_Vasil
    Цитата:
    Можно как-то реализовать выполнение HotKeySet только в конкретном приложении (т.е. когда окно этого приложения активно)?
    HotKey - Установка горячих клавиш

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 17:00 04-03-2014
    RVM_aka_Vasil

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Судя по всему то, что нужно. Но у меня почему-то ошибка даже на примерах с той страницы получается. Вот тут
    http://firepic.org/?v=2.2014-03-04_251dbzcxja1b.jpg
    скрин ошибки скрипта (из Примера 1)

    Всего записей: 166 | Зарегистр. 16-11-2006 | Отправлено: 20:22 04-03-2014 | Исправлено: RVM_aka_Vasil, 20:25 04-03-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RVM_aka_Vasil

    Цитата:
    Но у меня почему-то ошибка даже на примерах с той страницы получается
    Код, в котором ошибка выскакивает, покажите.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 20:28 04-03-2014 | Исправлено: madmasles, 06:55 05-03-2014
    RVM_aka_Vasil

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Код

    Цитата:
     #Include <HotKey.au3>
     
    Global Const $VK_ESCAPE = 0x1B
    Global Const $VK_F12 = 0x7B
     
    ; Assign "F12" with Message() and set extended function call
    _HotKeyAssign($VK_F12, 'Message', BitOR($HK_FLAG_DEFAULT, $HK_FLAG_EXTENDEDCALL))
     
    ; Assign "CTRL-ESC" with Quit()
    _HotKeyAssign(BitOR($CK_CONTROL, $VK_ESCAPE), 'Quit')
     
    While 1
        Sleep(10)
    WEnd
     
    Func Message($iKey)
        MsgBox(0, 'Hot key Test Message', 'F12 (0x' & Hex($iKey, 4) & ') has been pressed!')
    EndFunc   ;==>Message
     
    Func Quit()
        Exit
    EndFunc   ;==>Quit
     

     

    Всего записей: 166 | Зарегистр. 16-11-2006 | Отправлено: 09:13 05-03-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RVM_aka_Vasil,
    А у Вас лежит файл HotKey.au3 в папке ...\AutoIt3\Include\ или рядом со скриптом?

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 10:26 05-03-2014
    RVM_aka_Vasil

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Да, лежит. Я и со скриптом на всякий случай положил. HotKey v1.8, качал отсюда http://www.autoitscript.com/forum/topic/90492-hotkey-udf/
    Может быть в версии Autoit проблема? У меня Autoit ver. 3.3.10.2. Система Win 7, 64 бит.

    Всего записей: 166 | Зарегистр. 16-11-2006 | Отправлено: 10:46 05-03-2014 | Исправлено: RVM_aka_Vasil, 10:47 05-03-2014
    Ivan_Strelec



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RVM_aka_Vasil
    У меня отлично работал следующий вариант

    Код:
     
    Global $T
     
    $T = "БЛА-БЛА" ; Заголовок нашего окна, в котором делать перехват F5
    HotKeySet("{F5}", "captureF5")
     
    .......................
     
    Func captureF5()
     
        If Not WinActive($T, "") Then ; Вариант, когда активно окно другого приложения
            HotKeySet("{F5}") ; Передадим нажатие ему
            Send("{F5}")
            HotKeySet("{F5}", "captureF5")
            Return
        EndIf
     
    ....................  ; Здесь действия, которые мы делаем по перехвату F5
     
    EndFunc   ;==> End Funk captureF5
     


    Всего записей: 110 | Зарегистр. 06-07-2006 | Отправлено: 10:50 05-03-2014 | Исправлено: Ivan_Strelec, 10:51 05-03-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RVM_aka_Vasil,
    Поменяйте в своем коде _HotKeyAssign на _HotKey_Assign

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 11:12 05-03-2014 | Исправлено: madmasles, 11:13 05-03-2014
    RVM_aka_Vasil

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Поменял, теперь пример заработал. Но что-то никак не соображу, как _HotKey_Assign в моем скрипте реализовать. Вот как у меня с HotKeySet скрипт выглядит:

    Код:
    AutoItSetOption ("TrayAutoPause", 0)
     HotKeySet ("{F3}", "_emulate2")
     
     While 1
         Sleep (100)
     WEnd
     
     Func _emulate2()
         $hWin = WinActive ("[CLASS:TfSpu_main]")
         Sleep (400)
         If  $hWin Then ; если окно активно
     WinActivate ( "[CLASS:TfSpu_main]",""  )
     ControlClick ( "[CLASS:TfSpu_main]",  "", "[CLASSNN:TRzSpinEdit3]")
     Sleep(20)
     Send ("{TAB 3}" )
     Send ("{RIGHT 2}" )
     MouseClick("left", 648, 380, 1, 5)
     Send ("{LEFT}")
         EndIf
     EndFunc

     
    Как его переписать для реализации через HotKey.au3 и чтобы F3 также работал в других приложениях? Подскажите, плиз.

    Всего записей: 166 | Зарегистр. 16-11-2006 | Отправлено: 10:11 06-03-2014
    Ivan_Strelec



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RVM_aka_Vasil

    Цитата:
    чтобы F3 также работал в других приложениях?

    Посмотри мой пост чуть выше.
    В нём как раз и реализован вариант передачи клавиши в другое приложение. (captureF5())

    Всего записей: 110 | Зарегистр. 06-07-2006 | Отправлено: 10:53 06-03-2014
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)
    gyra (23-01-2020 10:51): AutoIT (Часть 4)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru