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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 1)

Модерирует : gyra, Maz

Widok (12-01-2009 14:47): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

AddXL

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

AutoIt3

 
Домашняя страница: http://www.autoitscript.com
Страница загрузки: http://www.autoitscript.com/autoit3/downloads.php
 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя - симуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши и управления окнами и его визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
Помощь по AutoIT:
  • Справку на русском (и не только) вы всегда(?) сможете найти тут
  • Справочник по командам rundll32
  • Русский справочник по API-функциям
  • Помощь по Регулярным выражениям
  • AutoIt v3: Your Quick Guide (652 КБ) - Ваш быстрый гид в мир AutoIt-а (книга в формате pdf)
     
    Инструметы для AutoIt:
  • AutoIt3Wrapper [Страница закачки] - Программа для компилляции скрипта с дополнительными возможностями (добавление иконки, описании и т.п).
  • Koda (724 Kb) - Визуализация работы с GUI - аналог Visual Basic.
  • CodeWizard (400 Kb) - нечто простенькое на вариант Koda.
  • AutoItMacroGenerator (34 Kb) - Записывает в реальном времени действия пользователя в AutoIt код.
  • ScriptWriter (78 Kb) - Аналог AutoItMacroGenerator.
  • API Constants (1042 Kb) - Утилита для просмотра всех констант API-Функции и не только.
  • Страница закачки утилит которые идут в отдельной поставке редактора SciTE.
  • AutoIt меню для браузера Opera
     
    Готовые скрипты и программы с открытым кодом на AutoIt:
  • Коллекция AutoIt скриптов от Sanja Alone
  • Коллекция скриптов на http://msfn.org
  • Пополняющийся со временем сайт с полезными утилитами и функциями на AutoIt
  • Desktop Icons Restorator - Скрипт-Программа для сохранения/восстановления позиции иконок р.стола.
  • CaptureIt - Утилита предназначена для захвата изображений с вашего экрана.
  • SwitchIt - Скрипт для конвертирования выделенного текста
  • Скрипт расскраски кода AutoIt для публикации в форумах
     
    Общие вопросы и решения на Autoit:
  • Обработчик скриптов добавляющий отладчик (debugger)
  • Интеракция между несколькими скриптами
  • Пример использование интеракции между скриптами - Добавление элементов GUI с внешнего модуля
  • Копирование большого файла с отображением данных прогресса
  • Создание динамического меню в Tray Icon (значёк в области уведомления)
  • Пример создания своего мастера (Wizard)
  • Метод позволяющий запускать код VBS не создавая временных файлов
  • Описание функции GUIRegisterMsg()
  • Пример перехвата вводимых символов с клавиатуры
  • Пример деактивирования TabItem
  • Пример вывода лога в Edit-поле (с поддержкой форматирования текста)
  • Пример остановки/начало выполнения скрипта + Слежение за б.обмена с заменой неподдерживаемых в имени файла символов
  • Пример использования меню с иконками (ModernMenu.au3) -> Список программ в меню значка в системном трее
     
  • Как по PID процесса вычислить путь запускаемого файла
  • Получение IP по подключенному сокету
     
    Отдельные функции (UDF):
  • Функции Отключения/Подключения к Интернету
  • Функция проверки подключения к Интернету
  • Функция для получения структуры директории включая подкаталоги
  • Функция для поиска в файлах
  • Функция для смены разрешения экрана
  • Функция для смены раскладки клавиатуры в определённом окне
  • Функция для получения списка процессов с допол. инфой (путь к исполняемому файлу и др.)
  • Функции и пример для отображения детального процесса закачки файла
  • Функция (и пример использования) для отображения стильного диалога “О Программе” - [Усовершенствованная версия]
  • Функция возвращает пронумерованный список всех классов определённого окна + функция получения хендлов для этих классов
  • Функция для получения заголовка окна (или его идентификатора) по ID процесса (PID)
  • Функция _StringIsUTF8Format() + _StringToUTF() - Первая проверяет если строка содержится в UTF-8 формате, вторая преобразовывает строку в UTF-8 формат
  • Функция _FileOpenDialogEx - Возвращает массив (или строку) с полными путями к выбранным файлам
  • _AU3_Lib* Функции - Предназначены для обработки подключаемых библиотек через #include
  • Функция транслитерации строки
  • Расширенная библиотека для работы с реестром
     
    За шапкой следит ViSiToR  

  • Всего записей: 6 | Зарегистр. 24-11-2005 | Отправлено: 13:20 24-11-2005 | Исправлено: Maz, 11:50 17-04-2017
    Zwook

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

    Цитата:
    Оказалось всё намного проще: заменил @ScriptDir на @WorkingDir

     
     
    Не совсем понял, что ты пытаешься сделать, но попробуй через $FileDir = InputBox()

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 20:27 29-12-2008
    CKA3O4H1K



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

    Всего записей: 1377 | Зарегистр. 26-10-2004 | Отправлено: 20:47 29-12-2008 | Исправлено: CKA3O4H1K, 20:48 29-12-2008
    Zwook

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А все файлы с одним и тем же расширением?

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 21:05 29-12-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    CKA3O4H1K 16:42 29-12-2008
    Цитата:
    научить скрипт брать путь рабочей папки из параметров командной строки? Причём будет вариант когда передаётся путь с файлом и нужно будет отделить только путь к вмещающей папке и работать с ней

    Через регулярные выражения, но сначала нужно строго проверить, передана папка или файл:
     

    Код:
     
    $sPhotos_Path = _Get_Photos_Path()
     
    ;Тут поместить всё остальное (код проверки и удаления файлов)
     
    Func _Get_Photos_Path()
        Local $sPhotos_Path = @ScriptDir
        If $CmdLine[0] > 0 Then $sPhotos_Path = $CmdLine[1]
     
        Local $iPhotos_Path_Is_File = FileExists($sPhotos_Path) And Not StringInStr(FileGetAttrib($sPhotos_Path), "D")
        If $iPhotos_Path_Is_File Then $sPhotos_Path = StringRegExpReplace($sPhotos_Path, "\\[^\\]*$", "")
     
        Return $sPhotos_Path
    EndFunc

     
    Zwook 19:29 29-12-2008
    Цитата:
    Нашел игру специально для людей работающих в аутоит

    Интересно как оно связано с AutoIt'ом  
     
    Добавлено:
    Zwook 15:42 29-12-2008
    Цитата:
    пробовал без _IsPressed а также с _IsPressed, в любом случае задержка большая

    А зачем там проверять нажатие клавиши «Вниз»? Вообще то _IsPressed в цикле используют так:
     

    Код:
    #include <Misc.au3>
     
    Global $hUser32_DllOpen = DllOpen("User32.dll")
     
    Opt("SendKeyDelay", 1)
    Opt("SendKeyDownDelay", 1)
    Opt("MouseClickDelay", 1)
    Opt("MouseClickDownDelay", 1)
     
    While 1
        If _IsPressed("28", $hUser32_DllOpen) Then
            $aMouse_Pos = MouseGetPos()
     
            Send("{Space}")
            MouseClick("Left", $aMouse_Pos[0], $aMouse_Pos[1], 1, 0)
            Send("{LSHIFT}")
            MouseClick("Left", $aMouse_Pos[0], $aMouse_Pos[1], 1, 0)
            Send("{LSHIFT}")
        EndIf
    WEnd
     
    Func
    OnAutoItExit()
        DllClose($hUser32_DllOpen)
    EndFunc


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 21:48 29-12-2008
    Zwook

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

    Цитата:
    Интересно как оно связано с AutoIt'ом

     
    Те же самые операции в игре, что и в аутоит - Симулируешь действия, составляешь функции, вобщем интересно поиграть
     

    Цитата:
    А зачем там проверять нажатие клавиши «Вниз»? Вообще то _IsPressed в цикле используют так:

     
     
    Ну вобщем-то весь смысл, в том, чтобы кнопки нажимались когда нажато вниз или любая другая кнопка. В любом случае, Вы не ответили как убрать задержку? Я был бы очень благодарен....

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 22:03 29-12-2008 | Исправлено: Zwook, 22:07 29-12-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Zwook 22:03 29-12-2008
    Цитата:
     как убрать задержку?

    На стороне скрипта вроде убирать нечего, это оптимальный вариант.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 22:23 29-12-2008
    Zwook

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

    Цитата:
    На стороне скрипта вроде убирать нечего, это оптимальный вариант.

     
     
    Может у Вас есть теория почему в игре задержка большая, а в виндовсе её нет?
     
    Моя теория: Игра мониторит Directinput интерфейс и блокирует все горячие клавиши, из за чего кстати Hotkey в игре вообще не работает.  
     
    Как решить: Думаю пустить все кнопки через clipboard, как это реализовать, я не знаю...

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 23:15 29-12-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Zwook 23:15 29-12-2008
    Цитата:
    почему в игре задержка большая, а в виндовсе её нет?

    Возможно потому что игра нагружает процессор, а имитация нажатии клаиш требует ресурсов
     

    Цитата:
    блокирует все горячие клавиши

    Возможно, это свойственно играм.
     

    Цитата:
    Как решить: Думаю пустить все кнопки через clipboard, как это реализовать, я не знаю...

    Я тоже, не представляю как это поможет с нажатием клавиш...

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:20 30-12-2008
    Zwook

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну ладно, Вам лучше знать. Буду делать иными не аутоитовскими методами ....

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 00:53 30-12-2008
    Zwook

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Новый день, новая проблема.
     
     
    Возникли следующие вопросы ->
     
    №1 Если знаешь адресс, opcode и значение некой ячейки операционной памяти, можно ли изменить значение этого адресса аутоитовскими коммандами.  
     
    №2 В продолжении к первому вопросу, есть ли в аутоит встроенный ассембли компилятор, чтобы в аутоите изменять opcode ячейки операционной памяти?
     
    Просто, есть скрипт написанный в аутоит... но мне также надо производить манипуляции над оперативной памятью, это я делал другой программой, но это не совсем удобно... По этому хотелось бы внедрить это в сам скрипт.
     
     
    №3 Как поставить лимит на максимальное значение координат в MouseMove(), то есть - у меня в скрипте так:
     
    MouseMove( x, $Var-100 )
     
    Допустим мне надо сделать так, чтобы значение координаты "y" не понижалось ниже 140, а $Var равен 210 (к примеру, это может быть любое число), надо сделать так, чтобы $Var увеличился до 240 (240-100=140). Я пробовал вот так:
     
    If $Var[1] <240 Then
        $Var[1] = 240
    EndIf
     
    Выдает ошибку -> ==> Subscript used with non-Array variable.:
     
    Хотя $Var это двумерный Array, [0],[1] в чем проблема ?
     
    №4 Так как у меня не получается №3 сразу задам вопрос про то, что должно происходить с этим самым MouseMove() и можно ли это реализовать.
     Допустим №3 работает, и мы получили MouseMove( 100, 300 ). Далее должна идти проверка PixelSearch( 100, 140, 200, координата из MouseMove "y" ) Так как MouseMove не создает Array, то как скрипту указать на эту самую координату "y" из прошлого MouseMove ?
     
     
    Заранее благодарен за люблю помощь!  

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 14:57 30-12-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Zwook 14:57 30-12-2008
    Цитата:
    можно ли изменить значение этого адресса аутоитовскими коммандами

    Можно попробовать с Memory UDF
     

    Цитата:
    есть ли в аутоит встроенный ассембли компилятор, чтобы в аутоите изменять opcode ячейки операционной памяти?

    Не уверен, но может AutoIt Inline Assembly UDF поможет?
     

    Цитата:
     $Var это двумерный Array, [0],[1] в чем проблема ?

    В том, что с двумерными массивами нужно обращаться соответственно
     

    Код:
    #include <Misc.au3>
     
    Dim $aVar[2][2] = [[100, 0], [200, 1]]
     
    MouseClick("Main", $aVar[0][0], _Iif($aVar[1][0] < 240, 240, $aVar[1][0]), 1, 0)

     

    Цитата:
    Так как у меня не получается №3 сразу задам вопрос

    Лучше в справку сходить, MouseMove не возвращает массивов, возможно речь про PixelSearch(), и там кстати возвращается одномерный массив, но только если найден цвет, иначе @error = 1 (отсюда может и всплывать ошибка связанная с неверной размерностью массива).

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:29 30-12-2008 | Исправлено: ViSiToR, 15:30 30-12-2008
    Zwook

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

    Цитата:
    Можно попробовать с Memory UDF


    Цитата:
    Не уверен, но может AutoIt Inline Assembly UDF поможет?

     
    Спасибо!
     
     
     

    Цитата:
    Лучше в справку сходить, MouseMove не возвращает массивов, возможно речь про PixelSearch(), и там кстати возвращается одномерный массив, но только если найден цвет, иначе @error = 1 (отсюда может и всплывать ошибка связанная с неверной размерностью массива).

     

    Цитата:
    В том, что с двумерными массивами нужно обращаться соответственно  
     

     
     
    Это я все знаю, но это не совсем то, что мне нужно было... я попробую сформулировать вопрос лучше ...
     
    Я изменил немного функцию....
    Не получилось сформулировать вопрос, решил показать конкретно ту функцию.
     
     

    Код:
     
    Func Start()
        MouseDown("left")
     
        $Coord = PixelSearch(0, 0, 1200, 750, 0x55705c, 1)
        $Safecoord = PixelSearch(210, 140, 430, 515, 0x55705c, 1)
     
    If $Safecoord[1] <210 Then       ;Вот эта часть
        $Safecoord[1] = 210     ;Не работает
        EndIf                           ;Что делать?
     
    If IsArray($Safecoord) Then
        MouseMove( 255, $Safecoord[1]-90, 0 )
    EndIf
     
        If IsArray($Coord) Then
        MouseMove( 255, $Coord[1], 0 )
    EndIf
    EndFunc
     

     

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 15:38 30-12-2008 | Исправлено: Zwook, 17:00 30-12-2008
    araneon



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR неподскажеш как Функцию Отключения/Подключения к Интернету можно применить к VPN соединению, а то у меня неработает (((

    Всего записей: 155 | Зарегистр. 18-07-2008 | Отправлено: 17:31 30-12-2008
    Zwook

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

    Цитата:
    неподскажеш как Функцию Отключения/Подключения к Интернету можно применить к VPN соединению, а то у меня неработает (((

     
    ???
     

    Код:
     
    ; AutoIt Version: 3.0
    ; Language:       English
    ; Platform:       WinXP SP2 (Tested)
    ; Author:         Kenneth Padgett / IT Lifesaver / kenneth@itlifesaver.com
    ; Version:        1.0
    ;
    ; Script Function:
    ;  Creates a PPTP VPN connection on Windows XP clients
    ;  to connect to the server info you provide
    ;
     
     
    #NoTrayIcon
    #compiler_icon=itlifesaver.ico
    #include <GUIConstants.au3>  
     
    $COMPANY_NAME = "Work VPN" ; name of the VPN icon
    $COMPANY_IP = "123.123.123.123" ; can be DNS name too
    $ConfigureDNS = True ; true if script should set DNS servers, false if not
    $COMPANY_DNS1 = "192.168.1.10"
    $COMPANY_DNS2 = "" ; optional
    $NotDefaultGW = True ; true if script should uncheck the 'Use remote network as default gateway', if you want inet traffic to go through the VPN, set to false
     
    $DELAY = 100
     
    $answer = MsgBox(4, "VPN Connection", "This script will create a VPN connection to " & $COMPANY_NAME & ", Ready?")
    If $answer = 7 Then
        Exit
    EndIf
     
    ; Prompt user for VPN login info
    $frmInformation = GUICreate("Enter Information", 287, 194, 193, 115)
    $lblUserName = GUICtrlCreateLabel("User Name:", 16, 40, 60, 17)
    $lblPassword = GUICtrlCreateLabel("Password:", 16, 80, 53, 17)
    $txtUserName = GUICtrlCreateInput("", 112, 40, 153, 21)
    $txtPassword = GUICtrlCreateInput("", 112, 80, 153, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
    $lblPassword2 = GUICtrlCreateLabel("Confirm Password:", 16, 120, 91, 17)
    $txtPassword2 = GUICtrlCreateInput("", 112, 120, 153, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
    $btnOK = GUICtrlCreateButton("&OK", 200, 160, 75, 25, 0)
    $lblInfo = GUICtrlCreateLabel("Enter your VPN Login Information Below!", 48, 8, 196, 17)
    GUISetState(@SW_SHOW)
       
    While 1  
        $nMsg = GUIGetMsg()  
        Switch $nMsg  
        Case $btnOK
            If GUICtrlRead($txtPassword) <> GUICtrlRead($txtPassword2) Then
                MsgBox (16, "Error", "Passwords do not match! Try again.")
            Else
                $Username = GUICtrlRead($txtUsername)
                $Password = GUICtrlRead($txtPassword)
                ExitLoop
            EndIf
        Case $GUI_EVENT_CLOSE  
            Exit
       
        EndSwitch  
    WEnd
    GUISetState(@SW_HIDE)
     
    ; Run Network Setup
    Run("control ncpa.cpl")
    WinWaitActive("Network Connections")
     
    ; Check if VPN by same name already exists, since it'll break script later if Windows add's a number at the end of the name...
    $ControlID = ControlListView("Network Connections", "", "SysListView321", "FindItem", $COMPANY_NAME, "Virtual Private Network")
    If $ControlID <> -1 Then
        $answer = MsgBox(4404, "Error", "VPN Connection to " & $COMPANY_NAME & " already exists! Remove it and recreate it?")
        If $answer = 6 Then
            ControlListView("Network Connections", "", "SysListView321", "Select", $ControlID)
            Send("{DEL}")
            WinWaitActive("Confirm Connection Delete")
            Send("!y")
            Sleep($DELAY)
        Else
            MsgBox(16, "Exit", "Script stopped by user")
            Exit
        EndIf
    EndIf
     
    ; open new connection wizard from file menu
    Send("!f")
    Send("n")
     
    WinWaitActive("New Connection Wizard")
    Send("!n")
    Sleep($DELAY)
     
    ; What do you want to do?
    Send("!o")
    Sleep($DELAY)
    Send("!n")
    Sleep($DELAY)
     
    ; How do you want to connect to the network at your workplace?
    Send("!v")
    Sleep($DELAY)
    Send("!n")
    Sleep($DELAY)
     
    ; Specifiy a name for this connection to your workplace.
    Send($COMPANY_NAME)
    Send("!n")
    Sleep($DELAY)
     
    ; Windows can make sure the public network is connected first.
    Send("!d")
    Sleep($DELAY)
    Send("!n")
    Sleep($DELAY)
     
    ; What is the name or address of the VPN server?
    Send($COMPANY_IP)
    Send("!n")
    Sleep($DELAY)
     
    ; Wizard Complete, do we want a desktop shortcut?
    Send("!s")
    Sleep($DELAY)
    Send("{ENTER}")
     
    WinWaitClose("New Connection Wizard")
     
    WinWaitActive("Connect " & $COMPANY_NAME)
     
    Send($Username)
    Send("{TAB}")
    Send($Password)
    Sleep($DELAY)
    Send("!s") ; save password...
    Send("!a") ; for anyone who uses this computer, use "!n" for 'Me only'
    Sleep($DELAY)
     
    If $ConfigureDNS Or $NotDefaultGW Then
     
        Send("!o") ; open Properties
     
        WinWaitActive($COMPANY_NAME & " Properties")
        Send("^{TAB 3}")
        Sleep($DELAY)
     
        Send("!o") ; highlight 'This connection uses the following items:'...
        Sleep($DELAY)
        ; select TCP/IP from the listview:
        $ControlID = ControlListView($COMPANY_NAME & " Properties", "", "SysListView321", "FindItem", "Internet Protocol (TCP/IP)")
        If $ControlID = -1 Then
            MsgBox(16, "Error", "Could not select TCP/IP, please finish setup manually")
            Exit
        EndIf
        ControlListView($COMPANY_NAME & " Properties", "", "SysListView321", "Select", $ControlID)
        Sleep($DELAY)
     
        Send("!r") ; open properties
        WinWaitActive("Internet Protocol (TCP/IP) Properties")
     
        If $ConfigureDNS Then
            Send("!e") ; Use the following DNS server addresses
            Sleep($DELAY)
            Send($COMPANY_DNS1)
            Sleep($DELAY)
     
            If $COMPANY_DNS2 <> "" Then
                Send("{TAB}")
                Send($COMPANY_DNS2)
                Sleep($DELAY)
            Endif
        EndIf
     
        If $NotDefaultGW Then
            Send("!v")
            WinWaitActive("Advanced TCP/IP Settings")
     
            Send("!u") ; Uncheck 'Use default gateway on remote network'
            ControlClick("Advanced TCP/IP Settings", "", 1) ; click OK
        EndIf
     
        WinWaitActive("Internet Protocol (TCP/IP) Properties")
        ControlClick("Internet Protocol (TCP/IP) Properties", "", 1) ; click OK
     
        WinWaitActive($COMPANY_NAME & " Properties")
        ControlClick($COMPANY_NAME & " Properties", "", 1) ; click OK
    EndIf
     
    WinClose("Network Connections")
     

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 17:39 30-12-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Zwook 15:38 30-12-2008
    Цитата:
    решил показать конкретно ту функцию

     
    Там же есть уже проверка на массивность, в чём проблема проверять и для сравнения значения в [1]?
     

    Код:
    Func Start()
        MouseDown("left")
         
        $Coord = PixelSearch(0, 0, 1200, 750, 0x55705c, 1)
        $Safecoord = PixelSearch(210, 140, 430, 515, 0x55705c, 1)
         
        If IsArray($Safecoord) Then
            If $Safecoord[1] < 210 Then $Safecoord[1] = 210
            MouseMove( 255, $Safecoord[1]-90, 0)
        EndIf
         
        If IsArray($Coord) Then MouseMove( 255, $Coord[1], 0)
    EndFunc


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 21:44 30-12-2008
    Zwook

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А все оказалось гениально просто, спасбо вам Визитор! Щас балаюсь с UDF'ами изменяющие опкод. Если чего стоящее получится, то выложу сюда.

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 22:59 30-12-2008
    Maza Faka



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

    Цитата:
    Кстати, на оф. форуме делали сравнение

    Хм... действительно COM-метод очень медленный. Для сравнения обработал папку с кучей mp3-файлов (62 GB), результаты очевидны:
    Твой скрипт: 1613 ms
    Мой скрипт: 6583 ms
     
    А я то думал, что строка If StringInStr(FileGetAttrib($sFilePath & "\"), "D") Then будет замедлять работу скрипта, когда, как COM-метод не нуждается в подобной проверке.
    Спасибо за информацию, больше использовать COM-методы для поиска файлов не буду
     
    P.S.
    И всё же, почему COM-метод медленее?

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 06:47 31-12-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Maza Faka 06:47 31-12-2008
    Цитата:
    И всё же, почему COM-метод медленее?

    Думаю из за постоянного обращения к объекту (при каждом получении пути), который срабатывает вне скрипта (в системе). Т.е скрипт как бы постоянно “дёргает” движёк COM-объектов, ведь тот же не знает что скрипт взял на себя обработку
     
    P.S
    Самый быстрый метод как ни странно, оказался запуск консольной команды «dir» Но там свои проблемы (с кодировкой к примеру).

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 12:26 31-12-2008
    Maza Faka



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

    Цитата:
     
    Думаю из за постоянного обращения к объекту
     

    Возможно.
     

    Цитата:
     
    Самый быстрый метод как ни странно, оказался запуск консольной команды «dir»
     

    Ну почему же странно, по моему вполне очевидно

    ----------
    Купи 5 чебуреков и собери кошку

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 12:40 31-12-2008
    araneon



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zwook можеш немнога пояснить свой код??? А то я ещё слобоват в этом

    Всего записей: 155 | Зарегистр. 18-07-2008 | Отправлено: 13:57 31-12-2008
       

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

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 1)
    Widok (12-01-2009 14:47): лимит страниц. продолжаем здесь


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru

    Рейтинг.ru