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

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



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите какие шаги предпринять? в редакторах не особо соображаю. Данной прогой - myAutToExe2 12, так же ни слова на китайском одни цифры и знаки!

    Всего записей: 2056 | Зарегистр. 28-01-2013 | Отправлено: 12:04 12-03-2014
    DoctorLans

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Господа, помогите разобраться с кодировками.
    Задача: одинаковым образом выводить русские символы в консоль как при разработке в SciTE, так и в готовом приложении.
    Ниже привожу свои действия и рассуждения.
     
    AutoIT последней версии, Windows 7 x64
     
    Настройки SciTE:
    code.page=65001
    output.code.page=866
     
    первая (65001 это обозначение UTF-8 в винде) отвечает за кодировку исходного файла. Хранить исходники в UTF-8 мало что правильнее независимо от языка программирования, так ещё и рекомендуется самими разрабами AutoIT:

    Цитата:
    The recommended script format is UTF-8 with BOM.

     
    вторая настройка, насколько я понимаю, отвечает за кодировку "консоли" SciTE. Выставил её такой же, как в самой винде.
     
    Простенький скрипт:

    Код:
    #include <Encoding.au3>
    $s = "Привет"
    ConsoleWrite($s & @CRLF)
    ConsoleWrite(_Encoding_ANSIToOEM($s) & @CRLF)
     

     
    Запускаем. Вывод в самом SciTE:

     
    Снова рассуждения: AutoIT с момента появления Unicode версии хранит все строки во внутреннем представлении UTF-16.

    Цитата:
    All AutoIt strings use UTF-16 (in fact and more precisely UCS-2) encoding.

    Но:

    Цитата:
    There are a few parts of AutoIt that don't yet have full Unicode support. These are:
    * Send and ControlSend - Instead, Use ControlSetText or the Clipboard functions.  
    * Console operations are converted to ANSI.  

     
    По всей видимости при передаче строки в функцию ConsoleWrite, автоматически и неявно происходит её конвертация в однобайтовую кодировку ANSI (в русскоязычной винде это CP1251). Стоит признать, что неявно конвертировать, да с возможной потерей информации не совсем удачное решение, но сами разрабы признаются, что это недоработка и они её когда-нибудь пофиксят:

    Цитата:
    These limits will be addressed in future versions if possible.

     
    Ну ладно. В функцию ConsoleWrite приходит CP1251, а в что происходит дальше, мне не совсем понятно. То ли SciTE подменяет ConsoleWrite своей реализацией, то ли как-то ещё меняет строку, но факт - срабатывает моя настройка output.code.page=866 и строка из ANSI (CP1251) кодировки преобразуется в OEM (866) и в таком виде успешно выводится на экран.
     
    Что касается второго вывода, с использованием функции _Encoding_ANSIToOEM, она заранее преобразует ANSI в OEM (866) и скармливает ConsoleWrite уже OEM строку. Но та, судя по всему, ожидает только ANSI (cp1251), соответственно интепретирует пришедшую как ANSI, как результат - кракозябры.
     
    Ладно, компилируем скрипт в exe:
    Aut2exe_x64.exe /in charset.au3 /out charset.exe  /console
    кстати куда убрали галочку "конвертировать как консольное приложение" из GUI компилятора скриптов? Теперь приходится использовать только консольную версию
     
    Запускаем получившийся .exe:

    И тут неожиданно всё наоборот.
     
    Видимо в скомпилированной версии AutoIT скрипта ConsoleWrite почему-то начинает ожидать строку не в 1251, а уже в 866. Соответственно в верхнем выводе неявно преобразованная AutoIT'ом в ANSI (cp1251) интерпретируется неправильно.
     
    Нижний же вывод подтверждает, что почему-то ожидается 866. Ему подаётся на вход именно она, заботливо сконвертированная мной через _Encoding_ANSIToOEM, и выводится она правильно.
     
    Кстати заметил ещё одну странность.
    Вывод в SkiTE не зависит от того, поставить ли параметр
    output.code.page=866
    или
    output.code.page=1251
    или
    output.code.page=cp1251
     
    Всё выводится однофигственно, как показано на первом скриншоте.
    Но если вообще убрать этот параметр, оставив только code.page=65001, то вывод в SkiTE сразу ломается и вместо ещё более-менее читабельных символов появляются байты:

    Ладно, "байты" ещё объяснимы вот этим:

    Цитата:
    If output.code.page is set then it is used for the output pane which otherwise matches the edit pane.  

    Но вот почему не влияет смена однобайтовой кодировки 866/1251, не понятно.
     
    Вопрос: все ли мои рассуждения верны?
    Второй вопрос: как таки добиться единообразного вывода и при разработке в SkiTE и в консоли Windows?

    Всего записей: 248 | Зарегистр. 07-10-2006 | Отправлено: 21:54 12-03-2014 | Исправлено: DoctorLans, 22:29 12-03-2014
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну как самое простое решение:
    Делать проверку скомпилировано ли приложение и соответственно выводить нужную строку

    Код:
    If @Compiled Then  ; если скомпилирован
      ;отправляем в 866
    Else  ; иначе
      ;отправляем в 1251
    EndIf

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 11:45 13-03-2014 | Исправлено: ynbIpb, 11:48 13-03-2014
    DoctorLans

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ynbIpb
    действительно, это работает. Всё выводится правильно и там и там.  
    Но всё же хочу поинтересоваться, разве разработчики AutoIt не реализовали уже подобное?

    Всего записей: 248 | Зарегистр. 07-10-2006 | Отправлено: 20:30 13-03-2014
    ynbIpb



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

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 10:16 14-03-2014
    dinis124

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет парни. Не поможете скрип дописать. Необходимо всплывающее лого при запуске. То есть, стартует картинка по центру экрана на пару секунд, и уже потом запуск Gui. Если Gui  с горем пополам удалось из примеров накатать то вот тут затык полный с сведением скрипта в один.  Помогите пожалуйста.

    Всего записей: 143 | Зарегистр. 12-09-2011 | Отправлено: 16:31 14-03-2014 | Исправлено: dinis124, 17:34 13-07-2014
    InferNO



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dinis124
    16:31 14-03-2014
    Цитата:
    Привет парни. Не поможете скрип написать. Необходимо всплывающее лого при запуске. То есть, стартует картинка по центру экрана на пару секунд, и уже потом запуск Gui. Если Gui  с горем пополам удалось из примеров накатать то вот тут затык полный.  Помогите пожалуйста.

    Есть на офф. форуме тема, где пользователь спрашивал помощи по splash screen'у, и выкладывал свой результат.
    Ссылки, правда, померли, а у меня сохранилась не последняя версия его скрипта: rghost.ru/53063234
     
    Можешь погуглить "autoit splash screen".

    Всего записей: 349 | Зарегистр. 08-09-2001 | Отправлено: 00:27 15-03-2014
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Обновил скрипт "Версия для печати". Теперь можно получить посты определённого автора. Вывод в файл позволяет просто конвертировать в удобный вид, а просматривать не в объекте IE, в другом браузере.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 21:38 15-03-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dinis124,
    Код:
    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_File_Add=wait.gif, GIF, WAIT
    #AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/SO
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
     
    #include <GIFAnimation.au3>;http://www.autoitscript.com/forum/topic/96132-gif-animation/
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
     
    Opt('MustDeclareVars', 1)
    Opt('GUICloseOnESC', 0)
    Opt('TrayMenuMode', 3)
     
    Global $aGIF[2][2] = [[@ScriptDir & '\wait.gif', ''],[@ScriptFullPath, 'GIF;WAIT']]
     
    _Wait_GIF($aGIF[@Compiled][0], $aGIF[@Compiled][1], 5)
     
    Func _Wait_GIF($s_GIF, $s_Data, $i_Wait = 3);3 sec
        Local $h_Gui, $n_GIF
        $h_Gui = GUICreate('', 100, 100, -1, -1, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
        GUISetBkColor(0xFFFFFF)
        $n_GIF = _GUICtrlCreateGIF($s_GIF, $s_Data, 0, 0, 100, 100)
        _WinAPI_SetLayeredWindowAttributes($h_Gui, 0xFFFFFF, 255)
        _WinAPI_SetParent($h_Gui, 0)
        GUISetState(@SW_SHOWNOACTIVATE)
        Sleep($i_Wait * 1000)
        _GIF_DeleteGIF($n_GIF, False)
        GUIDelete($h_Gui)
    EndFunc   ;==>_Wait_GIF
    wait.gif

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 14:28 16-03-2014 | Исправлено: madmasles, 14:30 16-03-2014
    vovaking

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброе время суток.
     
    Кто нибудь может мне помочь.
    Имеется код взятый за прототип с  http://www.oszone.net/3663
     
    ;какой путь нужно дописать в переменную Path
    $addtopath=";\\su479.vodmin.ru\im\show;\\su479.vodmin.ru\im\cadm"
    ;извлечение текущего содержимого переменной Path
    $curpath=RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment","Path")
     
    If Not StringInStr ($curpath,$addtopath) and Not StringInStr ($curpath,";\\im.vodmin.ru\im\show;\\im.vodmin.ru\im\cadm") Then
        RegWrite("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment","Path","REG_EXPAND_SZ",$curpath & ";" & $addtopath)
     EndIf  
     
    Смысл какой! Нужно что бы если  в переменной Path  существует строка то ее надо заменить, а если строк нету, то вписываем параметры.
    Вот как бы мне это сделать, что то ни как не могу понять.
     
    ПОМОГИТЕ ПОЖАЛУЙСТА

    Всего записей: 23 | Зарегистр. 07-08-2007 | Отправлено: 16:34 16-03-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vovaking
    А что, собственно, не работает? Не дописывает? Добавьте первой строкой #RequireAdmin.
    И новая %Path% будет доступна только при выходе и новом входе пользователя или же только после перезагрузки.

    Код:
    RegWrite("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment", "Path", "REG_EXPAND_SZ", $curpath & ";" & $addtopath)

    точка с запятой лишняя, достаточно первой в $addtopath (или уберите оттуда).

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 17:37 16-03-2014 | Исправлено: Skif_off, 17:38 16-03-2014
    RVM_aka_Vasil

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

    Код:
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
     
    Global $fExit
     
    $hWndGUI = GUICreate('My GUI', 300, 350, -1, -1, $WS_POPUP, BitOR($WS_EX_TRANSPARENT, $WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
    GUICtrlCreateLabel('Прозрачное и проницаемое изображение', 10, 10)
     
    WinSetTrans($hWndGUI, '', 155); прозрачность 0 - 255
    GUISetState(@SW_SHOWNOACTIVATE)
    HotKeySet('{Esc}', '_Exit')
     
    While Not $fExit
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    Func _Exit()
        $fExit = True
    EndFunc   ;==>_Exit

     
    Также имеется приложение - С:\прога.ехе. Как сделать так, чтобы окно из скрипта появлялось только тогда, когда приложение прога.ехе  активно и в фокусе?

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    InferNO
     
    Спасибо за примеры. С Вашей помощью справился.  
     
    Del

    Код:
     
    #include <GUIConstantsEx.au3>
     
    Example()
    Func Example()
        Local $msg
        GUICreate("Пример",250,100) ; Создаёт окно в центре экрана
        GUICtrlCreateCombo("", 5, 5)
        GUICtrlSetData(-1, "Пример1|Пример2|Пример3|Пример4|Пример5|Пример6", "Пример7") ; -1 последняя использованная переменная
        $nLabel = GUICtrlCreateLabel("Описание и пояснение",15,40)
        GUICtrlSetTip(-1,"Всплывающая подсказка")
        GUISetState() ; показывает созданное окно с установленным фокусом на Combo
            ; This will create a tooltip in the upper left of the screen
    ; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
        While 1
            $msg = GUIGetMsg()
            If $msg = $GUI_EVENT_CLOSE Then ExitLoop
        WEnd
    EndFunc
     

    Всего записей: 143 | Зарегистр. 12-09-2011 | Отправлено: 10:44 20-03-2014 | Исправлено: dinis124, 17:31 13-07-2014
    betssaf



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    может кто переведет справку на рус AutoItHelp_v3.3.10.2#

    Всего записей: 2056 | Зарегистр. 28-01-2013 | Отправлено: 04:44 24-03-2014
    Skif_off

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

    Цитата:
    я не планирую в ближайшие пол-года даже думать об этом.

    © AZJIO

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 12:01 24-03-2014 | Исправлено: Skif_off, 12:02 24-03-2014
    dfkfljhy

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте. Хочу прогу написать, не знаю как. Нужно перехватывать слова с клавиатуры(от пробела до пробела) и переставлять буквы в слове, кроме первой и последней.

    Всего записей: 4 | Зарегистр. 25-03-2014 | Отправлено: 12:03 25-03-2014
    creature_ws



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

    Всего записей: 304 | Зарегистр. 29-07-2008 | Отправлено: 13:27 25-03-2014
    dfkfljhy

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    creature_ws, ошибка  
    http://prntscr.com/33xwcu

    Всего записей: 4 | Зарегистр. 25-03-2014 | Отправлено: 13:46 25-03-2014
    sewell



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

    Цитата:
     
    Цитата:
    я не планирую в ближайшие пол-года даже думать об этом.
    © AZJIO

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

    Всего записей: 833 | Зарегистр. 06-07-2005 | Отправлено: 16:51 25-03-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Win7x64, Comodo Firewall 5.12 с проактивкой в параноидальном режиме, AutoIT 3.3.8.1, поддержка скриптов добавлена таким образом:
    все скрипты с #RequireAdmin сегодня внезапно стали вызывать алерт

    Цитата:
    C:\Windows\System32\AutoIt3.exe Доступ к COM интерфейсу C:\Windows\System32\svchost.exe

    Ничего в системе не менял, никакого нового софта, в чем может быть дело? Кто-нибудь может подтвердить?

    Прошло после перезагрузки.
     
     

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 19:46 25-03-2014 | Исправлено: Skif_off, 02:08 26-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