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

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    эээ... проверил:
    ControlSend ( "title", "text", controlID, "string" [, flag] )
     
    хотябы то что тут надо 4 обязательных параметра а у тебя 3, так еще и по типам не совпадает...

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 11:47 04-02-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kar1son
    Цитата:
    хотябы то что тут надо 4 обязательных параметра а у тебя 3, так еще и по типам не совпадает...
    1. Посчитайте параметры внимательно:
    Код:
    ControlSend($hIE, '', 'Internet Explorer_Server1', '{ENTER}')

    2. Вместо параметра Title можно, и, на мой взгляд лучше, использовать Handle.
    3. Почитайте справку внимательно.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 13:52 04-02-2011
    Kar1son

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

    ну нету в справке этой команды такого. я даже поиском по странице пробовал на всякий случай искать...
     
     
     
     
    и кстати - такой способ опять открывает окошко которое тут же закрывается... видимо придется просто send использовать

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 14:16 04-02-2011
    AZJIO



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

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 16:23 04-02-2011
    brRamires

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите решить следующую задачу:  
    - по нажатии клавиш Shift+Win запомнить активное окно  
    - в дальнейшем по нажатии клавиши Win это окно сворачивать/восстанавливать  
    - желательно, чтобы информация о запомненном окне сохранялась в файл, а при старте скрипта автоматически загружалась (чтобы не нажимать Shift+Win каждый раз после перезагрузки)

    Всего записей: 564 | Зарегистр. 28-09-2008 | Отправлено: 05:36 05-02-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    brRamires
    Попробуйте так:
    Код:
    #include <WinAPIEx.au3>
    #include <Misc.au3>
    #include <Array.au3>
     
    HotKeySet('{Esc}', '_Exit')
     
    While 1
        If _IsPressed('10') Then
            If _IsPressed('5B') Or _IsPressed('5C') Then
                _SaveWindowInfo()
            EndIf
        EndIf
        If _IsPressed('5B') Or _IsPressed('5C') Then
            If Not _IsPressed('10') Then
                _ActionWithWindow()
            EndIf
        EndIf
        Sleep(10)
    WEnd
     
    Func _Exit()
        Exit
    EndFunc   ;==>_Exit
     
    Func _SaveWindowInfo()
        Local $aInfo[3][2] = [['Title'],['Class'],['File']]
        Local $sIniFile = @ScriptDir & '\info.ini'
        Local $sSection = 'MyWindow'
        Local $hWindow = WinGetHandle('[ACTIVE]')
        Local $sTitle = WinGetTitle($hWindow)
        If Not $sTitle Or $sTitle = 'Program Manager' Then
            ToolTip('Нет активного окна', 0, 0)
            Return
        Else
            ToolTip('')
        EndIf
        $aInfo[0][1] = WinGetTitle($hWindow)
        $aInfo[1][1] = _WinAPI_GetClassName($hWindow)
        $aInfo[2][1] = _WinAPI_GetWindowFileName($hWindow)
        IniWriteSection($sIniFile, $sSection, $aInfo, 0)
    EndFunc   ;==>_SaveWindowInfo
     
    Func _ActionWithWindow()
        Local $hWindow
        Local $aWindowInfo
        Local $iState
        Local $sIniFile = @ScriptDir & '\info.ini'
        Local $sSection = 'MyWindow'
        If FileExists($sIniFile) Then
            $aWindowInfo = IniReadSection($sIniFile, $sSection)
        Else
            Return
        EndIf
        $hWindow = WinWait($aWindowInfo[1][1], '', 3)
        If $hWindow Then
            If _WinAPI_GetClassName($hWindow) == $aWindowInfo[2][1] And _
                    _WinAPI_GetWindowFileName($hWindow) == $aWindowInfo[3][1] Then
                $iState = WinGetState($hWindow)
                Switch $iState
                    Case 1 To 15, 32 To 50
                        WinSetState($hWindow, '', @SW_MINIMIZE)
                    Case 16 To 31
                        WinSetState($hWindow, '', @SW_RESTORE)
                EndSwitch
            EndIf
        EndIf
    EndFunc   ;==>_ActionWithWindow
    Только Вы клавиши не очень удобные выбрали. С другими через HotKeySet() было бы проще.
    WinAPIEx.au3.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 14:10 05-02-2011 | Исправлено: madmasles, 20:37 05-02-2011
    brRamires

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Спасибо, вроде работает, только есть один момент: если заголовок окна изменился, то уже не работает, а следовательно не подходит для браузеров и файловых менеджеров (что мне и нужно), у которых в заголовке написано имя текущей страницы/файла. Можно ли сделать так, чтобы заголовок мог быть любым?

    Всего записей: 564 | Зарегистр. 28-09-2008 | Отправлено: 16:44 05-02-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    brRamires
    Цитата:
    не подходит для браузеров и файловых менеджеров (что мне и нужно), у которых в заголовке написано имя текущей страницы/файла
    В любом браузере, например, в заголовке присутствует его название или можно сделать фильтр по заголовкам или по классам окон. Вы скажите с какими окнами (класс или заголовок) нужно работать. И клавиши бы поменяли.
     
    PS
    Можно привязаться еще по процессам или по exe-файлам.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 18:08 05-02-2011 | Исправлено: madmasles, 18:28 05-02-2011
    brRamires

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Вообще мне нужно для Far-а, просто хочется, чтобы скрипт был более универсален и работал для других программ. Клавиши можно оставить как в скрипте, только Win убрать, а использовать для запоминания окна Shift+Win, а для сворачивания/восстановления только Win+Shift).

    Цитата:
    или можно сделать фильтр по заголовкам или по классам окон.
    ...
    Можно привязаться еще по процессам или по exe-файлам.
     

    А нельзя ли сделать только привязку по процессу, и восстанавливать его главное окно? Дело в том, что если для Фара установить плагин ConEmu, который запускает своё окно, и в нём уже Фар, то скрипт не работает (если поставить в настройках "Alway on top", то окно сворачивается, но не разворачивается). Видимо скрипт пытается восстановить не то окно.
     
    upd
    Клавиши я переделал. Получилось так:

    Код:
    While 1
        If _IsPressed('11') And (_IsPressed('5B') or _IsPressed('5C')) Then ;ctrl+win
            _SaveWindowInfo()
        ElseIf _IsPressed('10') And (_IsPressed('5B') Or _IsPressed('5C')) Then  ;shift+win
            _ActionWithWindow()
        EndIf
        Sleep(100)
    WEnd

    Осталось только к окнами разобраться.

    Всего записей: 564 | Зарегистр. 28-09-2008 | Отправлено: 19:26 05-02-2011 | Исправлено: brRamires, 20:20 05-02-2011
    Zakkazak



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    давно хотел попросить о скрипте, так-как не нашёл утилки которая делала бы это:
     
    переход в папку активной программы (процесса). То есть при нажатии хотки  в Total Commander ом открывалась бы директория активной программы.
     
    буду очень благодарен.

    Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 20:34 05-02-2011
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хочу сделать одну вещь, посмотрите - прозрачность толком не работает.

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 20:34 05-02-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    brRamires
    Цитата:
    А нельзя ли сделать только привязку по процессу

    Если процесс один,  все его окна можно так посмотреть:
    Код:
    #include <Array.au3>
    #include <WinAPIEx.au3>
     
    $sProcess = 'AkelPad.exe'
    $iPID = ProcessExists($sProcess)
    If Not $iPID Then
        MsgBox(64, 'Info', 'Нет процесса ' & $sProcess)
        Exit
    EndIf
    $aData = _WinAPI_EnumProcessWindows($iPID);все видимые окна
    If IsArray($aData) Then
        ReDim $aData[$aData[0][0] + 1][3]
        For $i = 1 To $aData[0][0]
            $aData[$i][2] = WinGetTitle($aData[$i][0])
        Next
        _ArrayDisplay($aData, '0-Handle 1-Class 2-Title')
    Else
        MsgBox(64, 'Info', 'Нет видимых окон.')
    EndIf
    WinAPIEx.au3.
     
    Добавлено:
    Zakkazak

    Цитата:
    переход в папку активной программы (процесса)

    Попробуйте так:
    Код:
    #include <WinAPIEx.au3>
     
    ;по окну:
    $iPID = WinGetProcess('[Class:AkelPad4]')
    ;по имени процесса:
    ;$sProcess = 'AkelPad.exe'
    ;$iPID = ProcessExists($sProcess)
    If Not $iPID Then
        MsgBox(64, 'Info', 'Нет процесса')
        Exit
    EndIf
    $sPath = _WinAPI_GetProcessFileName($iPID)
    If Not @error Then
        ;только папку открыть:
        $sPath = StringRegExpReplace($sPath, '\\[^\\]*$', '')
        ShellExecute($sPath)
        ;открыть папку и выделить файл:
        ;Run('Explorer.exe /select,"' & $sPath & '"')
    Else
        MsgBox(16, 'Error', 'Error')
    EndIf

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 20:36 05-02-2011 | Исправлено: madmasles, 20:37 05-02-2011
    brRamires

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Для ConEmu.exe выдаёт:
    [1]  |  0x005F0314  |  VirtualConsoleClass  |  {C:\!P\Shell\Far2} - Far 2.0.1807 x86 Administrator
    Для консольных утилит (включая Far, а ConEmu - это графическая, она только эмулирует консоль) выдаёт "Нет видимых окон". Но ведь для Фара скрипт работает, значит окно там должно быть.
    При этом в файле info.ini сохраняются следующие значения:
    Для Фара:

    Код:
    [MyWindow]
    Title={c:\!P\Shell\Far2} - Far 2.0.1807 x86 Administrator
    Class=ConsoleWindowClass
    File=C:\!P\Shell\Far2\Far.exe

    Для ConEmu:

    Код:
    [MyWindow]
    Title={C:\!P\Shell\Far2} - Far 2.0.1807 x86 Administrator
    Class=VirtualConsoleClass
    File=C:\!P\Shell\Far2\ConEmu.exe
     

    Может быть есть другой способ управлять окнами, не через функцию WinSetState(), ведь мышкой и через контекстное меню сворачивается/разворачивается нормально?
    upd
    И ещё я не понял, как сделать "фильтр по заголовкам или по классам окон"?

    Всего записей: 564 | Зарегистр. 28-09-2008 | Отправлено: 21:30 05-02-2011 | Исправлено: brRamires, 21:44 05-02-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    brRamires,
    Вы бы дали мне ссылки на обе эти программы. Я их поставлю и попробую с ними что-нибудь сделать.
     
    AZJIO
    Цитата:
    Хочу сделать одну вещь, посмотрите - прозрачность толком не работает.
    Я немного по-другому сделал. Лежит Здесь.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 22:29 05-02-2011 | Исправлено: madmasles, 23:07 05-02-2011
    brRamires

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Ссылки вот они:
    TrueFar.1807.x86.Chloe Artis.zip
    ConEmu.Maximus5.110124.7z.
    Второй архив нужно распаковать в папку, куда был установлен Far и после этого запустить ConEmu.exe.
    madmasles, если это сильно напряжно, то ладно, как оказалось в этой программе ConEmu есть своя горячая клавиша на сворачивание/разворачивание (Win+C). Хочется понять, как сделать так, чтобы изменение заголовка окна не влияло на работу скрипта.

    Всего записей: 564 | Зарегистр. 28-09-2008 | Отправлено: 03:08 06-02-2011 | Исправлено: brRamires, 03:10 06-02-2011
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Немного переделал, получилось создать один гуи на весь экран и задавать координаты картинкам (взамен перемещения гуи по экрану), но пока не удалось создавать одновременно несколько картинок. Хочу сделать это.
    Подозреваю, что за слои отвечает параметр $pSource в функции _WinAPI_UpdateLayeredWindow, но как там задать слой в структуре не могу угадать.
     
    Добавлено:
    brRamires
    Цитата:
    Хочется понять, как сделать так, чтобы изменение заголовка окна не влияло на работу скрипта.
    надо добавить в ini список исключений для окон содержащих имя файла в заголовке и детектить такие окна регэкспом, типа $aWList=WinList("[REGEXPTITLE:* - Notepad++]")

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 03:56 06-02-2011 | Исправлено: AZJIO, 03:59 06-02-2011
    FLINT80

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть такая сборка LEX LIVE CD & USB RAMBOOT FULL MULTIMEDIA 2010
     
     Для удобства подключения к локалки я разобрался и сделал свою инструкцию
    Вот ссылка на инструкцию как работать с профилями локалки. Файл в формате PDF.
     
    Хотелось бы увидеть что-то похожее на подключение к интернет и поэтому:
     
    Врпрс:
    - Как сделать на рабочем столе ярлык для запуска входа в интернет.
    Плюс к этому чтобы при запуске уже были прописаны предварительно свои Догин и Пароль
    для входа в Интернет.
    Выложите пожалуйста понятную инструкцию или видеоролик как можно сделать (Логин и Пароль под себя)
     
    Как вариант решения:
    Помогите пожалуйста сделать скрипт для создания подключения вертуальной сети vpn,  
    например с такими параметрами:
    - Организация: Интернет
    - VPN Сервер:vpn
    - Добавить ярлык подключения на рабочий стол
    - В свойствах подключения снять галочку в пункте "Требуется шифрование данных"
    - Логин: User
    - Passw: 123
     
    Выложите еще раз
    Цитата:
    скрипты автоподключения ADSL- net_config_and_adsl.7z
    так как файлы удалили

    Всего записей: 78 | Зарегистр. 15-10-2008 | Отправлено: 10:49 06-02-2011 | Исправлено: FLINT80, 11:05 06-02-2011
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FLINT80
    ссылка (можно было в той теме спросить)

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 14:37 06-02-2011
    FLINT80

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    СПС за ссылку. Я посмотрел там очень близко к желаемому, но как реализовать:
    Цитата:
    Как вариант решения:
    Помогите пожалуйста сделать скрипт для создания подключения вертуальной сети vpn,  
    например с такими параметрами:
    - Организация: Интернет
    - VPN Сервер:vpn
    - Добавить ярлык подключения на рабочий стол (создать подключение)
    - В свойствах подключения снять галочку в пункте "Требуется шифрование данных"
    - Логин: User
    - Passw: 123  

     
    Эти настройки должны работать в  сборке LEX LIVE CD & USB RAMBOOT FULL MULTIMEDIA 2010
     
    Еще раз СПС за уделенное время и внимание.
    Просто очень медленно въезжаю и прошу конкретной помощи.

    Всего записей: 78 | Зарегистр. 15-10-2008 | Отправлено: 15:20 06-02-2011 | Исправлено: FLINT80, 16:22 06-02-2011
    brRamires

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

    Цитата:
    Хочется понять, как сделать так, чтобы изменение заголовка окна не влияло на работу скрипта.  

    Цитата:
    надо добавить в ini список исключений для окон содержащих имя файла в заголовке и детектить такие окна регэкспом, типа $aWList=WinList("[REGEXPTITLE:* - Notepad++]")

    Боюсь, что это для меня слишком сложно. Можно пример исходного кода?

    Всего записей: 564 | Зарегистр. 28-09-2008 | Отправлено: 19:39 06-02-2011
       

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