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

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



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

    Всего записей: 4415 | Зарегистр. 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)

    Всего записей: 4415 | Зарегистр. 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 этот же гигабайтный, заменил в конце файла цифру, нажал сохранить, операция выполнилась мгновенно, без перезаписи всего файла. Проверил сохранение переоткрытием файла.

    Всего записей: 4415 | Зарегистр. 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 или по поиск.замена данных.

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



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

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

    Так пользуй WinApi функции, для бинарников оптимально.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 19:51 09-10-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    А что за функция?
     
    Кто знает как скрыть элемент в ListView? Вот моя попытка:  
    If ControlListView($Gui, '', 'SysListView321', 'GetText', $i, 1)='p-' Then GUICtrlSetState($aIPPP[$i][0], 32)
    или так
    If $aIPPP[$i][2]='p-' Then GUICtrlSetState($aIPPP[$i][0], 32)
    Но скрыть получается только весь ListView как элемент, а не элементы в нём.
     
    Пока решил проблему сортировкой GUICtrlRegisterListViewSort

    Всего записей: 4415 | Зарегистр. 03-05-2006 | Отправлено: 20:18 10-10-2010 | Исправлено: AZJIO, 22:08 10-10-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 20:18 10-10-2010
    Цитата:
    как скрыть элемент в ListView?

    А зачем, почему его просто не удалить, или опусташить?

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:31 10-10-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот утилитка Connection (обновлено 3 раза)
    По небольшому количеству элементов можно пересоздать ListView, но я пока ограничился сортировкой. Мне важно чтоб выделенные цветом итемы скучковались в видимой области, чтоб не прокручивать длинный список. Я подумал не плохо было бы комутировать скрыть/показать, а не удалить/пересоздать.

    Всего записей: 4415 | Зарегистр. 03-05-2006 | Отправлено: 00:51 11-10-2010 | Исправлено: AZJIO, 06:56 12-10-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO
    Нет, скрыть элемент в ListView так просто нельзя, только удаление/очищение.

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:57 11-10-2010
    Zloy_Gelud



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

    Не подскажите, как изменить указанный цвета в объекте Tab?

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



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

    Цитата:
    А что за функция?  

    _WinAPI_CreateFile, _WinAPI_ReadFile  и т.п.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 14:49 11-10-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud
    Такое решение пойдёт?

    Код:
    GUICreate('Спрятать вкладки',310,155)
    GUISetBkColor (0xFF0000)
     
    GUICtrlCreateTab (0,0, 270,180,0x0100+0x0002+0x0004)
     
    $tab0=GUICtrlCreateTabitem ("tab0")
    GUICtrlCreateLabel('', 0, 0, 270, 165)
    GUICtrlSetState(-1, 128)  
    GUICtrlSetBkColor (-1, 0xFF0000 )
     
    $xz=GUICtrlCreateButton ("X", 285,5,21,21,0x0040)
    $vk2=GUICtrlCreateButton ("vk2", 40,10,29,21,0x0040)
    GUICtrlCreateButton ("vk1", 10,10,29,21)
    GUICtrlSetState(-1, 128)  
     
    $tab1=GUICtrlCreateTabitem ("tab0")
    GUICtrlCreateLabel('', 0, 0, 270, 165)
    GUICtrlSetState(-1, 128)  
    GUICtrlSetBkColor (-1, 0x00FF00 )
     
    $vk1=GUICtrlCreateButton ("vk1", 10,10,29,21,0x0040)
    GUICtrlCreateButton ("vk2", 40,10,29,21)
    GUICtrlSetState(-1, 128)  
     
    GUICtrlCreateTabitem ("")   ; конец вкладок
    GUISetState ()
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg =$vk2
                GUICtrlSetState($tab1,16)
                GUISetBkColor (0x00FF00)
            Case $msg =$vk1
                GUICtrlSetState($tab0,16)
                GUISetBkColor (0xFF0000)
            Case $msg = -3 Or $msg = $xz
                ExitLoop
        EndSelect
    WEnd
     
     
    ______________________
    О, как раз тема на autoit-script.ru по коннекту...
    Добавил себе закрытие порта TCPCloseSocket($iSocket), а то иконка ftp-сервера подключения меняет статус пока до конца списка не проверит.
    Немного удивляет, что некоторые ip конектятся до 15 сек, хотя время пинга установлено 250мс, а время коннекта по умолчанию 100 - Opt("TCPTimeout", 100) - на офсайте пишут это баг и будет исправлен.
    Обновил версию "Connection" на 4 поста выше, или скомпилированный EXE с исходником.
    Добавил генерацию списка, открытие любого списка, drag-and-drop, статистику.

    Всего записей: 4415 | Зарегистр. 03-05-2006 | Отправлено: 15:34 11-10-2010 | Исправлено: AZJIO, 07:22 12-10-2010
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возможно ли сделать ГУИ прозрачным кроме объектов Label?

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 16:40 12-10-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud
    Тоже хотелось бы найти такую возможность

    Всего записей: 4415 | Зарегистр. 03-05-2006 | Отправлено: 17:37 12-10-2010
    asdf8

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

    Цитата:
    Тоже хотелось бы найти такую возможность

     
    Можно поискать в шапке :
    Цитата:
    Пример отображения только элементов GUI (без самой оболочки)

     

    Всего записей: 92 | Зарегистр. 06-05-2007 | Отправлено: 18:22 12-10-2010
    Zloy_Gelud



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

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 18:51 12-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