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

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

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

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

   

Widok



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

AutoIt3
(Часть 1)

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

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

 
Помощь по AutoIT:
  • Справку на русском (и не только) вы всегда(?) сможете найти тут
  • Учебник по AutoIt для начинающих
  • Видео-руководства на YouTube (англ.)
  • AutoIt v3: Your Quick Guide (652 КБ) - Ваш быстрый гид в мир AutoIt-а (книга в формате pdf) - Та же книжка online.
  • Справочник по командам rundll32
  • Справка WinAPI (Win 32 API по шагам)
  • Русский справочник по API-функциям
  • Полезная информация по WinAPI на русском
  • Помощь по регулярным выражениям
  • Tutorial on DllCall() & DllStructs - Небольшое (пока?) руководство по использованию функции DllCall*()
     
     
    Ресурсы, посвящённые AutoIt
  • AutoIt в Википедии
  • AutoIt Russian Community - Русское сообщество AutoIt
  • Jabber-конференция для обсуждения мелких вопросов касающихся AutoIt
  • Обзор скриптового языка AutoIt (рус.)
  • AutoIt на Yahoo! Groups
  • Раздел в конфиренции OSzone.net, посвящённый AutoIt
  • Пополняющийся со временем сайт с полезными утилитами и функциями на AutoIt
  • Коллекция AutoIt-скриптов от Sanja Alone
  • Коллекция AutoIt-скриптов от MSFN (могут быть устаревшие).
  • Коллекция AutoIt-скриптов от AZJIO
     
     
    !!! Полезные советы и заметки - новичкам и не только
     
     
  • Рекомендации по написанию скриптов
     
     
    Инструменты для AutoIt:
  • AutoIt Path Switcher - Переключение пути к папке 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:
  • Desktop Icons Restorator - Скрипт-программа для сохранения/восстановления позиции значков рабочего стола.
  • CaptureIt - Утилита для захвата изображений с экрана.
  • SwitchIt - Скрипт для конвертирования выделенного текста.
  • Скрипт раскраски кода AutoIt для публикации в форумах
     
    Общие вопросы и решения на Autoit:
  • Обработчик скриптов добавляющий отладчик (debugger) - Последняя версия: AutoItScript Add Debugger
  • Интеракция между несколькими скриптами
  • Пример использование интеракции между скриптами - Добавление элементов GUI с внешнего модуля
  • Чтение и запись данных с/в окна/о SciTE
  • Пример автообновления версии своего приложения
  • Копирование большого файла с отображением данных прогресса
  • Создание динамического меню в Tray Icon (значок в области уведомлений)
  • Пример создания своего мастера (Wizard)
  • Метод, позволяющий запускать код VBS без создания временных файлов
  • Описание функции GUIRegisterMsg()
  • Пример перехвата вводимых символов с клавиатуры
  • Пример деактивирования TabItem
  • Пример вывода лога в Edit-поле (с поддержкой форматирования текста)
  • Пример остановки/начало выполнения скрипта + Слежение за буфером обмена с заменой неподдерживаемых в имени файла символов
  • Подключение приложения (GUI) к буферу обмена
  • Пример использования меню с значками (ModernMenu.au3) -> Список программ в меню значка в системном трее
  • Пример подсчёта интервала времени между нажатиями клавиш
  • Слежение нажатых элементов в текущем окне (под курсором)
  • Написание instant messaging Бота на AutoIt
  • Способ, позволяющий посылать нажатие клавиши в неактивное окно (не путать со свёрнутым)
  • Сервер <=> Клиент - Пример передачи файла
  • Пример отображения только элементов GUI (без самой оболочки)
  • Модуль, превращающий ваше приложение в Trial-версию
  • Слежение за выделенным текстом и с последующим его помещением в файл
     
    Отдельные функции и библиотеки (UDF):
  • Функции, относящиеся к интернету
  • Функции для работы с процессами и окнами
  • Функции для работы с файлами
  • Функции для GUI/Tray
  • Системные функции
  • Разное (то, что не подпадает под другие категории)
     


     
    За шапкой следит ViSiToR  

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 14:47 12-01-2009 | Исправлено: Maz, 11:50 17-04-2017
    whitebear150980

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR  AutoIT
     
    Добрый день.
     
    Да Ваш пример красивше Задача такая: есть структура папок Год-Месяц-День-файл№.txt которые и отображаются в дереве. Необходимо, чтобы когда я кликаю по файлику в дереве, мне возращался полный путь, т.е. Год-Месяц-День-файл№.txt. В принципе импирически понимаю что надо получить хоть какойто отклик от элементов дерева, остальное прирастим
     
    З.Ы. И вот возник вопрос: а можно сделать какие-то части дерева невидимыми и или заменять их псевдонимами в отображении.

    Всего записей: 15 | Зарегистр. 03-06-2009 | Отправлено: 17:11 08-06-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    whitebear150980 17:11 08-06-2009
    Цитата:
    Необходимо, чтобы когда я кликаю по файлику в дереве, мне возращался полный путь

    Так в примере же все элементы дерева помещены в массив, остаётся только проверять событие:
     

    Код:
    Case $aItems[1] To $aItems[$aItems[0]]
                $sGet_TreePath = _GUICtrlTreeView_GetTree($TreeView, $nMsg)
     
                ConsoleWrite($sGet_TreePath & @CRLF)


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 21:21 08-06-2009
    timsky



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ynbIpb
    Вобщем, есть такая прога для СонЭриков MyPhoneExplorer: http://forum.ru-board.com/topic.cgi?forum=5&topic=19403&glp
    Замечательная бесплатная софтина. Подключаешь к компу через USB и делай что хочешь с телеоном. Есть командная строка, контролы досягаемы.
    Была задача замутить через нее отправку СМС-ок, но отпала.
    А еще как вариант юзать сервисы самих сотовых компаний типа такого: http://sms.mts.uz/sms.php
    У разных компаний по разному, например, бывает что если послать мыло на {номер}@beeline.ru, то владелец получит смс.

    Всего записей: 2287 | Зарегистр. 08-06-2004 | Отправлено: 22:57 08-06-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    CKA3O4H1K 06:56 08-06-2009
    Цитата:
    когда идет набор буков Линейка в любом из режимов не нужна

    Думаю не сложно её прятать при наборе букв(!), и показывать при движении мышки, ну или по спец. хоткею (тот же «Ctrl + Shift + L»).
     
    Вобщем я нашёл (точнее мне на офф. форуме подсказали) метод пропускания кликов и прочего сквозь GUI, это оказалось намного проще чем я думал, всего один стиль - $WS_EX_TRANSPARENT ).
     
    P.S
    У вас есть ICQ? Там будет удобнее, и быстрее
     
    Добавлено:
    CKA3O4H1K
    Я начинаю немного путаться...
     
    * В закреплённом состоянии (уточну, это не режим, а только состояние для всех режимов?) курсор отображается в соответствии с настройками каждого режима отдельно, и в этом (и только в этом, верно?) состоянии линейка движется за курсором, независимо от текущего режима, а клики и прочее обрабатываются сквозь GUI, верно?
    Может тогда лучше просто сделать отдельный режим для этого, назвать его «Закреплённый режим»
     
    * Нужно ли для режима Г.Линия пропускать клики, или это только для П.Блока?
     
    21:13 07-06-2009
    Цитата:
    * Если по умолчанию режим лЛиния, то после запуска Линейки в трее в подменю Режимы отображения "включены" оба пунка

    Это пофиксил.
     
    P.S
    У меня на данный момент есть немного свободного времени (и желание повозиться с этой линейкой ), поэтому лучше поспешите с ответами (ещё лучше в аське), такая возможность у меня бывает редко.


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:23 09-06-2009 | Исправлено: ViSiToR, 00:54 09-06-2009
    2133pavel2133

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте. У меня снова проблема, возможно вы сможете мне помочь.
    Программа-клиент на VB.NET. В ней есть злобная кнопка "Search".
     
    Autоit Info:
    >>>> Window <<<<
    Title:    Main
    Class:    WindowsForms10.Window.8.app4
    Position:    1685, 0
    Size:    235, 861
    Style:    0x16CE0000
    ExStyle:    0x00050100
    Handle:    0x00050338
     
    >>>> Control <<<<
    Class:    WindowsForms10.Window.8.app4
    Instance:    172
    ClassnameNN:    WindowsForms10.Window.8.app4172
    Advanced (Class):    [CLASS:WindowsForms10.Window.8.app4; INSTANCE:172]
    ID:    591376
    Text:    Search
    Position:    144, 69
    Size:    64, 24
    ControlClick Coords:    42, 12
    Style:    0x56010000
    ExStyle:    0x00000000
    Handle:    0x00090610
     
    При нажатии текст "abc" отпраляется серверу, и получается ответ "123"
    Время ответа от 0.2 сек до 1-2 секунд. Требуется определить, когда кнопка освободилась.
    Визуально, после запроса она находится в нажатом состоянии, пока не придет ответ.
     
    Я пробовал
     
    ControlCommand ("Main", "", "[CLASS:WindowsForms10.Window.8.app4; INSTANCE:172]","IsEnabled", "")
     
    всегда возвращает 1, опция "isvisible" то же самое.
     
    GUICtrlRead - возвращает всегда 0.
     
    Гугл не помог, там только эти варианты. Есть какие-нибудь идеи?

    Всего записей: 7 | Зарегистр. 05-06-2009 | Отправлено: 06:55 09-06-2009 | Исправлено: 2133pavel2133, 06:56 09-06-2009
    CKA3O4H1K



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

    Цитата:
    У вас есть ICQ? Там будет удобнее, и быстрее

    Да! С твоего  позволения : )
     
    Теперь ответы туда

    Всего записей: 1378 | Зарегистр. 26-10-2004 | Отправлено: 11:42 09-06-2009
    moto25ru



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

    Цитата:
    moto25ru, мне кажется у тебя не получится сделать прокси. Как-то я делал socks 4/5 прокси на Perl, так там используется спецфункция select чтобы определять с какого сокета пришли данные (с сайта или от браузера) или есть еще неблокирующие сокеты,незнаю, может еще с многопоточностью можно как-то извернуться.  

    спасибо за ответ =) ты единственный пока, кто откликнулся =)
    С какого сокета пришли данные и так определяется =) более того, в последней редакции уже более-менее работает, если так можно выразиться.. беда в другом.. у меня есть 2 скрипта.. 1 впринципе неверен, но работает на половину, второй - верен, но не работает =) поясню
    1) работает почти как второй, но "вылетает" и после его завершения (в чем причина понятия не имею) отображается часть странички =)
    2) работает отлично, запросы постоянно принимает и отправляет на проксю, прокся их принимает и отправляет ответ, все вроде верно, НО ! итоговая страничка не отображается вообще, есть подозрение, что это связано с тем, что я или не закрываю сессию TCP как это происходит при вылете по ошибке в первом скрипте или же просто надо закрыть сокеты и затем заного открыть, чтобы браузер понял, что ответ который он получил это и есть то, что он ожидал, а то происходит как вечная загрузка..
    ---
    посему вопросы простые, пусть и не в тему
    1) как вообще функционирует http протокол по запросу браузера, требует ли он завершения TCP сессии как команды к окончанию загрузки и отображению скаченного ?
    2) есть ли примеры (лучше подробные) когда используются функции TCP в autoIT ? т.е. передача файлов, передача текста, смешанные варианты может быть.. у меня вот, например, работает скрипт только в случае записи в файл в бинарном принудительном порядке =) интересно почему =) но не сильно важно впринципе (файлы используются на данный момент как форма передачи запроса на другой порт, а сам скрипт этакий тунель)
    3) вообще как формируется страничка ? т.е. в каком порядке что закачивается, например:
    ) закачивается форма (разметка гипертекстовая)
    ) затем браузер смотрит каких картинок не хватает и посылает дополнительные запросы и вставляет полученные данные куда положено по форме (разметка гипертекстовая)
    ###
    вообще задача казалась более чем простой, получил на одном порту - отправил на другой и наоборот ! и ведь даже не важно что получил и передал, просто как тунель, принял-отправил, а уже почти месяц бьюсь.. приблизился незначительно, хоть и больше стал понимать как, что работает, хелп уже весь почти наизусть по этим функциям помню ((
    ###

    Код:
     
    #include <GUIConstantsEx.au3>
    #include <Array.au3>
    #Include <File.au3>
    Opt('MustDeclareVars', 1)
     
    local $listen_IP = "127.0.0.1"
    local $listen_PORT = 80
    local $proxy_IP = "127.0.0.1"
    local $proxy_PORT = 8080;1521
     
    local $file, $m,$s,$g,$soc ;, $BUFF, $cleint_IP_Accepted, $array, $addr $time=1000, $recv = "", $i=0,  
    local $to_proxy="temp_proxy.bin", $to_listen="temp_listen.bin", $flag="flag"
    local $buf = 65432, $TTL = 100, $data="", $GET="", $bin=0, $b=16, $count=0
    local $ListenSocket, $ConnectedSocket, $proxySocket, $socket
     
    Example()
     
    Func Example()
    If FileExists($to_proxy) Then FileDelete($to_proxy)
    If FileExists($to_listen) Then FileDelete($to_listen)
    If FileExists($flag) Then FileDelete($flag)
        
    TCPStartUp()
     
    $ListenSocket = TCPListen($listen_IP, $listen_PORT,  $TTL )
    If $ListenSocket = -1 Then Exit
    $proxySocket = TCPConnect ( $proxy_IP, $proxy_PORT )
    $socket = TCPConnect ($listen_IP, $listen_PORT)
    ProgressOn ("tonnel","", "",0,800,1)
     
    While 1
    ProgressSet (0,"прослушивание портов")
    ;    проверка на наличие данных для отправки на proxy
        
        If FileExists($to_proxy) Then
            $file = FileOpen ($to_proxy, $b+0)
                If $file = -1 Then
                    MsgBox(0, "Error", "buffer error")
                    Exit
                EndIf
    ProgressSet (0,"передача данных на proxy")
            $data=FileRead($file);, 1)
            $count=TCPSend ($proxySocket, $data )
            If @error == -1 Then _MsgBox (0, "Error", "EOF")
            If @error == 1 Then _MsgBox(0, "Error", "buffer error")
    ; # # # # #
    _MsgBox (0, "Send to proxy", $data&@CRLF&@CRLF&"binary="&isBinary($data)&@CRLF&"@error="&@error&@CRLF&"$count="&$count)
    ; # # # # #
            FileClose($file)
            FileDelete($to_proxy)
            $data = ""
        EndIf
        
        If not FileExists($to_listen) Then
    ;    получение данных на локальном порту
    ;    $data = _TCPRecv(TCPAccept($ListenSocket), $buf)
        $data = _TCPRecv($ConnectedSocket, $buf)
    ; # # # # #
    _MsgBox (0, "получено с 127.0.0.1:80", $data&@CRLF&@CRLF&"binary="&isBinary($data)&@CRLF&"@error="&@error&@CRLF&"$buf="&$buf)
    ; # # # # #
            If $data<>"" Then
                If FileExists($to_proxy) Then;And $proxySocket<>-1 Then
                    $file = FileOpen ($to_proxy, $b+2)
                    If $file = -1 Then
                        MsgBox(0, "Error", "buffer error")
                        Exit
                    EndIf
                    FileWrite($file, $data)
                    FileClose($file)
                Else    
                    _FileCreate($to_proxy)
                    $file = FileOpen ($to_proxy, $b+1)
                    If $file = -1 Then
                        MsgBox(0, "Error", "buffer error")
                        Exit
                    EndIf
                    FileWrite($file, $data)
                    FileClose($file)
                EndIf
    ProgressSet (0,"получение данных с 127.0.0.1:80")
            Else
    ;    переключение порта в режим ожидания|приема
                $ConnectedSocket = TCPAccept($ListenSocket)
            EndIf
        EndIf
        
     
    ;    проверка на наличие данных для отправки в браузер
        If FileExists($to_listen) Then;$ListenSocket<>-1 Then
            $file = FileOpen ($to_listen, $b+0)
                If $file = -1 Then
                    MsgBox(0, "Error", "buffer error")
                    Exit
                EndIf
    ProgressSet (0,"передача данных в iE")
            $GET=FileRead($file);, 1)
            $count=TCPSend ($socket, $GET );$ListenSocket, $GET )
            If @error == -1 Then _MsgBox (0, "Error", "EOF")
            If @error == 1 Then _MsgBox(0, "Error", "buffer error")
    ; # # # # #
    _MsgBox (0, "Send to iE", $GET&@CRLF&@CRLF&"binary="&isBinary($GET)&@CRLF&"@error="&@error&@CRLF&"$count="&$count)
    ; # # # # #
            FileClose($file)
            FileDelete($to_listen)
            $GET = ""
        EndIf
     
        If not FileExists($to_proxy) Then
    ;    получение данных на порту proxy
    ;    $GET = _TCPRecv($socket, $buf)
        $GET = _TCPRecv($proxySocket, $buf)
    _MsgBox (0, "получено с 127.0.0.1:8080", $GET&@CRLF&@CRLF&"binary="&IsBinary($GET)&@CRLF&"@error="&@error&@CRLF&"$buf="&$buf)
            If $GET<>"" Then
                If FileExists($to_listen) Then
                    $file = FileOpen ($to_listen, $b+2)
                    If $file = -1 Then
                        MsgBox(0, "Error", "buffer error")
                        Exit
                    EndIf
                    FileWrite($file, $GET)
                    FileClose($file)
                Else
                    _FileCreate($to_listen)
                    $file = FileOpen ($to_listen, $b+1)
                    If $file = -1 Then
                        MsgBox(0, "Error", "buffer error")
                        Exit
                    EndIf
                    FileWrite($file, $GET)
                    FileClose($file)
                EndIf
    ;        Else
    ;    переключение порта в режим ожидания|приема
    ;            $socket = TCPAccept($proxySocket)
            EndIf
        EndIf
        $data = ""
        $GET = ""
    WEnd
    ProgressOff ( )
        
     If $ConnectedSocket <> -1 Then TCPCloseSocket($InputSocket)
     If $proxySocket <> -1 Then TCPCloseSocket($InputSocket)
     TCPShutdown()
    EndFunc    
     
    Func _MsgBox ($m, $s, $g)
        MsgBox($m,$s,$g,0)
    EndFunc
     
    Func _TCPRecv ($soc, $buf)
       Return TCPRecv ($soc, $buf, 0)
    EndFunc
     
     

    последняя функция переписана для форума =) она у меня реально в скрипте используется в старом виде где проходит проверка на бинарность полученного, НО ! на любые данные она реагирует, что данные строковые, кроме тех, что читаются из бинарного файла =)

    Всего записей: 12 | Зарегистр. 02-06-2009 | Отправлено: 13:04 09-06-2009 | Исправлено: moto25ru, 13:12 09-06-2009
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    moto25ru, может это чем-то поможет: Proxy Server Socks5 (almost fully working)
    з.ы.
    пряч большой код под тег [more=море...][/more]

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 18:47 09-06-2009 | Исправлено: ynbIpb, 18:47 09-06-2009
    hunter19

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Привет всем, кто-нибудь знает скрипт, который бы генерировал au3-код без лишних переменных и функций, находящихся в #include-файлах, чтобы позже получить exe малого размера.
    Искал на офф. форуме - не нашёл.
     
    Пару дней назад пробовал сделать подобное, но попалась проблема с комментариями.
    Не знаю, как вычислить комментарии в au3-коде. Проблема в том, что ; #cs #ce могут содержаться в строках, которые в свою очередь окружены кавычками " или ',  
    помимо крайних кавычек могут быть одинарные и двойные кавычки в середине.

    Всего записей: 86 | Зарегистр. 28-02-2007 | Отправлено: 15:26 10-06-2009
    NIKZZZZ



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

    Цитата:
    Привет всем, кто-нибудь знает скрипт, который бы генерировал au3-код без лишних переменных и функций, находящихся в #include-файлах, чтобы позже получить exe малого размера.

    Для этого нужно при компиляции включить   Obfuscator с опцией /striponly
     
     
     
     
    Добавлено:
    Или использовать  Project Manager

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 15:35 10-06-2009
    hunter19

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    NIKZZZZ
    Спасибо большое. Project Manager как раз то, что нужно.
     

    Всего записей: 86 | Зарегистр. 28-02-2007 | Отправлено: 16:13 10-06-2009
    Hackproof



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    При работе двух скриптов по сети и передаче данных от одного к другому, после TCPCloseSocket($socket) соединение остается висеть на клиенте (инициаторе) в состоянии CLOSE_WAIT, на сервере(ждущем подключения) в состоянии FIN_WAIT.
    И каждое новое соединение после отработки и закрытия прибавляется к висящим.  
    TCPCloseSocket($socket) всегда возвращает 1, то есть успешное закрытие сокета, но тем не менее, через пару часов в TCPView длинный список мертвых душ...

    Всего записей: 106 | Зарегистр. 24-05-2008 | Отправлено: 19:26 10-06-2009
    2133pavel2133

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.  Я выше задавал вопрос, но видимо плохо его сформулировал.
    Попробую еще раз. Клиент-сервер программа.
    Клиент дает запрос, и до получения ответа находится в состоянии ожидания.
    Полученные данные считываются Autoit программой с клиента естессно.
    Сейчас я ставлю Sleep(1000) между запросами, и в 90% случаев это работает правильно.
    Но, когда ответ задерживается больше, чем на секунду, данные смешиваются.
    Кроме того, когда запросов 100 и больше, если последний ответ задержался на парусекунд, все проходится начинать с начала. Задача определить,
    когда пришел ответ, и можно делать новый запрос.
     
    Теперь конкретно. Я пытался сделать это по состоянию кнопки "Search". Autoit Info
    >>>> Window <<<<
    Title:    Main
    Class:    WindowsForms10.Window.8.app11
    Position:    1685, 0
    Size:    235, 861
    Style:    0x16CE0000
    ExStyle:    0x00050100
    Handle:    0x000601DE
     
    >>>> Control <<<<
    Class:    WindowsForms10.Window.8.app11
    Instance:    172
    ClassnameNN:    WindowsForms10.Window.8.app11172
    Advanced (Class):    [CLASS:WindowsForms10.Window.8.app11; INSTANCE:172]
    ID:    132394
    Text:    Search
    Position:    144, 69
    Size:    64, 24
    ControlClick Coords:    47, 10
    Style:    0x56010000
    ExStyle:    0x00000000
    Handle:    0x0002052A
     
    Визуально, после запроса, она остается в нажатом состоянии, до прохода ответа.
    Я делал так:
     
    While Not ControlCommand ("Main", "", "[CLASS:WindowsForms10.Window.8.app4; INSTANCE:172]","IsEnabled", "")
    sleep(10)
    WEnd
     
    Но этот код у меня не работает,  ControlCommand  всегда равна 1. Я пробовал другие option этой комманды, но без результата.
    Я так же пробовал GUICtrlRead. Дело в том, что кнопка не становится "серой", как в примерах, которые я нашел в интернете, она все время "видна" и "включена" для Autoit.
     
    В чем здесь проблема? Может ли кто-то поделиться идей, или ссылкой? Может у элемента есть еще какие-нибудь параметры, которые стоит проверить?

    Всего записей: 7 | Зарегистр. 05-06-2009 | Отправлено: 02:56 11-06-2009 | Исправлено: 2133pavel2133, 03:00 11-06-2009
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2133pavel2133, странно у меня работает эта функция. навалял пример:
    эмитатор окна с неактивной кнопкой...
    и  
    следящая за этим окном программа...
    Запускаешь первую прогу и вторую, потом на первой жми кнопку и на второй жми кнопку.
    з.ы.
    а эта программа  на VB.NET тобой написана? тогда удобнее сделать чтоб кнопка "Search" меняла свой текст при завершении поиска и тогда: ControlGetText ( "title", "text", controlID) рулит.

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 09:32 11-06-2009 | Исправлено: ynbIpb, 09:45 11-06-2009
    2133pavel2133

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    @ynbIpb. Спасибо за ответ.
     

    Цитата:
    а эта программа  на VB.NET тобой написана?
    Ээх, хорошо бы
     
    Это программа для сбора статистики по игрокам, для покеррумов.
    http://www.poker-edge.com/download.php
    Инсталяции не требует, но база в интернете, поэтому нужно соединение. Весит 12мб.
    Возможно, у тебя будет возможность глянуть. Трайл по моему дней 5. После запуска жми "Free Trial", и потом при выборе покеррума "skip launch". Она будет работать, но покерный софт устанавливать не надо. В окне "Main", верхняя строка "Player", раскроешь ее, и увидишь искомую кнопку "search".
     
    Твой код я изменил до вида
     
        $Status=0    
    While 1
        Switch $Status
            Case $Status=1
                ExitLoop
            EndSwitch
    $Status = ControlCommand ("Main", "", "[CLASS:WindowsForms10.Window.8.app4; INSTANCE:172]", "IsEnabled" ,"")
    WEnd
     
    и вставил сразу за запросом статистики вместо Sleep(1000). Oн проходит "без остановки". т.е данные обновится не успевают.
     
    Выглядит этот кусок так:
     
    Func PlrStat($pnum)
        ControlFocus("Main", "", "[CLASS:WindowsForms10.EDIT.app4; INSTANCE:1]")
        ControlSend("Main", "", "[CLASS:WindowsForms10.EDIT.app4; INSTANCE:1]", $p1[$pnum][0])   ;ввод имени игрока
        Controlclick("Main", "", "[CLASS:WindowsForms10.Window.8.app4; INSTANCE:172]")                 ; нажать кнопку search
       ;Sleep(1000)   это я отключил
    ;-------------------дальше твой кусок
     $Status=0      
        While 1
            Switch $Status
                    Case $Status=1
                           ExitLoop
                     EndSwitch
        $Status = ControlCommand ("Main", "", "[CLASS:WindowsForms10.Window.8.app4; INSTANCE:172]", "IsEnabled" ,"")
        WEnd
    ;--------------------
        $p1[$pnum][1] = ControlGetText("Main", "", "[CLASS:WindowsForms10.Window.8.app4; INSTANCE:16]")   ; прочесть данные
        $n=$pnum        
    StatShow($n) ; показать полученные данные
    EndFunc
     
    ну и вызывается это дело в цикле для каждого человека, по их количеству. Без sleep(1000) данные на нового человека получаются такие же, как и на предыдущего, что печально.
     

    Всего записей: 7 | Зарегистр. 05-06-2009 | Отправлено: 11:20 11-06-2009 | Исправлено: 2133pavel2133, 13:30 11-06-2009
    Sergey_Demchuk



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Такой вопрос.
    Настройки сервера автообнов Windows
    В групповой политике это задается с помощью ключей в реестре по адресу
    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\{10411CDD-D21D-41E6-A6CD-DCE52DED3CCE}Machine\Software\Policies\Microsoft\Windows\WindowsUpdate]
     
    Значение {10411CDD-D21D-41E6-A6CD-DCE52DED3CCE} для каждого компа разное. Как бы это скриптом можно было это значение вычислить из реестра, чтобы потом вносить туда изменения?

    Всего записей: 3551 | Зарегистр. 16-12-2002 | Отправлено: 11:57 11-06-2009
    2133pavel2133

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Должна ли функция Exit находится обязательно только в конце программы?
     
    Можно ли поместить ее например в середину нескольких вложенных циклов(или одну в конце, и две-три в середине)?
    Будет ли это работать, и если да, то не приведет ли такая программа после нескольких запусков к краху windows?

    Всего записей: 7 | Зарегистр. 05-06-2009 | Отправлено: 13:22 11-06-2009
    ynbIpb



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

    Цитата:
    данные на нового человека получаются такие же, как и на предыдущего

    ну эт уже какието особенности проги на VB. (скачать нет возможности) поиграйся с  паузами...
     
    Sergey_Demchuk, к сожалению у меня такого нет в реестре, но копать думаю нужно в сторону :  
    RegEnumKey ( "keyname", instance )
    ну типа перебираешь в цикле все ключи в этой ветке и проверяешь на совпадение с какимнибудь постоянным значением.
    Вот пример как я вытаскивал все ключи в ветке унистал: _ALLprogs()
     

    Цитата:
    Должна ли функция Exit

    Смысле Exit ?
    Это завершение работы скрипта? Конечно можно где угодно ставить, например в середине кода при проверке какого либо условия, если оно не выполено то просто завершается работа и не важно что там дальше в коде.

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 13:25 11-06-2009 | Исправлено: ynbIpb, 13:29 11-06-2009
    2133pavel2133

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

    Цитата:
    Это завершение работы скрипта? Конечно можно где угодно ставить,

    Да, завершение. Ну и хорошо, что где угодно можно.
     
    По поводу программы:
     
    функция
    Controlclick("Main", "", "[CLASS:WindowsForms10.Window.8.app4; INSTANCE:172]")  
     
    работает нормально, а почти такая же там же
     
    ControlCommand ("Main", "", "[CLASS:WindowsForms10.Window.8.app4; INSTANCE:172]", "IsEnabled" ,"")  
     
    работать отказывается напрочь, и черт его знает почему. Есть повод впадать в отчаяние....
     

    Цитата:
    поиграйся с  паузами...
     

     
    Паузы, это как раз то, чего я хочу избежать.
    и спасибо еще раз за ответы.
     
    з.ы. Спустя пару часов нашел решение. Увидел таки текстовую строку, которая изменяестся по окончании search.
    И называется она просто Player:ххх, где ххх - имя игрока. Ну кто спрашивается мешал поднять глаза
    на 5 сантиметов выше двумя днями раньше. Ладно, expirience приходит с опытом. А кнопка так и осталась загадкой.

    Всего записей: 7 | Зарегистр. 05-06-2009 | Отправлено: 13:41 11-06-2009 | Исправлено: 2133pavel2133, 21:23 11-06-2009
    pilothats

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

    Всего записей: 4 | Зарегистр. 11-06-2009 | Отправлено: 21:58 11-06-2009 | Исправлено: pilothats, 10:41 14-06-2009
       

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

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)
    Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru