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

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



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

    Всего записей: 1269 | Зарегистр. 11-09-2005 | Отправлено: 11:08 27-09-2010 | Исправлено: jekov, 13:13 27-09-2010
    NIKZZZZ



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

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

     
    Примерно так, не проверял
     

    Код:
    $find = '<entry key="proxy" valueа"false"/>'
    $replace = '<entry key="proxy" value="true"/>'
    $filename = "D:\Progs\AutoIT\crta\test.xml"  
    $iEncoding=FileGetEncoding($filename)
    $sBuf=FileRead($filename,$iEncoding)
    $sBuf=StringReplace($sBuf,$find,$replace)
    $hf=FileOpen($filename,2+$iEncoding)
    FileWrite($hf,$sBuf)
    FileClose($hf)

     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 13:24 27-09-2010
    jekov



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

    Код:
    $find ='<entry key="proxy" value="false"/>'
    $replace =[code]entry key="proxy" value="true"/>'
    $filename = @AppDataDir&'\VitySoft\FRD\frd.xml'
    $iEncoding=FileGetEncoding($filename)
    $sBuf=FileRead($filename,$iEncoding)
    $sBuf=StringReplace($sBuf,$find,$replace)
    $hf=FileOpen($filename,2+$iEncoding)
    FileWrite($hf,$sBuf)
    FileClose($hf)

     
    Да нееет!Удаляет все стринги начин.с <,кроме 2 верних да и кодировку меняет в ANSI

    Всего записей: 1269 | Зарегистр. 11-09-2005 | Отправлено: 14:07 27-09-2010 | Исправлено: jekov, 14:12 27-09-2010
    NIKZZZZ



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

    Цитата:
    Да нееет!Удаляет все стринги начин.с <,кроме 2 верних да и кодировку меняет в ANSI

    Моя ошибка

    Код:
    $filename = "z.hml"
    $find = '<entry key="proxy" value="false"/>'
    $replace = '<entry key="proxy" value="true"/>'
    $iEncoding=FileGetEncoding($filename)
    $hf=FileOpen($filename,$iEncoding)
    $sBuf=FileRead($hf)
    FileClose($hf)
    $sBuf=StringReplace($sBuf,$find,$replace)
    $hf=FileOpen($filename,2+$iEncoding)
    FileWrite($hf,$sBuf)
    FileClose($hf)


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 14:12 27-09-2010 | Исправлено: NIKZZZZ, 15:28 27-09-2010
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jekov,
    У меня так работает:
    Код:
    $sFileName = 'D:\Progs\AutoIT\crta\test.xml'
    $sFind = '<entry key="proxy" valueа"false"/>'
    $sReplace = '<entry key="proxy" value="true"/>'
     
    $iCod = FileGetEncoding($sFileName)
    $hFile = FileOpen($sFileName, $iCod)
    $sText = FileRead($hFile)
    FileClose($hFile)
    $sText = StringReplace($sText, $sFind, $sReplace)
    $hFile = FileOpen($sFileName, $iCod + 2)
    FileWrite($hFile, $sText)
    FileClose($hFile)

    NIKZZZZ,
    У Вас, по-моему, здесь ошибка:
    Цитата:
    $iEncoding=FileGetEncoding($filename)  
    $sBuf=FileRead($filename,$iEncoding)


    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 15:35 27-09-2010 | Исправлено: madmasles, 15:41 27-09-2010
    jekov



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    madmasles
    Ваш скрипт меняет стринги правильно однако и кодировку изменяет в ANSI,что совсем нежелательно.
    А почему $iCod + 2 в строке FileOpen,разъясните новичку,пожалуйста,а то в AutoIt3Help-е нету такова.Спасибо!

    Всего записей: 1269 | Зарегистр. 11-09-2005 | Отправлено: 15:59 27-09-2010 | Исправлено: jekov, 16:31 27-09-2010
    NIKZZZZ



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

    Цитата:
    в AutoIt3Help-е нету такова

    Почему нет? В справке по FileOpen написано, 2 - открытие файла на запись с перезаписью содержимого.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:03 27-09-2010
    jekov



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

    Всего записей: 1269 | Зарегистр. 11-09-2005 | Отправлено: 16:13 27-09-2010 | Исправлено: jekov, 16:26 27-09-2010
    madmasles

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

    Цитата:
    Ваш скрипт меняет стринги правильно однако и кодировку изменяет в ANSI

    Цитата:
    Скрипт NIKZZZZ работает
    У нас два абсолютно одинаковых скрипта.
     

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 16:39 27-09-2010
    jekov



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    madmasles
    прошу прощения,и Ваш действительно работает.Моя ошибка была в компиляции.Спасибо!

    Всего записей: 1269 | Зарегистр. 11-09-2005 | Отправлено: 17:27 27-09-2010
    AZJIO



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

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 13:16 28-09-2010
    monsoon



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

    Всего записей: 1255 | Зарегистр. 30-01-2003 | Отправлено: 14:35 30-09-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    monsoon
    Я уже хотел к следующему этапу переходить  от этого. Регуляторы вкл/выкл галочкой.
    Придётся переделывать типа так но как то переключатель не работает.
    Сегодня комп делал, на нём вместо выключения в канале записи ставится галочка выбора одного из регуляторов и Mute там не влияет, возмоно только комутировать регулятором Volume 0 или 100. Универсальность ускользает.
     
    Обновил autoit.xml для Notepad++. Файл автоподстановки. Добавил наиболее распостранённые параметры в команды, чтобы легко вспомнить синтаксис.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 00:12 01-10-2010 | Исправлено: AZJIO, 21:00 03-10-2010
    levelxxx

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем добрый день.
    Возникла такая проблема. Есть набор архивов. В каждом архиве один файл с произвольным именем (текстовый).
    Необходимо, чтобы архив распаковывался в файл, с именем архива.
    Т.е. из archive.zip (с вложенным текстовым файлом) получался файл archive.
     
    Использую консольную версию 7-zip.

    Код:
    ; отрезаем расширение архива            
                $sMyfile = StringTrimRight($aFiles[$ii], $iExt)
                ; строка параметров для распаковки 7zip.
                $sSo = " -so> " & '"' & $sMyfile & '"'
                $sUnpack = "x " & '"' & $aFiles[$ii] & '"' & $sSo
                MsgBox (0, "", $sUnpack)
                $val = ShellExecuteWait($s7z, $sUnpack, "", "", @SW_HIDE)
                MsgBox (0, "", $val)
     

    $iExt - для zip = 4, для 7z=3
    $s7z - путь к 7za.exe
     
    '"' - это ' " '
     
    7z возвращает код 7 - Command line error
    Если использовать просто $sUnpack = "x " & '"' & $aFiles[$ii] (без добавления & $sSo) - происходит обычная распаковка.
     
    При запуске из bat файла:
    7za x "E:\projects\sourse\01.zip" -so>"E:\projects\sourse\Doc"
    все отрабатывается нормально.

    Всего записей: 10 | Зарегистр. 18-11-2008 | Отправлено: 12:25 05-10-2010 | Исправлено: levelxxx, 12:36 05-10-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    levelxxx
    Попробуй 7zip_udf
    или
    $val = RunWait(@ComSpec & ' /c '&$s7z&' x "'&$aFiles&'" -so > "'&$sMyfile&'"', '', @SW_HIDE)

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 13:39 05-10-2010 | Исправлено: AZJIO, 14:16 05-10-2010
    levelxxx

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Спасибо.
    С @ComSpec работает.
    7zip_udf тоже посмотрю.

    Всего записей: 10 | Зарегистр. 18-11-2008 | Отправлено: 20:49 05-10-2010
    AZJIO



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

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 00:42 07-10-2010
    LOKKY009

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    НУ ЗДРАВСТВУЙ МИР !! ВКОТОРЫЙ РАЗ СКАЖУ Я  
    сегодне вам будет представленно то что я задолбался искать в интернете но таки нашел  
    речь пойдет а записи и чтении из порта в порт !  
    Насколько вам известно сраная хрюша да и темпаче виста  недадут вам этого сделать напрямую да и на кривую тож не оченьто дают  
    Для этого нам нужно заглянуть на сайт разработчика чудо дллок  кому будет интересно там и сорцы лежат  и ебсественно скачать архив с 1м файлом  inpout32.dll остальное шняга она нам не нужна...
    ===========================================================
    сайт разработчика
    http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html
    ===========================================================
    работать с этой дллкой может даж ребенок тк там всего 2 функциии (остальные см в описании ) прочесть и записать  
     
    ==========================================================
    пример для работы с лпт портом  
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #EndRegion
    #include <GUIConstants.au3>
    #include <string.au3>
    $op = DllOpen("inpout32.dll")
    Opt("GUIOnEventMode", 1)
    Global $STOP = True
    global $portdata = 888
    Global $cont_data = 890
    $DATA=0
    $FORM_MAIN = GUICreate("ПОРТ", 400, 160, 10, 10, -1, 4)
    WinSetOnTop ( "ПОРТ", "", 1 )
    GUISetOnEvent($GUI_EVENT_CLOSE, "WindowCloseClicked") ; <<<переход на  функцию  закрытия окна
    GUICtrlCreateLabel("Порт = 888 или 378h",10,20,110,20)
    GUICtrlCreateLabel("Данные = ",125,20,80,20)
    $data1 = GUICtrlCreateLabel( "", 180,20, 70, 20)
    GUICtrlCreateLabel("Контроль = 890 или 37Ah",10,45,135,20)
    $data2 = GUICtrlCreateLabel( "", 150,45, 70, 20)
    GUICtrlCreateLabel("Порт = 888 или 378h",10,65,110,20)
    $data_in = GUICtrlCreateInput("",125,63,40,20)
    GUICtrlCreateButton("ok",170,63,40,20)
    GUICtrlSetOnEvent(-1,"verndat1")
    GUICtrlCreateButton("СТРОБ",170,83,80,20)
    GUICtrlSetOnEvent(-1,"STROBS")
     
    GUISetState(@SW_SHOW, $FORM_MAIN)
    Do
    GUISetOnEvent($GUI_EVENT_CLOSE, "WindowCloseClicked")
    Update()
    Sleep(100)
    Until $STOP = False
    While (1)
    Update()
    WEnd
    Func WindowCloseClicked()
    DllClose($op)
    Exit
    EndFunc
    Func Update()
    vizov($portdata)
    GUICtrlSetData ($data1,$DATA)
    vizov($cont_data)
    GUICtrlSetData ($data2,$DATA)
    EndFunc
    ;~ ===ПОЛУЧЕНИЕ ВВЕДЕННЫХ ДАННЫХ +ЗАШИТА ОТ ДИБИЛА =======
    Func verndat1()
    $data_in2 = GUICtrlRead ( $data_in , 0 )
    if $data_in2 = "" Then
    MsgBox(0,"ОШИБКА","ДАННЫХ НЕТ")
    Update()
    Else
    if $data_in2  < 256  Then
    AZP_V_PORT($portdata,$data_in2)
    Else
    MsgBox(0,"ОШИБКА","МАКСИМАЛЬНО ДОПУСТИМОЕ ЧИСЛО 255")
    Update()
    EndIf
    EndIf
    Update()
    EndFunc
    ;========ОТПРАВКА СТРОБА===================================
     
    FUNC STROBS()
    $D6 = 205
    AZP_V_PORT($cont_data,$D6) ;отправка СТРОБА
    Sleep(50)
    AZP_V_PORT($cont_data,204) ;возврат на исходную
    EndFunc
    ;~=======================================================
    ;~ ================== ЧТЕНИЕ ИЗ ПОРТА ========================
    FUNC vizov($d3)
    $result = DllCall($op, "short", "Inp32", "short",$d3)
    $DATA = $result[0]
    EndFunc
    ;~========================================================
    ;~===================== ЗАПИСЬ В ПОРТ========================
    Func AZP_V_PORT($D4,$D5);ГДЕ $D4 ПОРТ  $D5 ДАННЫЕ
    DllCall($op, "short", "Out32", "short",$D4, "short",$D5)
    EndFunc
    ;~===========================================================
    ИСПОЛЬЗОВАНИЕ В КОМЕРЧИСКИХ ЦЕЛЯХ МОЖЕТ БЫТЬ НАКАЗУЕМО РЕЛЬСОМ ПО ИЛИ В    
    ;============================================================

    Всего записей: 1 | Зарегистр. 07-10-2010 | Отправлено: 11:22 07-10-2010 | Исправлено: LOKKY009, 11:26 07-10-2010
    gregaz



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

    Всего записей: 79 | Зарегистр. 02-06-2007 | Отправлено: 16:37 09-10-2010 | Исправлено: gregaz, 18:14 09-10-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gregaz
    Проверил пример используя _ReplaceStringInFile

    Код:
    #include <File.au3>
    #include <Constants.au3>
     
    $sFileName = "D:\Фильмы\name.AVI"
    $hFile=FileOpen($sFileName,0)
    FileSetPos($hFile,1169905870,$FILE_begin)
    $sFragment = FileRead($hFile)
    MsgBox(0,"$sFragment",$sFragment)
    FileClose($hFile)
     
    _ReplaceStringInFile($sFileName,"-DEV","-DiV")
     
    $hFile=FileOpen($sFileName,0)
    FileSetPos($hFile,1169905870,$FILE_begin)
    MsgBox(0, "", "Позиция чтения: " & FileGetPos($hFile) & @CRLF & "Данные файла: " & @CRLF & FileRead($hFile))
    FileClose($hFile)

    Я всё равно от этой функции не ждал эффекта, так как посмотрел её содержимое и там используются те же FileRead, FileWrite да ещё с разбором файла построчно в массив. А мой пример с _ReplaceStringInFile выдал ошибку памяти "Error allocating memory". Мне хотелось бы сделать что-то подобное "патч бинарников", к примеру iso, чтобы не распаковывая и не открывая в память выполнить замену по Offset или по поиск.замена данных.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 17:37 09-10-2010 | Исправлено: AZJIO, 17:43 09-10-2010
       

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