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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    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

    Всего записей: 4409 | Зарегистр. 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, но я пока ограничился сортировкой. Мне важно чтоб выделенные цветом итемы скучковались в видимой области, чтоб не прокручивать длинный список. Я подумал не плохо было бы комутировать скрыть/показать, а не удалить/пересоздать.

    Всего записей: 4409 | Зарегистр. 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, статистику.

    Всего записей: 4409 | Зарегистр. 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
    Тоже хотелось бы найти такую возможность

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asdf8
    Примеры есть (он же на офсайте), но как всегда в них что-то не доделано или замудрёно. Чтоб уж до конца доделать вот пример ProgAndy переделал. По легче поддаётся редактированию:

    Код:
    #include <GUIConstants.au3>
    #include <Constants.au3>
    #include <WindowsConstants.au3>
    #include <WINAPI.au3>
     
    $gui = GUICreate("trans", 300, 230, -1, -1, -1, $WS_EX_LAYERED)
    _WinAPI_SetLayeredWindowAttributes($gui, 0x010101)
    $lg=GUICtrlCreateLabel("За этот текст можно тащить GUI", 0, 0, 200, 17, -1, $GUI_WS_EX_PARENTDRAG)
    GUICtrlSetBkColor(-1, 0xACCDEF)
    GUICtrlSetState(-1, 32) ;скрыть 32
    $checkTrans = GUICtrlCreateCheckbox("Цвет прозрачности 0xABCDEF или 0x010101", 10, 30, 280, 17)
    GUICtrlSetBkColor(-1, 0xACCDEF)
    $checkBorder = GUICtrlCreateCheckbox("POPUP-стиль", 10, 50)
    $x= GUICtrlCreateButton("x", 280, 2, 18, 20)
    GUICtrlSetState(-1, 32)
     
    $layButt = GUICtrlCreateButton("Сообщение", 110, 80, 80)
    GUISetBkColor(0xABCDEF)
     
    GUICtrlCreateLabel("Прозрачность GUI", 10, 150)
    $slidTrans = GUICtrlCreateSlider(10, 170, 200, 30)
    GUICtrlSetBkColor(-1, 0xABCDEF)
    GUICtrlSetLimit($slidTrans, 255, 0)
    GUICtrlSetData(-1, 255)
     
    GUISetState()
     
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = -3 Or $msg =  $x
                Exit
     
            Case $msg = $layButt
                Dim $transcolor, $alpha
                $info = _WinAPI_GetLayeredWindowAttributes($gui, $transcolor, $alpha)
                MsgBox(0, 'Многослойный GUI', "Информация об окне"& @CRLF & _
                        "Цвет прозрачности: " & $transcolor & @CRLF & _
                        "Глубина прозрачности: " & $alpha & @CRLF & _
                        "LWA_COLORKEY: " & (BitAND($info, $LWA_COLORKEY) = $LWA_COLORKEY) & @CRLF & _
                        "LWA_ALPHA: " & (BitAND($info, $LWA_ALPHA) = $LWA_ALPHA))
     
            Case $msg = $checkTrans Or $msg = $slidTrans
                If BitAND(GUICtrlRead($checkTrans), $GUI_CHECKED) = $GUI_CHECKED Then
                    _WinAPI_SetLayeredWindowAttributes($gui, 0xABCDEF, GUICtrlRead($slidTrans))
                Else
                    _WinAPI_SetLayeredWindowAttributes($gui, 0x010101, GUICtrlRead($slidTrans))
                EndIf
     
            Case $msg = $checkBorder
                If BitAND(GUICtrlRead($checkBorder), $GUI_CHECKED) = $GUI_CHECKED Then
                    GUISetStyle($WS_POPUP, -1, $gui)
                    GUICtrlSetState($x, 16)
                    GUICtrlSetState($lg, 16)
                Else
                    GUISetStyle($GUI_SS_DEFAULT_GUI, -1, $gui)
                    GUICtrlSetState($x, 32)
                    GUICtrlSetState($lg, 32)
                EndIf
        EndSelect
    WEnd

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Не совсем понял, что-же надо?
     
    Если надо на полностью прозрачной форме получить непрозрачный текст,
    тогда попробуй так:
     

    Код:
     
    _textOSD('This the OSD',5,32,700,"Tahoma",0xFF0080)
    Sleep(3000)
    _textOSD('')
     
    Func _textOSD($sString, $iPos = -1, $iSize = 26, $iWeight = 600, $sFontName = "Tahoma", $Color = 0x00FF00)
        ;$iPos = 1 | 2 | 3
        ;$iPos = 4 | 5 | 6
        ;$iPos = 7 | 8 | 9
        Local $isSize, $hGuiSwitch, $dll, $hMain, $hLabel, $iStyle, $iHW
        Global $hMain_OSD, $hLabel_OSD
        If $sString='' Then
            If WinExists($hMain_OSD) Then
                $hGuiSwitch = GUISwitch($hMain_OSD)
                GUIDelete($hMain_OSD)
                GUISwitch($hGuiSwitch)
                Return
            EndIf
        Else
            If $iPos = -1 Then
                $hGuiSwitch = GUISwitch($hMain_OSD)
                GUICtrlSetData($hLabel_OSD,$sString)
                GUISwitch($hGuiSwitch)
            Else
                $hMain = GUICreate("", 0, 0, 0, 0, BitOR(0x80000000, 0x20000000), BitOR(0x00000080, 0x00000020))
                $hGuiSwitch = GUISwitch($hMain)
                GUISetFont($iSize, $iWeight, -1, $sFontName, $hMain)
                $hLabel = GUICtrlCreateLabel($sString, 0, 0)
                $isSize = ControlGetPos($hMain, "", $hLabel)
                GUIDelete($hMain)
                
                Switch $iPos
                    Case 1
                        $iHW=30
                        $iStyle=0x0000
                    Case 2
                        $iHW=30
                        $iStyle=0x01
                    Case 3
                        $iHW=30
                        $iStyle=0x0002
                    Case 4
                        $iHW=@DesktopHeight/2-$isSize[3]/2
                        $iStyle=0x0000
                    Case 5
                        $iHW=@DesktopHeight/2-$isSize[3]/2
                        $iStyle=0x01
                    Case 6
                        $iHW=@DesktopHeight/2-$isSize[3]/2
                        $iStyle=0x0002
                    Case 7
                        $iHW=@DesktopHeight-$isSize[3]-40
                        $iStyle=0x0000
                    Case 8
                        $iHW=@DesktopHeight-$isSize[3]-40
                        $iStyle=0x01
                    Case 9
                        $iHW=@DesktopHeight-$isSize[3]-40
                        $iStyle=0x0002
                    Case Else
                        $iHW=@DesktopHeight/2-$isSize[3]/2
                        $iStyle=0x01
                EndSwitch
                
                $hMain_OSD = GUICreate("", @DesktopWidth, $isSize[3]+4, 0, $iHW, 0x80000000, BitOR(0x00000080, 0x00000008, 0x00080000))
                GUISwitch($hMain_OSD)
                $hLabel_OSD = GUICtrlCreateLabel($sString, 20, 0, @DesktopWidth-40, $isSize[3]+4, $iStyle)
                GUICtrlSetColor($hLabel_OSD, $Color)
                GUICtrlSetFont($hLabel_OSD, $iSize, $iWeight, -1, $sFontName)
                GUISetBkColor(0xABCDEF)
                GUISetState(@SW_SHOW, $hMain_OSD)
                $dll = DllOpen("user32.dll")
                DllCall($dll, "bool", "SetLayeredWindowAttributes", "hwnd", $hMain_OSD, "dword", 15715755, "byte", 255, "dword", 0x03)
                DllClose($dll)
                GUISwitch($hGuiSwitch)
            EndIf
        EndIf
    EndFunc   ;==>_textOSD
     
     

    Всего записей: 92 | Зарегистр. 06-05-2007 | Отправлено: 00:42 13-10-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asdf8
    Полностью прозрачная форма есть в предыдущем примере. Кроме этого там есть стили с окном и без окна, но с перетаскиваемым лейблом и простейшая функция, которая просто указывает цвет, который делать прозрачным. Больше и ничего не надо пока.  Было бы ещё удобно указать координаты области, которую делать прозрачной. Но и это решаемо вставкой фонового лейбла с правильным цветом.
     
    Если кому интересно - диалог About - в архиве 4 примера с вкладками и авто-прокруткой текста.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 07:00 13-10-2010 | Исправлено: AZJIO, 07:02 13-10-2010
    crotoff

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите, можно ли написать скрипт, который бы работал в фоновом режиме, не забирая на себя  фокус? мне нужно обработать несколько тысяч изображений программой, не поддерживающей пакетный режим. С чего начать? какие разделы справки изучить?  
     
    Добавлено:
    Или чтоб не мучаться - может кто накорябает скрипт для обработки произвольного файла с заданным именем, а я этот участок кода растиражирую, меняя наменования файлов.
    Программа SAR если что  
     1) открыть C:\Capture\1.png
     2) выбрать в меню Blur/sharpen "poisson sharpener"
     4) Ok (изображение пошарпится)
     5) сохранить результат File "save as" C:\Capture\1-1.png
     6) Ok (изображение сохранится)
     

    Всего записей: 961 | Зарегистр. 17-04-2007 | Отправлено: 11:49 13-10-2010 | Исправлено: crotoff, 11:55 13-10-2010
    frb_noname

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Через скрипт Autoit заношу данные в БД SQLite на русском языке. ОС-WinXP
    Когда вытягиваю данные из БД в линуксе - отображаются кракозяблы. (Тоже самое, если открыть в Винде базу руками)
    Подскажите как правильно занести и потом вытянуть данные из БД, чтобы они были читабельными.

    Всего записей: 47 | Зарегистр. 03-11-2008 | Отправлено: 14:52 13-10-2010 | Исправлено: frb_noname, 15:08 13-10-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    crotoff
    Долго я думал чтоб понять, что нужно... Значит скрипт автокликер? В фоновом режиме легко работать с кнопками, инпутами, но не с элементами в списке / дереве. Похоже нужно делать скрипт с таким алгоритмом:
    1. Установить координаты окна (чтоб попадать кликами мышью)
    2. Записать макрос кликов мыши (есь такой инструмент в полной версии SciTE)
    3. Продумать последовательность выполнения (не пойму как открыть новый файл, может есть ком-строка у SAR?)
    А ещё есть AutoClickExtreme, может им тебе будет легче решить эту задачу?
     
    frb_noname
    Попробуй этот пример

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 20:13 13-10-2010
    crotoff

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    вобщем попытался записать ходы макрогенератором. Вот что получилось:
    Подробнее...
     
    Скрипт работает через раз, видимо SAR запоминает последнюю активную папку, а если закрыть и снова открыть - спотыкается. Как ему скормить имя и путь файла на входе и выходе?
    и как бы теперь избавиться от указания размера в названии окна?  По идентификатору или ещё как?
     
    Добавлено:
    Автокликер установил - но он открывает файло через графическую форму, привязываясь к координатам, а мне надо менять наименования файлов в диалогах открытия и сохранения

    Всего записей: 961 | Зарегистр. 17-04-2007 | Отправлено: 21:27 13-10-2010 | Исправлено: crotoff, 23:35 13-10-2010
    beseda2408

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята подскажите пожалуйста следующее.
    Необходимо настроить, чтобы отправлялись e-mail в пределах локальной сети. Я пользуюсь стандартной функцией в которую подставляю свои данные. Но функция постоянно возвращает ошибку 50 (Cannot open SMTP session).
    До этого пользовался другими программами, которые отправляют почту, все отлично работало, письма ходили.
    В моем случае сервер не требует авторизации.

    Код:
     
    #include <INet.au3>
     
    $s_SmtpServer = "10.3.1.4"
    $s_FromName = "FromName"
    $s_FromAddress = "source@mydomain.ru"
    $s_ToAddress = "destination@mydomain.ru"
    $s_Subject = "Subject"
    Dim $as_Body[2]
    $as_Body[0] = "Testing the new email udf"
    $as_Body[1] = "Second Line"
    $Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body)
    $err = @error
    If $Response = 1 Then
        MsgBox(0, "Success!", "Mail sent")
    Else
        MsgBox(0, "Error!", "Mail failed with error code " & $err)
    EndIf
     

    Всего записей: 5 | Зарегистр. 12-12-2008 | Отправлено: 05:22 14-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