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

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Друзья, кто может уже решал такую задачу поделитесь примерным скриптом.
    Задача : Есть файлик от скада запаролееный. Вылетает окно "Пароль" .Нужен скрипт с перебором от 0 до 99999 чтобы вставлял в форму и нажимал Enter. Если пароль подойдёт он просто откроется. Я думаю надо 5 вложенных циклов. Может кто то уже подобное писал?

    Всего записей: 31 | Зарегистр. 25-02-2005 | Отправлено: 09:19 16-11-2017
    U235

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

    Цитата:
    Я думаю надо 5 вложенных циклов.  

    А я думаю что достаточно одного.

    Всего записей: 884 | Зарегистр. 14-12-2005 | Отправлено: 23:06 16-11-2017
    Kilia04

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
    Помогите со скриптом. Сам не разбирусь
    Есть скрипт который отправляет на печать через foxitreader, а затем удаляет этот файл из папки. Проблема в том что FoxitReader открывает окно и не закрывает после того как напечатает. Из-за этого файлу не удалиться. Нашел в инете код и добавил:  
     
    ;Закрываем все окна FoxitReader
       While 1
          Sleep(100)
          If ProcessExists("FoxitReader.exe") Then
            ProcessClose("FoxitReader.exe")
          Else
            ExitLoop
          EndIf
       WEnd
     
    Но он не закрывает окно в составе моего кода. Если отдельно проверить работоспособность то все ок...
     
    ;Автоматическая печать PDF-файлов, появляющихся в определенной папке
     
    ;Папка, в которой скрипт ждет PDF-файлы (к этой папке (папкам) д.б. дан доступ по сети)
    ;$gWatchFolder = "d:\pdfPrint\"
    $gWatchFolder = "\\Mac\Home\Documents\pdfPrint\"
     
    ;Основной цикл
    While true
       Local $search = FileFindFirstFile($gWatchFolder & "*.pdf")
       If @error Or ($search = -1) Then ContinueLoop
       Local $file = FileFindNextFile($search)
       PrintFile($gWatchFolder & $file)
       Sleep(1000)
    WEnd
     
    ;Функция печати конкретного pdf-файла
    Func PrintFile($pFileName)
     
       $pNewFileName = StringReplace( $pFileName, ".pdf", "_.pdf")
     
       ;Ищем Фоксит ридер
       If FileExists("c:\Program Files\Foxit Software\Foxit Reader\FoxitReader.exe") Then
          $s = """c:\Program Files\Foxit Software\Foxit Reader\FoxitReader.exe"" /p """ & $pNewFileName & """"
       ElseIf FileExists("c:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe") Then
          $s = """c:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"" /p """ & $pNewFileName & """"
       Else
          MsgBox(4096, "Не установлена программа Foxit Reader!", "Не установлена программа Foxit Reader")
          Exit
       EndIf
       ;Попытаемся переимновать файл, чтобы определить, дозаписан ли он до конца.
       If FileMove($pFileName, $pNewFileName) Then
     
          ;запускаем печать pdf через Фоксит Ридер и ждём, когда процесс завершится
          Local $PID = Run($s)
          ProcessWaitClose($PID)
     
          ;Закрываем все окна FoxitReader
       While 1
          ;Sleep(100)
          If ProcessExists("FoxitReader.exe") Then
            ProcessClose("FoxitReader.exe")
          Else
            ExitLoop
          EndIf
       WEnd
     
          ;удаляем файл, чтобы он повторно не печатался
          If Not FileDelete($pNewFileName) Then
             msgbox(1,"","Не удалось удалить файл " & $pNewFileName & " ! Зовите Илью!")
             Exit
          EndIf
     
       EndIf
     
    EndFunc
     
    Помогите поправить код чтобы после печати FoxitReader закрывался

    Всего записей: 103 | Зарегистр. 15-01-2014 | Отправлено: 14:21 17-11-2017
    Turkish88



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравствуйте нашел в просторах такой скрипт
     
    #include<WinAPI.au3>
    #include<StructureConstants.au3>
    #include<WindowsConstants.au3>
    OnAutoItExitRegister("__Exit")
    Global $trTime
    $hStub=DllCallbackRegister("__Event","long","int;wparam;lparam")
    $hModule=_WinAPI_GetModuleHandle(0)
    $hHookM=_WinAPI_SetWindowsHookEx($wh_mouse_ll,DllCallbackGetPtr($hStub),$hModule)
    While 1
        Sleep(200)
        $trTime+=200
        If $trTime=(5*60*1000) Then
            $trTime=0
            ProcessWaitClose(Run("start.bat",'',@SW_HIDE))
        EndIf
    WEnd
    Func __Event($nCode,$wPar,$lPar)
        If $nCode<0 Then Return _WinAPI_CallNextHookEx($hHookM,$nCode,$wPar,$lPar)
        Local $tKEY=BitAND($wPar,0xFFFF)
        If $tKEY=$wm_mousemove Then
            $trTime=0
            ProcessClose("start.exe")
        EndIf
    EndFunc
    Func __Exit()
        _WinAPI_UnhookWindowsHookEx($hHookM)
        DllCallbackFree($hStub)
    EndFunc
     
    запустил скрипт для теста и отошел ненамного, по приходу увидел целую кучу процессов старт в диспетчере задач.
    Что нужно поправить чтобы не было множественных повторений

    Всего записей: 2009 | Зарегистр. 30-04-2007 | Отправлено: 16:16 17-11-2017
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kilia04
    Если правильно понял, новые версии Foxit Reader в любом случае открывают своё окно, если только пробовать задать Sleep() с более-менее приемлемым числом (например, взять файл потяжелее и засечь время).  
    А зачем вы каждый раз ищете Foxit Reader? Скрипт же запущен и висит в памяти - один раз достаточно найти. Как-то вот так:
     
    Наверное, есть смысл поискать другие утилиты либо курить Print Spooler API.
     
    Здесь смотрели? В SumatraPDF как-то почеловечнее сделали, а касательно

    Цитата:
    Печатает раза в два дольше по сравнению с FoxitReader'ом.

    SumatraPDF, кажется, в любом случае отправляет на печать изображение.
     
    Код таки лучше в соответствующий тег заворачивать...

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 18:49 17-11-2017 | Исправлено: Skif_off, 18:57 17-11-2017
    Kilia04

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off Да я понял что затык в том что в новых Foxit reader или Adobe acrobat окно приложения после печати не закрывается и мой скрипт думает что печать еще не закончена, а из-за этого не переходит к следующим действиям. В общем решил проблему установкой Foxit reader 6 версии=)

    Всего записей: 103 | Зарегистр. 15-01-2014 | Отправлено: 21:30 17-11-2017
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Может кому пригодится скрипт автоподключения интернета через PPPoE

    Код:
    Run("rasphone.exe")
     
    $hWnd = WinWait("[CLASS:#32770]", "Выберите сетевое подключение:", 5)
    If Not $hWnd Then
        MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
        Exit
    EndIf

     
    $sString = ControlCommand($hWnd, "", "ComboBox1", "SelectString", "Высокоскоростное подключение")
    ControlClick($hWnd, '', '[CLASS:Button; INSTANCE:1]', "main")

    если у кого есть решения cmd я не против, но не нашёл работающего варианта, несмотря на то что авторы твердили что у них работает. Изучив ком-строку rasphone.exe я тоже не увидел там ключей, для автоматизации автоподключения.

    Всего записей: 4412 | Зарегистр. 03-05-2006 | Отправлено: 07:02 18-11-2017 | Исправлено: AZJIO, 07:03 18-11-2017
    Kilia04

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Парни а возможно ли сделать подобное:
    В общем есть принтер, который установлен на Win XP и дрова есть только для XP. Задача печатать с других машин Win10 в локальной сети. Мне удалось настроить печать из папки Print с помощью Foxit reader и скрипта выше, который отслеживает появление pdf в определенной папке. На втором компе добавил принтер Foxit pdf creator, который в автомате сохраняет файл в pdf в папке Print на win XP.
     
    Принтер этот умеет печатать из лотка 1 - формат А3 и лотка ручной подачи - формат А4. Мне удалось продублировать принтер в устройствах и принтерах с разными настройками. Соответственно получил Printer-A4 и Printer-A3. Добавил второй скрипт- программу которая ждет файлы в папке Print/A3 и отправляет в печать на принтер Printer-A3. Первый же скрипт-программа ищет файлы в папке Print/A4 и отправляет на печать на принтер Printer-A4.  
     
    Проблема начинается когда я пытаюсь создать дублирующий принтер Foxit reader с другими настройками на Win10 для того чтобы добавить возможность автоматически сохранять файл в Print/A3. Но Foxit reader -A4 дублирует настройки Foxit reader -A3. Т.е. если меняю настройки в Foxit reader -A4 то и в Foxit reader -A3 настройки меняются...  
    Есть предложение куда смотреть? Устанавливать еще один pdf принтер другой компании не хотелось бы.

    Всего записей: 103 | Зарегистр. 15-01-2014 | Отправлено: 19:36 20-11-2017
    Zloy_Gelud



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

    Код:
    Func _WM_GETMINMAXINFO($hWnd, $Msg, $wParam, $lParam) ; used to limit the minimum size of the GUI
        #forceref $hWnd, $Msg, $wParam, $lParam
        If $hWnd = $hGUI Then
            Local $tagMaxinfo = DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lParam)
            DllStructSetData($tagMaxinfo, 7, 964) ; min width
            DllStructSetData($tagMaxinfo, 8, 800) ; min height
     
            ConsoleWrite(WinGetPos(ControlGetHandle($hGUI, "", $idCatalog))[2] & @CRLF)
            ConsoleWrite(ControlGetPos($hGUI, '', $idCatalog)[2] & @CRLF)
            _GUICtrlListView_SetColumnWidth($idCatalog, 1, ControlGetPos($hGUI, '', $idCatalog)[2] - 230)
            
            Return $GUI_RUNDEFMSG
        EndIf
     
    EndFunc

    Вышеприведенный код не правильно показывает размеры элемента idCatalog при разворачивании гуи.

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 21:15 21-11-2017 | Исправлено: Zloy_Gelud, 21:15 23-11-2017
    Turkish88



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Func __Event($nCode,$wPar,$lPar)  
        If $nCode<0 Then Return _WinAPI_CallNextHookEx($hHookM,$nCode,$wPar,$lPar)  
        Local $tKEY=BitAND($wPar,0xFFFF)  
        If $tKEY=$wm_mousemove Then  
            $trTime=0  
            ProcessClose("start.exe")  
        EndIf  
    EndFunc  
    Func __Exit()  
        _WinAPI_UnhookWindowsHookEx($hHookM)  
        DllCallbackFree($hStub)  
    EndFunc  
     
    вот этот кусок скрипта который должен убивать процесс работает на Windows XP, но на Windows 7 работать не хочет. Кто знает как можно исправить ?

    Всего записей: 2009 | Зарегистр. 30-04-2007 | Отправлено: 11:01 26-11-2017
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud
    Turkish88
    Крайне не рекомендую выполнять какие-либо действия с элементом, вызвавшем событие в самом обработчике событий, результат не предсказуем.
    То-есть , для примера Turkish88
     

    Код:
    Global $fFlagCloseStartExe=False
     
    ....
     
    While 1
    ....
      If $fFlagCloseStartExe Then
        ProcessClose("start.exe")
        $fFlagCloseStartExe=False
      EndIf
    ...
    Wend
     
    Func __Event($nCode,$wPar,$lPar)  
        If $nCode<0 Then Return _WinAPI_CallNextHookEx($hHookM,$nCode,$wPar,$lPar)  
        Local $tKEY=BitAND($wPar,0xFFFF)  
        If $tKEY=$wm_mousemove Then  
            $trTime=0  
            $fFlagCloseStartExe=True
        EndIf  
    EndFunc
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:08 26-11-2017 | Исправлено: NIKZZZZ, 18:09 26-11-2017
    Turkish88



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    NIKZZZZ
    Выяснилось что процесс не убивается если он запущен как сервис, то есть от имени "система" в диспетчере задач
    Я совсем плохо понимаю скрипты, я выше выкладывал весь мой скрипт, можете скомпоновать мне его с вашим дополнением пожалуйста

    Всего записей: 2009 | Зарегистр. 30-04-2007 | Отправлено: 18:11 27-11-2017 | Исправлено: Turkish88, 18:12 27-11-2017
    yozhic



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Здравствуйте. Запускаю Ваш Creation GUI.au3 на 64-битной системе (пробовал на 8.1 и на 7) – окно невозможно переместить и изменить его размер. Комментирую строку

    Код:
    GUIRegisterMsg(0x0046, "WM_WINDOWPOSCHANGING")

    перемещение и изменение размера начинает работать. Но примагничивание не работает (естественно). Не могли бы взглянуть-поправить, чтобы заработало и на 64-бит? Регулярно пользуюсь Creation GUI, на 32-битной системе все прекрасно работает. Можно, конечно, от примагничивания отказаться, но может починка не отнимет у Вас много времени? У меня знаний не хватит самому разобраться.

    Всего записей: 2773 | Зарегистр. 20-03-2008 | Отправлено: 15:31 01-12-2017 | Исправлено: yozhic, 15:33 01-12-2017
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yozhic
    Пока у меня нет времени. Пишу скрипты только по работе. Могу только посоветовать приспособиться ровнять в ручную.
    Или спросить на англ. форуме, может размеры структур (DllStructCreate) другие для x64. Посмотреть скрипты с поддержкой x64 для функции WM_WINDOWPOSCHANGING. Посмотрел в поиске первый попавшийся на форуме, там используется $tagWINDOWPOS. Но мне проверить негде, x64 у меня ждёт своего часа, пока текущая система не рухнет.

    Всего записей: 4412 | Зарегистр. 03-05-2006 | Отправлено: 01:04 03-12-2017
    yozhic



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Спасибо за отклик. Может и не понадобится Вам отвлекаться, т.к. нашелся обходной маневр: оказывается нужно запустить CreationGUI.au3 32-битным интерпретатором (на 64-битной системе), тогда все функции отлично работают. Проблемы возникают только при запуске 64-битным интерпретатором.

    Всего записей: 2773 | Зарегистр. 20-03-2008 | Отправлено: 16:27 03-12-2017 | Исправлено: yozhic, 16:31 03-12-2017
    SharkyEXE

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем здравствуйте.
     
    Есть 10 одинаковых блоков , в которых меняются только три параметра - выделены жирным
     

    Код:
     
    ControlFocus ( "Настроить кнопк", "", "[CLASS:Button; INSTANCE:2]" )
     
    # Проверяем статус галки : установлена ( 1 ) / не установлена ( 0 )
    $Status1 = ControlCommand ( "Настроить кнопк", "", "Button2", "IsChecked" )
     
    # Если 1, значит установлена
    If $Status1 = 1 Then
     
    ControlClick ( "Настроить кнопк", "", "Button2" )
    Sleep ( 1000 )
     
    # Иначе - не установлена
    Else
     
    #
     
    EndIf
     

     
    Хочется функции , типа чтобы было так
     

    Код:
    AU3ExecuteScript("Настроить кнопк","2","1")
     
    Func AU3ExecuteScript($iScript, $iScript2, $iScript3)
    ControlFocus ( '$iScript', "", "'[CLASS:Button; INSTANCE: ' & '$iScript2'& ']'" )
     
    # Проверяем статус галки : установлена ( 1 ) / не установлена ( 0 )
    $Status & '$iScript3' = ControlCommand ( $iScript, "", "'Button' & '$iScript2'", "IsChecked" )
     
    # Если 1, значит установлена
    If $Status & '$iScript3' = 1 Then
     
    ControlClick ( '$iScript', "", "'Button' & '$iScript2'" )
    Sleep ( 1000 )
     
    # Иначе - не установлена
    Else
     
    #
     
    EndIf
    EndFunc

     
    Но у меня не работает.
     
    Помогите мне , пожалуйста

    Всего записей: 354 | Зарегистр. 25-01-2009 | Отправлено: 23:28 20-12-2017 | Исправлено: SharkyEXE, 23:32 20-12-2017
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SharkyEXE
    Скопировал скрипт, получилась путаница. Во первых переменная в кавычки не берётся. Но есть исключение, если скрип формируется другим скриптов, чтобы выполнить с помощью командной строки и параметра AutoIt3ExecuteScript, то да существует вариант когда переменная в текущем скрипте является текстом, но для сохранённого она будет иметь правильный вид. Для первого варианта неправильный вообще скрипт, для второго варианта почти все строки должны быть в кавычках кроме изменяемых переменных.

    Цитата:
    $Status & $iScript3 =

    такого не бывает, во вторых зачем переменной внутри функции иметь другое имя с индексом, если она всё равно изолированная, там любое имя вставь и она будет работать а при новом и вызове предыдущее уничтожиться и не будет иметь смысла, тогда зачем локальной переменной внутри функции индекс? Если только функция неправильная и генерирует глобальные переменные, но тогда делай глобальный массив а в функцию передавай индекс строки массива, которая содержит и текст и числа для конкретного вызова.
     

    Код:
    #include <Array.au3>
     
    Global $Array[5][3] =  [ _
    [
    'Настроить кнопк', '2', '1'], _
    [
    'Нажать то-то', '2', '1'], _
    [
    'Нажать то-то', '2', '1'], _
    [
    'Нажать то-то', '2', '1'], _
    [
    'Нажать то-то', '2', '1']]  
     
    _ArrayDisplay($Array, 'Array')

     
    Немного покрамсал

    Код:
    AU3ExecuteScript("Настроить кнопк","2")
     
    Func AU3ExecuteScript($hWnd, $inx)
        ControlFocus ($hWnd, '', '[CLASS:Button; INSTANCE: ' & $inx & ']' )
        ; Проверяем статус галки : установлена ( 1 ) / не установлена ( 0 )
        ; Если 1, то логическое True для логической проверки "If Then", иначе 0, что является логическим False для логической проверки "If Then"

        If ControlCommand($hWnd, '', 'Button' & $inx, 'IsChecked') Then
            ControlClick($hWnd, '', 'Button' & $inx)
            Sleep(1000)
        EndIf
    EndFunc

     
    стоп!!! "Настроить кнопк" используется в качестве дескриптора окна? Прочти ещё раз описание параметров.

    Всего записей: 4412 | Зарегистр. 03-05-2006 | Отправлено: 07:18 21-12-2017 | Исправлено: AZJIO, 07:31 21-12-2017
    SharkyEXE

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
     
    Здравствуйте.
     
    1) Огромное Вам спаисбо , код
     

    Код:
     
    AU3ExecuteScript("Настроить кнопк","2")
     
    Func AU3ExecuteScript($hWnd, $inx)
        ControlFocus ($hWnd, '', '[CLASS:Button; INSTANCE: ' & $inx & ']' )
        ; Проверяем статус галки : установлена ( 1 ) / не установлена ( 0 )
        ; Если 1, то логическое True для логической проверки "If Then", иначе 0, что является логическим False для логической проверки "If Then"
        If ControlCommand($hWnd, '', 'Button' & $inx, 'IsChecked') Then
            ControlClick($hWnd, '', 'Button' & $inx)
            Sleep(1000)
        EndIf
    EndFunc
     

    работает
     
    2) Если что , слово AU3ExecuteScript - это просто название функции и нчиего больше , можно переименовать AU3ExecuteScript в Func1 ,  получится так
     

    Код:
     
    Func1("Настроить кнопк","2")
     
    Func Func1($hWnd, $inx)
        ControlFocus ($hWnd, '', '[CLASS:Button; INSTANCE: ' & $inx & ']' )
        ; Проверяем статус галки : установлена ( 1 ) / не установлена ( 0 )
        ; Если 1, то логическое True для логической проверки "If Then", иначе 0, что является логическим False для логической проверки "If Then"
        If ControlCommand($hWnd, '', 'Button' & $inx, 'IsChecked') Then
            ControlClick($hWnd, '', 'Button' & $inx)
            Sleep(1000)
        EndIf
    EndFunc
     

     
    3)

    Цитата:
    "Настроить кнопк" используется в качестве дескриптора окна?
     

    Да.
     
    А как сделать нормальный дескриптор для этого окна , пожалуйста , https://cloud.mail.ru/public/AyBa/A6FpPkwwA ?
     
    Вот скриншот https://cloud.mail.ru/public/9bNa/NY72ouLcg из программы Au3Info.exe
     
    Мой пример 1
     

    Код:
     
    $1 = WinGetHandle ( "Настроить кнопк" )
    $2 = ControlGetHandle ( $1, "", "" )
     

     
    Мой пример 2
     

    Код:
     
    $1 = WinGetHandle ( "[CLASS:CabinetWClass; TITLE:Панель управления\Все элементы панели управления\Центр специальных возможностей\Настроить кнопк]" )
    $2 = ControlGetHandle ( $1, "", "" )
     

     
    4) Как Вы поняли , этот код в этом окне https://cloud.mail.ru/public/AyBa/A6FpPkwwA :
    1) если стоит галочка Включить управление указателем с клавиатуры: ALT слева + SHIFT слева+ NUM LOCK - то снять галочку
    2) если не стоит галочка Включить управление указателем с клавиатуры: ALT слева + SHIFT слева+ NUM LOCK - ничего не делать
     
    Спасибо.

    Всего записей: 354 | Зарегистр. 25-01-2009 | Отправлено: 08:10 21-12-2017 | Исправлено: SharkyEXE, 08:28 21-12-2017
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SharkyEXE
    А может поднявшись на уровень вверх будет то же окно и тот же дескриптор но не будет нужных чекбоксов? Может и правильно оставить текстом. Я просто за то что если с элементом работаешь более 1 раза, то я использую дескриптор, который точно идентифицирует работу с одним и тем же объектом.

    Всего записей: 4412 | Зарегистр. 03-05-2006 | Отправлено: 10:08 21-12-2017
    SharkyEXE

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

    Цитата:
    то я использую дескриптор, который точно идентифицирует работу с одним и тем же объектом

    А можно , пожалуйста, Вам пример , который у Вас 100% работает?
     
    А то у меня самопал , всего по немного из интернета , а у Вас проверено временем и Вашими знаниями

    Всего записей: 354 | Зарегистр. 25-01-2009 | Отправлено: 10:14 21-12-2017
       

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