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

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



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

    Код:
    While 1
      Switch PixelGetColor( 1748 , 1065 )
        Case Dec("FF0000"),Dec("DC2534")
        Case Else
          Run("start RusLat.exe") ; цвет НЕ совпадает
      EndSwitch
      Sleep(1000)
    WEnd  
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 11:23 13-10-2019 | Исправлено: NIKZZZZ, 11:28 13-10-2019
    BOBAT



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

    Всего записей: 1511 | Зарегистр. 07-08-2005 | Отправлено: 11:33 13-10-2019
    ndch

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, есть ли варианты выбора меню/подпункта меню из списка  "TdxBarControl" / "TdxBarSubMenuControl" (DevExpress), кроме как  
    1. вслепую нажимая кнопки, а-ля Send("{DOWN}{DOWN}{ENTER}") / Send("{TAB}{TAB}{ENTER}")
    2. исключая вариант ControlClick с захардкоженными координатами.

    Всего записей: 6477 | Зарегистр. 31-08-2008 | Отправлено: 09:51 21-10-2019 | Исправлено: ndch, 10:21 21-10-2019
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ndch
    UIAutomate.au3 может помочь.

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 11:13 21-10-2019
    alexmats



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

    ----------
    Интервью с Богом детям 60х-70х

    Всего записей: 1304 | Зарегистр. 05-03-2002 | Отправлено: 17:43 27-10-2019
    varbasik

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую!
    Нужен незакрывающийся баннер без кнопок.
    На терминальном сервере на время тех.работ перекрывать юзерам доступ к рабочему столу и панели задач, чтобы 1С v77 не запускали.
    В баннере сообщение "Идут профилактические работы"
     
    Подскажите такой пример. В гугле не нашел, autoit не знаю, без примера не осилю (((

    Всего записей: 226 | Зарегистр. 02-07-2009 | Отправлено: 09:35 25-11-2019
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    varbasik, откопал у себя свой старый скрипт из 2010 года, в котором я как раз экспериментировал с неубиваемым окном.
    Можете изменить под себя.
    https://yadi.sk/d/LczJW403iNXWmQ
    пароль для выхода из окна: demo

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 14:11 25-11-2019 | Исправлено: ynbIpb, 14:25 25-11-2019
    Rootkit1987

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ynbIpb,
     
    По поводу блокировки доступа к раб.столу и т.д., можно:
    1. Заблокировать ввод с клавы и мышь - функция InputBlock
    2. Заблокировать окно ProgrammManager (это трей вместе с раб.столом, если не ошибаюсь)
    3. При показе баннера, просто деактивировать окно баннера.
     
    Для достижения наилучшего эффекта можно скомбинировать варианты.

    Всего записей: 98 | Зарегистр. 24-06-2013 | Отправлено: 21:43 25-11-2019
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В те годы был бум винлокеров, которые вымогали деньги через смс и тд. Я разрабатывал инструмент для борьбы с ними. Скрипт выше, был имитацией работы винлокера для обкатки различных методик борьбы.

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 20:35 26-11-2019
    BOBAT



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

    Всего записей: 1511 | Зарегистр. 07-08-2005 | Отправлено: 15:27 29-11-2019
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BOBAT
    Командой Run/RunWait. По тому же принципу, что и в командной строке/батнике

    Код:
    Run ( "wscript.exe ""x:\path\to\script.vbs""" )

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 16:02 29-11-2019
    BOBAT



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    iglezz
    Спасибо, но начала выскакивать ошибка, что не может найти vbs по пути C:\Windows\System32\мой.vbs хотя vbs лежит в папке со скриптом, может скрипт положить в C:\Windows вместе с vbs ? Или нужно указывать полный путь? Скрипт отрабатывает, запускает vbs , vbs отрабатывает нормально, потом выскакивает эта ошибка
    задача - установить драйвер для сетевой карты через inf файл, единственный работающий способ - установка с помощь. vbs, с которой он отлично справляется, если его запускать вручную, либо через cmd (start /w wscript.exe install_driver.vbs). Может можно устанавливать так драйвер средствами Autoit?

    Всего записей: 1511 | Зарегистр. 07-08-2005 | Отправлено: 16:23 29-11-2019 | Исправлено: BOBAT, 13:04 30-11-2019
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BOBAT
    Скомпилированный скрипт должен лежать рядом с *.vbs. Макрос @ScriptDir в себе содержит путь к текущей директории, из которой запущен наш Autoit скрипт.

    Код:
    $sFullString = @SystemDir&'\wscript.exe "'&@ScriptDir&'\install_driver.vbs"'
    MsgBox (0, "Debug", "Полный путь: "& $sFullString); для отладки
    Run ($sFullString)

    А можно ещё вот так:  

    Код:
    ShellExecute (@ScriptDir&"\install_driver.vbs")

    Но должны быть правильные ассоциации с *.vbs в Windows. Это не так надёжно.

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 20:13 30-11-2019 | Исправлено: ynbIpb, 20:21 30-11-2019
    BOBAT



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

    Цитата:
    Скомпилированный скрипт должен лежать рядом с *.vbs. Макрос @ScriptDir в себе содержит путь к текущей директории, из которой запущен наш Autoit скрипт.
     
    Код:
    $sFullString = @SystemDir&'\wscript.exe "'&@ScriptDir&'\install_driver.vbs"'
    MsgBox (0, "Debug", "Полный путь: "& $sFullString); для отладки
    Run ($sFullString)

     
    Спасибо, Все работает прекрасно, ошибка выскакивает иногда (ОЧЕНЬ редко, закономерности не заметил )  

     и если ставлю RunWait вместо Run - ничего не срабатывает

    Всего записей: 1511 | Зарегистр. 07-08-2005 | Отправлено: 16:54 01-12-2019 | Исправлено: BOBAT, 16:56 01-12-2019
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BOBAT
    Если даже иногда бывает ошибка, то точно что-то не так (в скрипте или системе).
    Как выглядит содержимое команды Run в скрипте?
    И что там внутри .vbs? может его на AutoIt переписать стоит...

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 17:11 01-12-2019
    SharkyEXE

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

    Код:
     
    ; Пример использования функции
    _DisplaySetRes (1024, 768, 32, 75)
     
    ; Функция изменения видеорежима (для одного монитора)
    Func _DisplaySetRes ($width, $height, $depth, $freq)
        Local $dev = DllStructCreate ("byte[32];int[10];byte[32];int[6]")
        ; Возвращаем текущее состояние устройства
        Local $ret = DLLCall ('user32.dll', 'int', 'EnumDisplaySettings', _
            'ptr' , 0, _
            'long', 0, _
            'ptr' , DllStructGetPtr ($dev) )
        If @error Then Return 0
        If $ret[0]=0 Then Return 0
        ; Правим нужные элементы структуры
        DllStructSetData ($dev, 4, $depth, 1)
        DllStructSetData ($dev, 4, $width, 2)
        DllStructSetData ($dev, 4, $height, 3)
        DllStructSetData ($dev, 4, $freq, 5)
        ; Проверяем корректность параметров
        $ret = DllCall ('user32.dll', 'int', 'ChangeDisplaySettings', _
            'ptr', DllStructGetPtr ($dev), _
            'int', 2 )
        If @error Then  Return 0
        ; Если все ОК - применяем новые параметры
        If $ret[0] =0 Then
            $ret = DllCall ('user32.dll', 'int', 'ChangeDisplaySettings', _
                'ptr', DllStructGetPtr ($dev), _
                'int', 1 )
            If @error Then  Return 0
            Return 1
        Else
            Return -1
        EndIf
    EndFunc
     
    2) имею желание использовать минимальное количество кода для смены разрешения экрана
    3) пожалуйста, я очень прошу, из этого перейти сделайте минимальное количество кода, чтобы работало
    4) или, может есть другое красивое, решение для смены разрешения экрана, в одну строку
     
    Пожалуйста, помогите
     
    Спасибо.

    Всего записей: 354 | Зарегистр. 25-01-2009 | Отправлено: 19:47 01-12-2019 | Исправлено: SharkyEXE, 19:50 01-12-2019
    BOBAT



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

    Цитата:
    И что там внутри .vbs? может его на AutoIt переписать стоит...  

    Пока все работает без ошибок, на Autoit конечно лучше переписать, если есть возможность
    vbs  

    Код:
     
    Option Explicit
     
    Dim objShell
    Dim objFolder
    Dim objFolderItem
     
    Set objShell  = WScript.CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace("D:\Cloud@1\Drivers\Lan\Realtek_Win10_10036_10222019\WIN10\64")
     
    If Not objFolder Is Nothing Then
        Set objFolderItem = objFolder.ParseName("rt640x64.inf")
        
        If Not objFolderItem Is Nothing Then
            objFolderItem.InvokeVerb "Install"
            
            Set objFolderItem = Nothing
        Else
            WScript.Echo "Can't find [nv_dispi.inf] in [D:\Cloud@1\Drivers\Lan\Realtek_Win10_10036_10222019\WIN10\64]"
        End If
        
        Set objFolder = Nothing
    Else
        WScript.Echo "Не могу найти [rt640x64.inf]"
    End If
     
    Set objShell = Nothing
     
    WScript.Quit 0
     

    В коде еще есть проверка наличия файлов и выдачи сообщений, это вообще не нужно, так как файлы всегда есть

    Всего записей: 1511 | Зарегистр. 07-08-2005 | Отправлено: 20:14 01-12-2019 | Исправлено: BOBAT, 20:16 01-12-2019
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SharkyEXE
    Решение довольно короткое и красивое, чем не устраивает?
     
    BOBAT
    Итого весь vbs сводится к запуску стандартного установщика для .inf
    Аналог в AutoIt: ShellExecute/ShellExecuteWait ("x:\путь\rt640x64.inf", "", "", "install")
    Или же посмотреть в HKEY_CLASSES_ROOT\inffile\shell\Install\command какой командой запускается установка и использовать её в Run/RunWait

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 20:34 01-12-2019
    SharkyEXE

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    iglezz
     
    Здравствуйте.
     
    Красивое решение - изменить разрешение экрана в одну строку примерно так
    Код:
     
    DllCall ('user32.dll', 'int', 'ChangeDisplaySettings', 'ptr', DllStructGetPtr (1024, 768, 32, 75), 'int', 1 )
     
    где 1024 - высота, 768 - ширина, 32 - битность цветов (глубина цвета), 75 - частота обновления экрана
     
    Я искренне уверен, что красивый код у каждого разный, кто проблему в одну строку решает, а кто "чем больше кода" напишет

    Всего записей: 354 | Зарегистр. 25-01-2009 | Отправлено: 21:18 01-12-2019
    usalex

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

    Цитата:
    DllCall ('user32.dll', 'int', 'ChangeDisplaySettings', 'ptr', DllStructGetPtr (1024, 768, 32, 75), 'int', 1 )

    А для ТВ, подключенного в режиме "расширенного экрана" как менять рефреш (чтоб на основном мониторе при этом ничего не менялось)?

    Всего записей: 6215 | Зарегистр. 20-12-2004 | Отправлено: 21:28 01-12-2019
       

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