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

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

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

    Цитата:
    script.au3 будет выводить данные в в стандартный STDOUT

    Благодарю, буду пробовать

    Цитата:
    Современные диски имеют срок службы порядка десятилетий в таком режиме

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

    Всего записей: 145 | Зарегистр. 03-06-2007 | Отправлено: 11:37 21-12-2008
    Maza_Faka



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

    Цитата:
    я когда-то натыкался, на информацию, что флешки имеют лимит в сотни тысяч перезаписей, а про жд не смог ничего найти

    Извиняюсь за оффтопик, но приниципы работы HDD и Flash-drive в корне различны

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    если не сложно дайте совет..
    нужно работать с приложением remote командами, я делаю следующее:
     
    TCPStartup()
    TCPConnect("127.0.0.1", 2500)
     
    программа сигнализирует у входящем подключении, а дальше ей необходима авторизация, тоесть послать пароль например "123", как это можно сделать?
     
    Или думаю не заморачиваться, а сделать через cmd telnet, тогда хотелось бы знать какой командой можно вытащить текст из консоли cmd?

    Всего записей: 2 | Зарегистр. 21-12-2008 | Отправлено: 13:30 21-12-2008 | Исправлено: skaziWow, 15:21 21-12-2008
    Maza_Faka



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

    Цитата:
    послать пароль например "123", как это можно сделать?

    TCPSend пробовал?

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

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пробовал, программа молчит, авторизация не проходит..
    Как правильно написать скрипт, чтобы получить данные что выдаёт telnet в cmd консоли?

    Всего записей: 2 | Зарегистр. 21-12-2008 | Отправлено: 19:05 21-12-2008
    U235

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

    Код:
    Opt("GUIOnEventMode", 1)
    GUICreate("Test", 180, 100, 60, 200)
    $button = GUICtrlCreateButton("B1", 50, 50, 70, 20)
    GUICtrlSetOnEvent($button, "test1")
    $button2 = GUICtrlCreateButton("B2", 50, 80, 70, 20)
    GUICtrlSetOnEvent($button2, "test2")
    GUISetState()
    While 1
            Sleep(100)
    WEnd
    Func test1()
        While 1
        .......
        Sleep(1000)
        WEnd
    EndFunc    
    Func test2()
        TrayTip ( "test", "test", 1 )
    EndFunc    

    Можно ли сделать так, чтобы кнопка B2 (перехватывалось нажатие) работала, когда выполняется функция test1? Т.е. при нажатии B2, после нажатия B1 в цикле внутри test1( )сразу выполнялся ExitLoop и начинала выполнятся test2().

    Всего записей: 980 | Зарегистр. 14-12-2005 | Отправлено: 23:14 21-12-2008
    NORIO



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

    Код:
    Opt("GUIOnEventMode", 1)
    GUICreate("Test", 180, 100, 60, 200)
    $button = GUICtrlCreateButton("B1", 50, 50, 70, 20)
    GUICtrlSetOnEvent($button, "test1")
    $button2 = GUICtrlCreateButton("B2", 50, 80, 70, 20)
    GUICtrlSetOnEvent($button2, "test2")
    GUISetState()
     
    While 1
            Sleep(100)
    WEnd
     
    Func
    test1()
     
        While  1
            Opt("GUIOnEventMode", 0)
            if $button2 == GUIGetMsg() Then
                test2()
            EndIf
            Sleep(10)
        WEnd
    EndFunc
     
    Func
    test2()
        TrayTip ( "test", "test", 1 )
        Opt("GUIOnEventMode", 1)
    EndFunc

     
     
    Но если в цикле в test1 будет выполняться что то длительное и непрерываемое (например sleep или beep)
    то реакция на нажатия будет очень заторможенной и не всегда сработает.

    Всего записей: 875 | Зарегистр. 18-12-2004 | Отправлено: 23:30 21-12-2008 | Исправлено: NORIO, 00:43 22-12-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    U235 23:14 21-12-2008
    Цитата:
    Можно ли сделать так, чтобы кнопка B2 (перехватывалось нажатие) работала, когда выполняется функция test1?

     
    Можно, примерно так...
     

    Код:
    #include <Timers.au3>
     
    Global $aEvents_Data[1][2]
    Global $hOnEvent_Timer = -1
    Global $iEnd_Function = False
     
    HotKeySet("{ESC}", "Quit")
     
    Opt("GUIOnEventMode", 1)
    $hGUI = GUICreate("Test", 180, 100, 60, 200)
     
    $Button = GUICtrlCreateButton("B1", 50, 50, 70, 20)
    GUICtrlSetOnEvent(-1, "Test1")
     
    $Button2 = GUICtrlCreateButton("B2", 50, 80, 70, 20)
    _GUICtrlSetOnEvent(-1, "Test2") ;Используем эту функцию на элементах, которые будут прерывать цикл при событии (при их вызове)
     
    GUISetState(@SW_SHOW, $hGUI)
     
    $hOnEvent_Timer = _Timer_SetTimer($hGUI, 100, "_Set_EndFunction_Proc")
     
    While 1
        Sleep(100)
    WEnd
     
    Func
    Test1()
        TrayTip("", "", 1) ;Чтобы определить начало функции
     
        Local $iCount = 1 ;Для демонстрации
     
        While 1
            Sleep(100)
            ConsoleWrite("Looping in process... " & $iCount & @CRLF)
            $iCount += 1
     
            If $iEnd_Function Then ExitLoop
        WEnd
    EndFunc
     
    Func
    Test2()
        TrayTip("test", "test", 1)
    EndFunc
     
    Func
    _Set_EndFunction_Proc($hWnd, $Msg, $iIDTimer, $dwTime)
        Local $aCurInfo = GUIGetCursorInfo($hGUI)
        If Not IsArray($aCurInfo) Then Return
     
        _Timer_KillTimer($hGUI, $hOnEvent_Timer)
     
        For $i = 1 To $aEvents_Data[0][0]
            If $aCurInfo[2] = 1 And $aCurInfo[4] = $aEvents_Data[$i][0] Then
                ;While $aCurInfo[2] = 1
                    ;$aCurInfo = GUIGetCursorInfo()
                    ;If Not IsArray($aCurInfo) Then ExitLoop
     
                    ;Sleep(1)
                ;WEnd
     
                ;$aCurInfo = GUIGetCursorInfo()
                ;If IsArray($aCurInfo) And $aCurInfo[4] = $aEvents_Data[$i][0] Then $iEnd_Function = True

                $iEnd_Function = True
     
                ExitLoop
            EndIf
        Next

     
        $hOnEvent_Timer = _Timer_SetTimer($hGUI, 100, "_Set_EndFunction_Proc")
    EndFunc
     
    Func
    _GUICtrlSetOnEvent($iCtrlID, $sFuncName)
        Local $iEventSet, $iItem = 0
        If $iCtrlID = -1 Then $iCtrlID = _GUIGetLastCtrlID()
     
        For $i = 1 To $aEvents_Data[0][0]
            If $aEvents_Data[$i][0] = $iCtrlID Then
                $iItem = $i ;We are replacing previous settings
                ExitLoop
            EndIf
        Next
     
        If
    $iItem = 0 Then ;Control has not been set before
            $aEvents_Data[0][0] += 1
            $iItem = $aEvents_Data[0][0]
            ReDim $aEvents_Data[$iItem+1][2]
        EndIf
     
        GUICtrlSetOnEvent($iCtrlID, "_Ctrl_Events_Func")
     
        $aEvents_Data[$iItem][0] = $iCtrlID ;the control ID
        $aEvents_Data[$iItem][1] = $sFuncName ;the function to call
     
        Return 1 ;Success
    EndFunc
     
    Func
    _Ctrl_Events_Func()
        For $i = 1 To $aEvents_Data[0][0]
            If $aEvents_Data[$i][0] = @GUI_CtrlId Then
                $iEnd_Function = False
     
                Call($aEvents_Data[$i][1], @GUI_CtrlId)
                If @error Then Call($aEvents_Data[$i][1])
     
                ExitLoop
            EndIf
        Next
    EndFunc
     
    Func
    _GUIGetLastCtrlID()
        Local $aRet = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", GUICtrlGetHandle(-1))
        Return $aRet[0]
    EndFunc
     
    Func
    Quit()
        _Timer_KillTimer($hGUI, $hOnEvent_Timer)
     
        Exit
    EndFunc

     
    Может быть не очень стабильно, но пока вроде работает

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 02:31 22-12-2008 | Исправлено: ViSiToR, 02:40 22-12-2008
    U235

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

    Цитата:
    что то длительное и непрерываемое  

    К сожалению все так и есть, в цикле множество WinWait и длительность цикла ~ десятки сек. - минуты.. (Попросили приделать что-то типа GUI к скрипту автоматического сканирования через WIA)
    ViSiToR
    Попробую.  
    Спасибо!

    Всего записей: 980 | Зарегистр. 14-12-2005 | Отправлено: 07:13 22-12-2008
    Maza_Faka



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

    Цитата:
    получить данные что выдаёт telnet в cmd консоли?

    Пример
     
    Добавлено:
    U235

    Цитата:
    чтобы кнопка B2 (перехватывалось нажатие) работала

    Мой вариант (предусмотрено также закрытие окна скрипта)

    Код:
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <MenuConstants.au3>
     
    Opt("GUIOnEventMode", 1)
     
    $hGUI = GUICreate("Test", 180, 100)
     
    $button = GUICtrlCreateButton("B1", 50, 50, 70, 20)
    GUICtrlSetOnEvent($button, "test1")
     
    $button2 = GUICtrlCreateButton("B2", 50, 80, 70, 20)
     
    GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND")
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
     
    GUISetState()
     
    While 1
        Sleep(100)
    WEnd
     
    ;Отслеживаем уведомление SC_CLOSE (пользователь закрыл окно)
    Func WM_SYSCOMMAND($hWmd, $Msg, $wParam, $lParam)
        If $wParam = $SC_CLOSE Then _Exit()
     
        Return $GUI_RUNDEFMSG
    EndFunc
     
    ;Отслеживаем уведомление от кнопки
    Func WM_COMMAND($hWmd, $Msg, $wParam, $lParam)
        Local $nID = BitAND($wParam, 0x0000FFFF)
        Local $nCode = BitShift($wParam, 16)
     
        Switch $nCode
            Case $BN_CLICKED
                Switch $nID
                    Case $button2
                        test2()
                EndSwitch
        EndSwitch
     
        Return $GUI_RUNDEFMSG
    EndFunc
     
    Func test1()
        While 1
            Sleep(100)
        WEnd
    EndFunc   ;==>test1
     
    Func test2()
        TrayTip("test", "test", 1)
    EndFunc   ;==>test2
     
    Func _Exit()
        Exit
    EndFunc


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

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите пожалуйста пример скрипта-клиента, который соединяется к sql-серверу по определённому адресу,порту,логину и паролю.  
     
    Например, как увидеть данные из базы даных test из таблицы climb, если подключиться к 127.0.0.1:3306, логин=root, пароль=без пароля?И надо ли что либо предварительно сделать, чтобы подключиться через скрипт к sql-серверу?

    Всего записей: 86 | Зарегистр. 28-02-2007 | Отправлено: 13:22 22-12-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Maza_Faka 07:22 22-12-2008
    Цитата:
    Мой вариант

    Неплохо . Я кстати тоже об этом думал, но почему то казалось что оно будет сильно тормозить скрипт... И ещё кстати, в справке написано кое-что по этому поводу:
     
    http://www.autoitscript.com/autoit3/docs/functions/GUIRegisterMsg.htm

    Цитата:
    Warning: blocking of running user functions which executes window messages with commands such as "Msgbox()" can lead to unexpected behavior, the return to the system should be as fast as possible !!!

     
    Так что если в Test2() будет нечто блокирующее (типа ещё одного цикла), то могут быть непредсказуемые последствия .
     
    Я бы ещё в твоём примере завершал цикл в первой функции, он конечно и так приостанавливается на время выполнения второй, но всё же продолжает после её завершения...
     

    Код:
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <MenuConstants.au3>
    ;
     
    Opt("GUIOnEventMode", 1)
     
    Global $iEndFunction = False
     
    $hGUI = GUICreate("OnEvent Interloper Functions", 180, 100)
     
    $Button1 = GUICtrlCreateButton("B1", 50, 50, 70, 20)
    GUICtrlSetOnEvent(-1, "Test1")
     
    $Button2 = GUICtrlCreateButton("B2", 50, 80, 70, 20)
     
    GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND")
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
     
    GUISetState()
     
    While 1
        Sleep(100)
    WEnd
     
    ;Отслеживаем уведомление SC_CLOSE (пользователь закрыл окно)
    Func WM_SYSCOMMAND($hWmd, $Msg, $wParam, $lParam)
        If $wParam = $SC_CLOSE Then _Exit()
        Return $GUI_RUNDEFMSG
    EndFunc
     
    ;Отслеживаем уведомление от кнопки
    Func WM_COMMAND($hWmd, $Msg, $wParam, $lParam)
        Local $nID = BitAND($wParam, 0x0000FFFF)
        Local $nCode = BitShift($wParam, 16)
     
        Switch $nCode
            Case $BN_CLICKED
                Switch $nID
                    Case $Button2
                        $iEndFunction
    = True
                        Test2()
                EndSwitch
        EndSwitch
     
        Return $GUI_RUNDEFMSG
    EndFunc
     
    Func Test1()
        TrayTip("", "", 1)
     
        $iEndFunction = False
        Local $iCounter = 1
     
        While 1
            Sleep(10)
     
            ConsoleWrite("Loop1 in process... " & $iCounter & @CRLF)
            $iCounter += 1
     
            If $iEndFunction Then ExitLoop
        WEnd
    EndFunc
     
    Func Test2()
        TrayTip("Test", "Test", 1)
    EndFunc
     
    Func _Exit()
        Exit
    EndFunc


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

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



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

    Цитата:
    И ещё кстати, в справке написано кое-что по этому поводу

    Знаю

    Цитата:
    Так что если в Test2() будет нечто блокирующее (типа ещё одного цикла), то могут быть непредсказуемые последствия

    Абсолютно верно, поэтому лучше сделать так:

    Код:
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <MenuConstants.au3>
    ;
     
    Opt("GUIOnEventMode", 1)
     
    Global $iEndFunction = False
     
    $hGUI = GUICreate("OnEvent Interloper Functions", 180, 100)
    GUISetOnEvent(-3, "_Exit")
     
    $Button1 = GUICtrlCreateButton("B1", 50, 50, 70, 20)
    GUICtrlSetOnEvent(-1, "Test1")
     
    $Button2 = GUICtrlCreateButton("B2", 50, 80, 70, 20)
    GUICtrlSetOnEvent(-1, "Test2")
     
    GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND")
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
     
    GUISetState()
     
    While 1
        Sleep(100)
    WEnd
     
    ;Отслеживаем уведомление SC_CLOSE (пользователь закрыл окно)
    Func WM_SYSCOMMAND($hWmd, $Msg, $wParam, $lParam)
        If $wParam = $SC_CLOSE Then $iEndFunction = True
     
        Return
    $GUI_RUNDEFMSG
    EndFunc   ;==>WM_SYSCOMMAND
     
    ;Отслеживаем уведомление от кнопки

    Func WM_COMMAND($hWmd, $Msg, $wParam, $lParam)
        Local $nID = BitAND($wParam, 0x0000FFFF)
        Local $nCode = BitShift($wParam, 16)
     
        Switch $nCode
            Case $BN_CLICKED
                Switch $nID
                    Case $Button2
                        $iEndFunction
    = True
                EndSwitch
        EndSwitch
     
        Return
    $GUI_RUNDEFMSG
    EndFunc   ;==>WM_COMMAND
     
    Func Test1()
        TrayTip("", "", 1)
     
        Local $iCounter = 1
     
        While Not $iEndFunction
            Sleep(10)
     
            ConsoleWrite("Loop1 in process... " & $iCounter & @CRLF)
            $iCounter += 1
        WEnd
     
        $iEndFunction = False
    EndFunc
      ;==>Test1
     
    Func Test2()
        TrayTip("Test", "Test", 1)
    EndFunc   ;==>Test2
     
    Func _Exit()
        Exit
    EndFunc
      ;==>_Exit


    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 15:23 22-12-2008
    volmaxxx

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    Есть ли какие-нибудь варианты расширить PixelSearch?
    Т.е. осуществлять поиск не 1 пикселя, а заранее заданного шаблона (например, нужно найти все фото, где встречается заданный шаблон из 10*10 пикселей).

    Всего записей: 3 | Зарегистр. 08-06-2007 | Отправлено: 14:43 23-12-2008
    Hackproof



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть такая мозголомная проблема:
    Код:
    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Form1", 500, 300, 300, -1)
    $se=GUICtrlCreateButton("Выбрать заявку",50,50,90,20)
    GUICtrlSetOnEvent($se,"selecting")
     
    $Tab1 = GUICtrlCreateTab(16, 16, 470, 280)
    $TabSheet1 = GUICtrlCreateTabItem("Заявки в работе")
    $zainwork = GUICtrlCreateListView ("Дата, время|Заявка|Кто дал заявку|Принял|Состояние", 32, 80, 400, 200)
    GUICtrlCreateListViewItem("bla|bla|bla|bla",$zainwork)
    GUICtrlCreateListViewItem("bla|bla|bla|bla",$zainwork)
    GUICtrlCreateListViewItem("bla|bla|bla|bla",$zainwork)
     
    $TabSheet2 = GUICtrlCreateTabItem("Выполненные заявки")
    $zadone = GUICtrlCreateListView ("Дата, время|Заявка|Кто дал заявку|Принял|Состояние", 32, 80, 400, 200)
    GUICtrlCreateListViewItem("qqq|www|eee|r",$zadone)
    GUICtrlCreateListViewItem("qqq|www|eee|r",$zadone)
     
    $TabSheet3 = GUICtrlCreateTabItem("Переданные заявки")
    $zaleft = GUICtrlCreateListView ("Дата, время|Заявка|Кто дал заявку|Принял|Состояние", 32, 80, 400, 200)
    GUICtrlCreateListViewItem("123|123|123|123",$zaleft)
    GUISetState(@sw_show)
     
    while 1
        sleep(100)
    WEnd
     
    Func
    selecting()
    $sel="Чему оно должно быть равно?"
    msgbox(0,"Выбрана заявка №",$sel)
    EndFunc

     
    Как можно узнать номер строки, выделенной в данный момент? Не принципиально, в каком окне эта строка, главное - ее номер сверху.
    GuiCtrlRead выдает стремные номера. Если во всех окнах одинаковое количество строк, то еще можно извратиться, и вычислить номер строки, но если в одном окне строчек больше, чем в другом, начинается ерунда.
    А в UDF нашел только количество строк всего в окне...

    Всего записей: 106 | Зарегистр. 24-05-2008 | Отправлено: 21:28 23-12-2008 | Исправлено: Hackproof, 21:43 23-12-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Hackproof 21:28 23-12-2008
    Цитата:
    Как можно узнать номер строки, выделенной в данный момент?

    Так:
     

    Код:
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    ;
     
    $Form1 = GUICreate("Form1", 500, 300, 300, -1)
    $Select_Button = GUICtrlCreateButton("Выбрать заявку", 50, 50, 90, 20)
     
    $Tab1 = GUICtrlCreateTab(16, 16, 470, 280)
     
    $TabSheet1 = GUICtrlCreateTabItem("Заявки в работе")
     
    $ZaInWork = GUICtrlCreateListView("Дата, время|Заявка|Кто дал заявку|Принял|Состояние", 32, 80, 400, 200)
    GUICtrlCreateListViewItem("bla|bla|bla|bla", $ZaInWork)
    GUICtrlCreateListViewItem("bla|bla|bla|bla", $ZaInWork)
    GUICtrlCreateListViewItem("bla|bla|bla|bla", $ZaInWork)
     
    $TabSheet2 = GUICtrlCreateTabItem("Выполненные заявки")
     
    $ZaDone = GUICtrlCreateListView("Дата, время|Заявка|Кто дал заявку|Принял|Состояние", 32, 80, 400, 200)
    GUICtrlCreateListViewItem("qqq|www|eee|r", $ZaDone)
    GUICtrlCreateListViewItem("qqq|www|eee|r", $ZaDone)
     
    $TabSheet3 = GUICtrlCreateTabItem("Переданные заявки")
     
    $ZaLeft = GUICtrlCreateListView("Дата, время|Заявка|Кто дал заявку|Принял|Состояние", 32, 80, 400, 200)
    GUICtrlCreateListViewItem("123|123|123|123", $ZaLeft)
     
    GUISetState(@SW_SHOW)
     
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit
            Case
    $Select_Button
                Switch GUICtrlRead($Tab1) ;Проверяем какой таб активен (чтобы знать какой список проверять)
                    Case 0
                        $hLV = $ZaInWork
                    Case 1
                        $hLV = $ZaDone
                    Case 2
                        $hLV = $ZaLeft
                    Case Else
                        $hLV = $ZaInWork
                EndSwitch
     
                $iSelIndex = _GUICtrlListView_GetSelectedIndices($hLV)
     
                If $iSelIndex <> "" Then
                    $iSelIndex = "Выбрана заявка №" & Number($iSelIndex) + 1
                Else
                    $iSelIndex = "Нет выбранных заявок в текущем списке."
                EndIf
     
                MsgBox(64, "Выбрана заявка...", $iSelIndex, 0, $Form1)
        EndSwitch
    WEnd

     
    ?

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

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Блин, смотрел же эту функцию. Как смотрел - непонятно... Спасибо.

    Всего записей: 106 | Зарегистр. 24-05-2008 | Отправлено: 00:34 24-12-2008 | Исправлено: Hackproof, 00:36 24-12-2008
    NORIO



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

    Всего записей: 875 | Зарегистр. 18-12-2004 | Отправлено: 02:27 24-12-2008 | Исправлено: NORIO, 03:10 24-12-2008
    timsky



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Функция InetGet использует AutoIt в качестве User Agent. Можно это как-нить поправить?

    Всего записей: 2287 | Зарегистр. 08-06-2004 | Отправлено: 04:04 24-12-2008
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    timsky 04:04 24-12-2008
    Цитата:
    Можно это как-нить поправить?

    Jon вроде намекал на то что возможно в будущем это будет опционально (параметр $sUserAgent как я понял). Я добавил там коммент, посмотрим добавят ли... А пока можно использовать TCP-функции (см. библиотеку Http на оф. форуме).

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 04:59 24-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.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru