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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off -- можно же проверять количество параметров $CmdLine[0]. Не?

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 12:11 03-10-2013
    NIKZZZZ



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

    Цитата:
    как проверить существание параметра запуска скрипта?  

     

    Код:
    if $CmdLine[0] > 0 then ...

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:12 03-10-2013
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud
    NIKZZZZ
    Спасибо, посыпаю голову пеплом, проглядел $CmdLine[0], запомнил когда-то про $CmdLine[1] - $CmdLine[1+n] и ступил

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 13:17 03-10-2013
    AZJIO



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

    Код:
    if $CmdLine[0] then ...

    подробнее

    Всего записей: 4412 | Зарегистр. 03-05-2006 | Отправлено: 18:11 03-10-2013
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    comrades, затупил безбожно, подскажите, пожалуйста, как сделать цикл, чтобы проверка шла, пока не закроются все копии Imagine.exe?

    Код:
    #NoTrayIcon
    #include <File.au3>
     
    If WinExists(@ScriptName) Then Exit
    AutoItWinSetTitle(@ScriptName)
     
    If Not WinExists("[TITLE:Imagine; CLASS:ImagineW]") Then
        If FileExists(@TempDir & "\foo_temp") Then DirRemove(@TempDir & "\foo_temp", 1)
        Exit
    EndIf

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 02:48 07-10-2013
    NIKZZZZ



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

    Код:
    While WinExists("[TITLE:Imagine; CLASS:ImagineW]")
    Sleep(100)
    WEnd

     
     
    Альтернатива:

    Код:
    While 1
        ProcessList("Imagine.exe")
        If @error Then ExitLoop
        Sleep(100)
    WEnd

     
    Или:

    Код:
    While ProcessExists("Imagine.exe")
      Sleep(100)
    WEnd

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 03:22 07-10-2013 | Исправлено: NIKZZZZ, 04:15 07-10-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Обновлён Полный комплект справки 2013.10.11
    Подробнее...

    Всего записей: 4412 | Зарегистр. 03-05-2006 | Отправлено: 17:02 11-10-2013 | Исправлено: AZJIO, 17:04 11-10-2013
    Lovec



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите плиз разобраться с запуском процесса на удаленном ПК
     
    Цель - запустить на удаленном ПК процесс, который сможет взаимодействовать с сетью. Удаленный ПК в домене.
     
    Создаю процесс так:
     
    $o_Process = $o_WMI.Get("Win32_Process")
    $o_ProcessStartup = $o_WMI.Get("Win32_ProcessStartup")
    $o_Config = $o_ProcessStartup.SpawnInstance_
    $i_Res = $o_Process.Create($s_ProcessName, "C:\", $o_Config, $i_PID)
     
    Объект WMI создается ранее с правами администратора домена.
    Проблема: если $s_ProcessName - локальный процесс (типа notepad), проблем нет.
    Если $s_ProcessName указывает на сетевой путь - ошибка "отказано в доступе".
     
    Есть подозрение что запущенный таким образом процесс запускается с какими-то ограниченными правами (похоже что от анонимного пользователя), не смотря на то, что к WMI подключаюсь с правами админа домена.
     
    Вопрос. Можно ли в данном случае что то сделать или данный способ запуска не предназначен для взаимодействия с сетью?
     
    Другие способы удаленного запуска процесса не предлагать, меня пока интересует этот.
     
    Спасибо.

    Всего записей: 1028 | Зарегистр. 29-10-2002 | Отправлено: 18:25 17-10-2013
    Lovec



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Решил свою проблему почитав пару дней Интернет.
    Если кому интересно решение нашел здесь.
     
    Другой есть вопрос. Через WMI подключаюсь к удаленному ПК с правами админа домена и запускаю программу. Она ясное дело запускается так же в контексте админа домена.
    Вопрос. Как мне запустить программу от имени залогиненного пользователя?
    Рассматриваю все способы - из того же запущенного процесса, из другого, через WMI или через PsExec и т.д.
     
    Очень надо плиз....

    Всего записей: 1028 | Зарегистр. 29-10-2002 | Отправлено: 15:37 23-10-2013
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, прошу Вашей помощи. Намудрил я с чек-боксами в GUI, не получается включить функционал чек-боксов в скрипт
     
    Добавлено:
    Такой вариант тоже не работает.

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 17:08 24-10-2013
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Artem_Butenko,
    Пример с Checkbox`ами.
    Код:
    #include <GUIConstantsEx.au3>
     
    Opt('MustDeclareVars', 1)
     
    Global $hGui, $aCheckbox[4][3] = [[3, 'Использовать ключ'],['', ' /Bootable', ', если образ содерждит загрузочную среду Windows PE'], _
            ['', '  /CheckIntegrity', ', чтобы администратор был уведомлен, если при добавлении образа произойдет ошибка'], _
            ['', ' /Verify', ' для проверки ошибок индексации данных в образе']], $nBtn, $sString
     
    $hGui = GUICreate('Test CheckBox', 260, 160)
    GUICtrlCreateGroup('Дополнительные ключи командной строки', 10, 10, 240, 100)
    For $i = 1 To $aCheckbox[0][0]
        $aCheckbox[0][2] = GUICtrlCreateCheckbox($aCheckbox[0][1] & $aCheckbox[$i][1], 30, 30 + ($i - 1) * 25, 200, 20)
        GUICtrlSetTip($aCheckbox[0][2], $aCheckbox[0][1] & $aCheckbox[$i][1] & $aCheckbox[$i][2])
        $aCheckbox[$i][2] = $aCheckbox[0][2]
    Next
    GUICtrlCreateGroup('', -99, -99, 1, 1)
    $nBtn = GUICtrlCreateButton('Click me', 80, 120, 100, 30)
    GUISetState()
     
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit
            Case $nBtn
                $sString = '"Начало строки"'
                For $i = 1 To $aCheckbox[0][0]
                    $sString &= $aCheckbox[$i][BitAND(GUICtrlRead($aCheckbox[$i][2]), $GUI_CHECKED)]
                Next
                $sString &= ' "конец строки"'
                MsgBox(64, 'Info', $sString, 0, $hGui)
        EndSwitch
    WEnd

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 05:38 25-10-2013
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
     
    Спасибо Вам большое за помощь. Пожалуйста, покажите, каким образом интегрировать Вашу конструкцию в мой скрипт. И можно ли обойтись без автоматизированных конструкций следующего вида:
    For $i = 1 To $aCheckbox[0][0]
    Koda их просто не видит. Я понимаю, что это в целом не рационально. Но, мне проще задавать положение каждого отдельно взятого контрола вручную.

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 12:50 25-10-2013 | Исправлено: Artem_Butenko, 12:57 25-10-2013
    CrackeR



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Интересует как заставить это работать в fullscreen с помощью GetForegroundWnd  
     И как правильно в PixelSearch осуществить поиск пикселя нужного цвета с задание погрешности цвета  типу 0xBB161D 0x30

    Код:
     
    #include <WinAPIEx.au3>  
     If WinExists(@ScriptName) Then Exit  
     AutoItWinSetTitle(@ScriptName)  
     Global $Paused, $counter = 0  
     HotKeySet("{F3}", "TogglePause")  
     HotKeySet("{F2}", "Terminate")  
     Shoot()  
     Func Shoot()  
     While 1  
     If _WinAPI_GetAsyncKeyState(0x02) = True Then    
     Local $coord = PixelSearch(629, 512, 649, 490,12191508,20)  Погрешность цвета.  
     If Not @error Then  
     MouseClick("Left")  
     Sleep(150)  
     EndIf  
     EndIf  
     WEnd  
     EndFunc  
     While 1  
     $counter +=1  
     WEnd  
     Func TogglePause()  
     $Paused = NOT $Paused  
     While $Paused  
     sleep(100)  
     ;ToolTip('Script is "Paused"',0,0, $counter, 1)  
     WEnd  
     ToolTip("")  
     EndFunc  
     Func Terminate()  
     Exit 0  
     EndFunc
     

    Всего записей: 666 | Зарегистр. 01-10-2003 | Отправлено: 17:10 25-10-2013
    Artem_Butenko



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

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 17:51 25-10-2013 | Исправлено: Artem_Butenko, 17:52 25-10-2013
    Ksanderash

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, можно ли уменьшить размер скомпилированного exe? Даже в UPX занимает много, 300кб. Кода 12 строчек, остальное сам AutoIt. Хочется компактности...
     
    Добавлено:
    Аа-а, отбой. Откатился на 3.0 версию, упростив скрипт. 80кб стало.

    Всего записей: 2141 | Зарегистр. 10-11-2005 | Отправлено: 20:10 26-10-2013
    AZJIO



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

    Цитата:
    80кб стало
    не должно быть 80 кб, потому что интерпретатор вставляется в скомпилированный файл и минимальный рахмер не может быть меньше размера интерпретатора. Для сжатого в UPX размер колеблется от 240 до 300 кб взависимости от версии.

    Всего записей: 4412 | Зарегистр. 03-05-2006 | Отправлено: 07:40 27-10-2013
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Artem_Butenko
    Цитата:
    Пожалуйста, помогите разобраться с этим скриптом.
    Вы его хотя бы в теги "код" вставьте.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 09:47 27-10-2013
    asdf8

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIOSilver Member 07:40 27-10-2013
    Цитата:
    не должно быть 80 кб

     
    В самом начале AutoIT 3 не имел регэкспов и некоторых других функций, которые есть сейчас.
    Так, что скомпилированный и сжатый upx скрипт имел размер около 80Кб.

    Всего записей: 92 | Зарегистр. 06-05-2007 | Отправлено: 11:17 27-10-2013
    Ksanderash

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Просто у меня скрипт простейший: ищет окошко, вбивает в поля текст, нажимает кнопку. В 3.0.100 AutoIt это умел. Версию 2.* не нашел да и этой достаточно.
     
    Добавлено:
    asdf8
    Цитата:
    скомпилированный и сжатый upx скрипт имел размер около 80Кб

    А при разжатии бьется. Хотел пережать современным UPX, но не вышло.

    Всего записей: 2141 | Зарегистр. 10-11-2005 | Отправлено: 12:24 27-10-2013
    5peciali5t



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    добрый день!
     
    есть небольшая задача: я сам выделяю нужный мне текст, далее нажимаю горячую клавишу на которую будет назначен скомпилированный в exe скрипт который должен
    скопировать текст с буфер обмена, найти в нем все символы  " \ ", " : " или " / " и почистив от них содержимое буфера вставлял из буфера (если будет без сторонних утилит типа sed будет вообще замечательно, или на худой конец чтобы выполнялось в фоне)

     
    Send("^{INS}")
    Sleep(100)
    ???
    Send("+{INS}")
     
    заранее благодарен
     
    задача решилась без использования скрипта

    Всего записей: 1472 | Зарегистр. 17-07-2009 | Отправлено: 12:17 29-10-2013 | Исправлено: 5peciali5t, 16:31 29-10-2013
       

    Страницы: 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