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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    AZJIO



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

    Код:
    ControlCommand("BandiCam v2.1.3.757", "", "Edit1", "EditPaste", 'Это пример вставки текста')

    Всего записей: 4172 | Зарегистр. 03-05-2006 | Отправлено: 10:24 06-04-2015
    Habib2302



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

    Код:
    Run("gk.exe")
    ControlCommand("BandiCam v2.1.3.757", "", "Edit1", "EditPaste", "Это пример вставки текста")
    Sleep(2000)
    Send("{TAB}{ENTER}")
    Sleep(2000)
    Send("{ENTER}")
    WinClose("Bandicam v2.1.3.757")

    Всего записей: 488 | Зарегистр. 09-05-2012 | Отправлено: 11:21 06-04-2015 | Исправлено: Habib2302, 11:37 06-04-2015
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Habib2302
    ControlCommand работает мгновенно после Run, окно может ненарисоваться, как ControlCommand уже отправит текст в пустоту. Смотри пример в ControlCommand или WinWait, чтобы дождаться окно.

    Всего записей: 4172 | Зарегистр. 03-05-2006 | Отправлено: 17:17 08-04-2015
    jekov



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

    Всего записей: 1222 | Зарегистр. 11-09-2005 | Отправлено: 08:04 11-04-2015 | Исправлено: jekov, 14:46 13-04-2015
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Товарищи, подскажите пожалуйста, как правильнее организовать функцию запрета запуска скрипта с системного диска?

    Всего записей: 657 | Зарегистр. 19-02-2008 | Отправлено: 11:06 14-04-2015
    thejustsoul



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Artem_Butenko
    В качестве бреда, самый просто вариант, проверить (в самом начале скрипта) на наличие папок Windows, Program Files и если есть - сообщение и выход.

    Всего записей: 1782 | Зарегистр. 30-03-2014 | Отправлено: 13:09 14-04-2015
    ynbIpb



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

    Код:
    $sSystemDrive = StringLeft (@WindowsDir, 2)
    $sScriptDrive = StringLeft (@ScriptDir, 2)
    ;MsgBox (0, "", "Системный диск: "&$sSystemDrive&@CRLF&"Диск скрипта: "&$sScriptDrive)
    If $sSystemDrive = $sScriptDrive Then
       MsgBox (0, "", "Нельзя!")
       Exit
    EndIf
    MsgBox (0, "", "Всё хорошо!")

    Всего записей: 1616 | Зарегистр. 01-05-2006 | Отправлено: 13:25 14-04-2015
    koordinator77



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Добрый день!
    Подскажите, что-то уже 2-й день читаю всякое-разное..
     
    Есть вот такое окно настроек автокада - http://funkyimg.com/i/VZz8.jpg
     
    Как мне "перескочить" на вкладку "Профили", при том что:  
    Send("^{LCTRL} ^+{TAB}") - работает "вкруговую", т.е. после "Профили" перескочит обратно на "Файлы", а посылать кнопку ( Send("{RIGHT}") ) вправо  не получится если не активны вкладки (т.е. курсор допустим стоит как на скриншоте).  
    Думаю, надо считывать AutoIt Windows Info (что и делал), но классы, хэндлы, инстансы и вдругих вкладках похожие...  
     
    Спасибо заранее.
     
     

    Всего записей: 4 | Зарегистр. 14-03-2011 | Отправлено: 15:38 17-04-2015
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    koordinator77,
    Смотрите в справке ControlCommand() или раздел GuiTab Management.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 16:54 17-04-2015
    AZJIO



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

    Код:
    $hWnd = WinWait("Параметры", "", 5)
    If Not $hWnd Then
        MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
        Exit
    EndIf
     
    $hControl = ControlGetHandle($hWnd, "", '[CLASS:SysTabControl32;INSTANCE:1]') ; Получаем дескриптор вкладки
    If Not $hControl Then Exit MsgBox(4096, 'Сообщение', 'Элемент Вкладки не найден, завершаем работу скрипта')
    $Tab = ControlCommand($hWnd, "", $hControl, "CurrentTab") ; Получаем номер вкладки (от этого зависит сколько сдвигать)
    ControlCommand($hWnd, "", $hControl, "TabRight") ; Активируем вкладку справа (повтоить 9 раз)
    ControlCommand($hWnd, "", $hControl, "TabLeft") ; Активируем вкладку слева

     
    Вариант с UDF

    Код:
    #include <GuiTab.au3>
    $hTab = ControlGetHandle($hWnd, "", '[CLASS:SysTabControl32;INSTANCE:1]') ; Получаем дескриптор вкладки
    _GUICtrlTab_ActivateTab($hTab, 9) ; Активирует вкладку по индексу
    _GUICtrlTab_SetCurSel($hTab, 1) ; Выбирает вкладку

    Всего записей: 4172 | Зарегистр. 03-05-2006 | Отправлено: 23:01 18-04-2015 | Исправлено: AZJIO, 23:07 18-04-2015
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    koordinator77,
    Есть разница в индексах: ControlCommand - начинается с 1, _GUICtrlTab_* - с 0.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 12:09 19-04-2015
    koordinator77



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    madmasles
    AZJIO
     
    оу, спасибо,  ребята!
    Завтра попробую, вроде ещё раз пять перечитал справку про ControlCommand, вроде начал въезжать... хотя и до этого читал...
     
    Мне надо в принципе  так:
    "Если вкладка не "Профили", то переключаемся дальше на 1 вкладку вправо, если "Профили" -- то прекращаем передвигать и далее по скрипту..
    Но суть в принципе ясна, будем пробовать\думать (дальше ComboBox-ы о_О ), спасибо ещё раз!
     
     

    Всего записей: 4 | Зарегистр. 14-03-2011 | Отправлено: 20:38 19-04-2015 | Исправлено: koordinator77, 23:05 19-04-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    comrades, начну издалека: Total Commander умеет сохранять список открытых вкладок в файл (*.tab) и по две команды в меню ПКМ вкладки и для панели инструментов; делать меню для всех как-то неудобно - место, вдруг что-то удалю/переименую.
    Решил сделать скрипт, вымучил всё-таки
    Подскажите, пожалуйста, что можно сделать лучше?

    Всего записей: 6188 | Зарегистр. 28-01-2008 | Отправлено: 02:34 25-04-2015 | Исправлено: Skif_off, 01:31 27-04-2015
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off,
    С ListView я бы примерно так сделал Подробнее...
     
    Еще у Вас нет проверки возврата ошибки из функции _FileListToArray(). Если в папке нет файлов .tab или что-то не сработало, Ваш скрипт вылетит с ошибкой.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 09:50 26-04-2015 | Исправлено: madmasles, 15:16 26-04-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Красиво, спасибо Скрипт делался не сразу, двойной клик и Enter прикручивались долго и с трудом А у меня флаг $LVS_EX_GRIDLINES не заработал почему-то, пришлось забить...

    Цитата:
    Еще у Вас нет проверки возврата ошибки из функции _FileListToArray()

    Тут исходил из простой логики - если скрипт запускается, значит файлы есть. Да, надо прикрутить всё-таки, обычно проверки прикручиваю.
     
    В чём преимущество _GUICtrlListView_AddItem() перед GUICtrlCreateListViewItem()?
    Жаль _GUICtrlListView_GetItemText() проглядел, удобнее получается
     
    Добавлено:
    Заодно убираю _HGetScriptProcHandle(), GUI же есть.

    Всего записей: 6188 | Зарегистр. 28-01-2008 | Отправлено: 18:46 26-04-2015 | Исправлено: Skif_off, 19:24 26-04-2015
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Цитата:
    В чём преимущество _GUICtrlListView_AddItem() перед GUICtrlCreateListViewItem()?
    Мне удобнее использовать функции из UDF, привык уже, ИМХО, нативная функция менее гибка.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 19:43 26-04-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Исправил в сообщении, взгляните, пожалуйста, в цикле опроса проверка состояния $idChBx2 и $idChBx - можно так оставить или есть более элегантное решение?
    Пробовал

    Код:
    If GUICtrlSendMsg($idChBx, $BM_GETCHECK, 0, 0) Then GUICtrlSetState($idChBx2, $GUI_DISABLE)

    но начинает мигать. Только если AdlibRegister() прикручивать?

    Всего записей: 6188 | Зарегистр. 28-01-2008 | Отправлено: 21:23 26-04-2015
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Цитата:
    есть более элегантное решение?
    ИМХО, можно через $WM_COMMAND обрабатывать. Посмотрите пример к функции _GUICtrlButton_Create(). Или триггер состояния для $idChBx2 задать. ИМХО, так проще всего: Подробнее...

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 21:34 26-04-2015 | Исправлено: madmasles, 22:29 26-04-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Большое спасибо $WM_COMMAND - дело не простое, решил сделать паузу, а тут обновил страницу и... Не знал, что $idChBx можно так использовать использовать
     
    Добавлено:
    Сделал так для обоих чекбоксов и упростил проверку после _Tabs_Open_Append()
     
    Добавлено:
    Чтение пункта всё-таки сделаю по старому, ибо ппц - GUIListView.au3 чуть ли не целиком подтягивается, в всего-то нужно прочитать пункт. Маленький скрипт - простое решение

    Всего записей: 6188 | Зарегистр. 28-01-2008 | Отправлено: 23:30 26-04-2015 | Исправлено: Skif_off, 01:22 27-04-2015
    madmasles

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

    Цитата:
    Чтение пункта всё-таки сделаю по старому, ибо ппц - GUIListView.au3 чуть ли не целиком подтягивается
    Я почти всегда переписываю функции из UDF под конкретные задачи.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 06:25 27-04-2015
       

    Страницы: 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.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru