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


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    ZeeX

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

    Цитата:
    Как?  

    В общем после некоторых экспериментов я вставил одну строчку туда где $BFFM_INITIALIZED  

    Код:
               Case $BFFM_INITIALIZED
                DllCall("user32.dll","int","SendMessage", "hwnd", $hWnd, "int", $BFFM_SETSELECTIONW, "int", 1, _
                    "ptr", DllStructGetPtr($uCB, 1))
     
                DllCall("User32.dll", "int", "SendMessage", "hwnd", $hWnd, "int", $BFFM_ENABLEOK, "int", 0, _
                     "ptr", 0)
     
                $sRet = DllCall("shell32.dll", "int", "SHParseDisplayNameW", _
                    "wstr", DllStructGetData($uCB, 1), "ptr", 0, "ptr", DllStructGetPtr($uTB, 2), "int", 0, "ptr", 0)

     
    и заработало!)

    Всего записей: 15 | Зарегистр. 14-12-2007 | Отправлено: 08:01 02-03-2009 | Исправлено: ZeeX, 08:17 02-03-2009
    vicbox777



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sproxy 23:53 01-03-2009
    Цитата:
    тут явно как-то через windows надо, так как в AutoIt:  
     GUICtrlSetBkColor  
     Замечания  
     В настоящее время могут раскрашиваться только такие управляющие элементы, как Button, Label, Checkbox, Group, Radio, Edit, Input, List, Listview, ListviewItem, Treeview, TreeviewItem, Graphic, Progress и Slider.

    Вот и я об этом же. Может решения и нету?

    Всего записей: 162 | Зарегистр. 17-06-2008 | Отправлено: 12:29 02-03-2009
    EVGEN1404

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    2 ALL
    День Добрый =)
    Вот возник вопрос... вроде бы строчка простая, но все же почему то не робит ( может кто поможет)
    необходимо чтобы при загрузке скрипта, при определенном условии, выполнялась команда, описанная в radio group
     
    Global $x
    ...
    If @ComputerName = "123" Then ($x=$Radio_1) Else ($x=$Radio_2)
    GuiCtrlSetState($x, $GUI_CHECKED)
    ...
    Case $msg = $Radio_1
    GUICtrlSetPos($Tab_1, 0, 0, -1, 20)
     
    Case $msg = $Radio_2
    GUICtrlSetPos($Tab_1, 0, 0, 394, 138)

    Всего записей: 10 | Зарегистр. 02-03-2009 | Отправлено: 12:37 02-03-2009 | Исправлено: EVGEN1404, 12:41 02-03-2009
    vicbox777



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    EVGEN1404 11:37 02-03-2009
    Цитата:
    Вот возник вопрос... вроде бы строчка простая, но все же почему то не робит ( может кто поможет)

    Идею вкратце опиши, что ты хочеш чтобы выполнял данный скрипт...а то суть непоняна. Вернее суть понятна, но код непонятен.

    Всего записей: 162 | Зарегистр. 17-06-2008 | Отправлено: 13:07 02-03-2009 | Исправлено: vicbox777, 13:24 02-03-2009
    EVGEN1404

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вот так выглядит в оригинале
     
    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
     
    Global $x
    GUICreate("Test", 400, 170, 50, 50, 1, 4096)
     
    $Radio_1 = GuiCtrlCreateRadio("1", 300, 0)
    $Radio_2 = GuiCtrlCreateRadio("2", 335, 0)
    $Tab_1 = GuiCtrlCreateTab(0, 0, 394, 138)
    $Tab_Item_1 = GuiCtrlCreateTabItem("Tab_Item_1")
    $Tab_Item_2 = GuiCtrlCreateTabItem("Tab_Item_2")
     
    If @ComputerName = "123" Then ($x=$Radio_1) Else ($x=$Radio_2)
    GuiCtrlSetState($x, $GUI_CHECKED)
     
    GuiSetState()
     
    While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $Radio_1
            GUICtrlSetPos($Tab_1, 0, 0, -1, 20)
            GuiCtrlSetState($Radio_1, $GUI_CHECKED)
        Case $msg = $Radio_2
            GUICtrlSetPos($Tab_1, 0, 0, 394, 138)
            GuiCtrlSetState($Radio_2, $GUI_CHECKED)
        Case $msg = $GUI_EVENT_CLOSE        
            ExitLoop
    EndSelect
    WEnd
    Exit
     
    Надо чтобы при выполнении условия обрабатывался соответствующий радиобаттон...
    а у меня он даже не выделяетса

    Всего записей: 10 | Зарегистр. 02-03-2009 | Отправлено: 13:50 02-03-2009
    Belfigor au3



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А есть ли возможность с помощью автоит, считать в пере менные, все значения хранящиеся в памяти отдельного процесса с целью потом использовать эти переменные для сравнения между собой? Что-то по тому же принципу по которому работает Art Money

    Всего записей: 20 | Зарегистр. 14-02-2009 | Отправлено: 13:57 02-03-2009 | Исправлено: Belfigor au3, 13:59 02-03-2009
    vicbox777



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    EVGEN1404 12:50 02-03-2009
    Цитата:
    Надо чтобы при выполнении условия обрабатывался соответствующий радиобаттон...  
     а у меня он даже не выделяетса

    Подробнее...

    Всего записей: 162 | Зарегистр. 17-06-2008 | Отправлено: 14:06 02-03-2009 | Исправлено: vicbox777, 14:44 02-03-2009
    EVGEN1404

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vicbox777
     
    Спасибо канеш, но это понятно... не совсем то...
    а если в обработчике radio куча команд, на пол листа... как то натяжно по десять раз это прописывать в скрипте )))
    может есть другой способ... я чет пока не могу допетрить

    Всего записей: 10 | Зарегистр. 02-03-2009 | Отправлено: 14:12 02-03-2009
    vicbox777



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    EVGEN1404 13:12 02-03-2009
    Цитата:
    может есть другой способ... я чет пока не могу допетрить

    Тогда, так:

    Код:
    #include <GUIConstants.au3>  
    #include <GUIConstantsEx.au3>  
    #include <WindowsConstants.au3>  
     
    GUICreate("Test", 400, 170, 50, 50, 1, 4096)  
    $Radio_1 =
    GuiCtrlCreateRadio("1", 300, 0)  
    $Radio_2 =
    GuiCtrlCreateRadio("2", 335, 0)  
    $Tab_1 =
    GuiCtrlCreateTab(0, 0, 394, 138)  
    $Tab_Item_1 =
    GuiCtrlCreateTabItem("Tab_Item_1")  
    $Tab_Item_2 =
    GuiCtrlCreateTabItem("Tab_Item_2")  
    GuiSetState()  
    If @ComputerName = "123" Then
    _Radio_1()
    Else  
    _Radio_2()
    Endif
     
    While
    1  
    $msg =
    GUIGetMsg()  
    Select  
    Case
    $msg = $Radio_1  
    _Radio_1()
    Case $msg = $Radio_2  
    _Radio_2()
    Case $msg = $GUI_EVENT_CLOSE  
    ExitLoop  
    EndSelect  
    WEnd  
    Exit
     
    Func
    _Radio_1()
       
    GUICtrlSetPos($Tab_1, 0, 0, -1, 20)  
    GuiCtrlSetState($Radio_1, $GUI_CHECKED)  
    EndFunc
    ;_Radio_1()
     
    Func _Radio_2()
       
    GUICtrlSetPos($Tab_1, 0, 0, 394, 138)  
    GuiCtrlSetState($Radio_2, $GUI_CHECKED)  
    EndFunc
    ;_Radio_2

    Всего записей: 162 | Зарегистр. 17-06-2008 | Отправлено: 14:21 02-03-2009
    EVGEN1404

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vicbox777  
     
    СПАСИБО огромное, вроде работает )))
    я помню назначал функцию, но чет тогда не вышло... хз почему
    Еще раз спасиб )

    Всего записей: 10 | Зарегистр. 02-03-2009 | Отправлено: 14:26 02-03-2009
    ramsladerz

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вообщем хотелось бы узнать у местных гуру как сделать 2 вещи:
    1)    Можно ли передавать переменные в скрипт и как их там ловить (как в командном файле run.bat %1 %2)
    2)    В стандартном manual есть пример простого клиент серверного чата можно ли его модифицировать для создания более одного  соединения (+ чтобы не закрывался во время разрыва соединения с клиентом)
     

    Код:
    #include <GUIConstantsEx.au3>
     
    Opt('MustDeclareVars', 2)
    ;==============================================
    ;SERVER!! Start Me First !!!!!!!!!!!!!!!
    ;==============================================

     
    Example()
     
    Func Example()
        Local $szIPADDRESS = "***"
        Local $nPORT = 33891
        Local $MainSocket, $GOOEY, $edit, $ConnectedSocket, $szIP_Accepted
        Local $msg, $recv
     
        TCPStartup()
     
        $MainSocket = TCPListen($szIPADDRESS, $nPORT)
        If $MainSocket = -1 Then Exit
     
        ; GUI menu
        $GOOEY = GUICreate("GUI log", 300, 200)
        $edit = GUICtrlCreateEdit("", 10, 10, 280, 180)
        GUISetState()
     
        ; Initialize a variable to represent a connection
        ;==============================================

        $ConnectedSocket = -2
     
        ;Wait for and Accept a connection
        ;==============================================

        Do
            $ConnectedSocket = TCPAccept($MainSocket)
        Until $ConnectedSocket <> -1
     
        ; Get IP of client connecting
        $szIP_Accepted = SocketToIP($ConnectedSocket)
     
        ; GUI Message Loop
        ;==============================================

        While 1
            $msg = GUIGetMsg()
     
            ; GUI Closed
            ;--------------------

            If $msg = $GUI_EVENT_CLOSE Then ExitLoop
     
            ; Try to receive (up to) 2048 bytes
            ;----------------------------------------------------------------

            $recv = TCPRecv($ConnectedSocket, 2048)
     
            ; If the receive failed with @error then the socket has disconnected
            ;----------------------------------------------------------------

            If @error Then ExitLoop
     
            ; Update the edit control with what we have received
            ;----------------------------------------------------------------

            If $recv <> "" Then GUICtrlSetData($edit, _
                    $szIP_Accepted & " > " & $recv & @CRLF & GUICtrlRead($edit))
        WEnd
     
        If
    $ConnectedSocket <> -1 Then TCPCloseSocket($ConnectedSocket)
     
        TCPShutdown()
    EndFunc   ;==>Example
     
    ; Function to return IP Address from a connected socket.
    ;----------------------------------------------------------------------

    Func SocketToIP($SHOCKET)
        Local $sockaddr, $aRet
     
        $sockaddr
    = DllStructCreate("short;ushort;uint;char[8]")
     
        $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
                "ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
        If Not @error And $aRet[0] = 0 Then
            $aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
            If Not @error Then $aRet = $aRet[0]
        Else
            $aRet = 0
        EndIf
     
        $sockaddr = 0
     
        Return $aRet
    EndFunc   ;==>SocketToIP

    Всего записей: 3 | Зарегистр. 02-03-2009 | Отправлено: 17:18 02-03-2009 | Исправлено: ramsladerz, 17:23 02-03-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ZeeX 08:01 02-03-2009
    Цитата:
    после некоторых экспериментов я вставил одну строчку туда где $BFFM_INITIALIZED

    Не совсем правильно, оно так всегда будет отключено, даже если в папке есть искомые файлы. В примерах что и привёл ранее эта проблема решена.
     
    Добавлено:
    ramsladerz 17:18 02-03-2009
    Цитата:
    Можно ли передавать переменные в скрипт и как их там ловить

    Да, см. в справке раздел Command Line Parameters.
     

    Цитата:
    можно ли его модифицировать для создания более одного  соединения

    Одновременного? Не думаю...

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 20:04 02-03-2009
    sproxy



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

    Цитата:
    Можно ли передавать переменные в скрипт и как их там ловить (как в командном файле run.bat %1 %2)

    пример
     
    EVGEN1404

    Код:
    GUIStartGroup()
    может помочь:

    Код:
    #include <GUIConstantsEx.au3>
     
    Opt('MustDeclareVars', 1)
     
    Example()
     
    Func Example()
        Local $button_1, $group_1, $radio_1, $radio_2, $radio_3
        Local $radio_4, $radio_5, $radio_6, $input_1, $input_2
        Local $radioval1, $radioval2, $msg
     
        Opt("GUICoordMode", 1)
     
        GUICreate("Radio Box Grouping Demo", 400, 280)
     
        ; Create the controls
        $button_1 = GUICtrlCreateButton("B&utton 1", 30, 20, 120, 40)
        $group_1 = GUICtrlCreateGroup("Group 1", 30, 90, 165, 160)
        GUIStartGroup()
        $radio_1 = GUICtrlCreateRadio("Radio &0", 50, 120, 70, 20)
        $radio_2 = GUICtrlCreateRadio("Radio &1", 50, 150, 60, 20)
        $radio_3 = GUICtrlCreateRadio("Radio &2", 50, 180, 60, 20)
        GUIStartGroup()
        $radio_4 = GUICtrlCreateRadio("Radio &A", 120, 120, 70, 20)
        $radio_5 = GUICtrlCreateRadio("Radio &B", 120, 150, 60, 20)
        $radio_6 = GUICtrlCreateRadio("Radio &C", 120, 180, 60, 20)
        GUIStartGroup()
        $input_1 = GUICtrlCreateInput("Input 1", 200, 20, 160, 30)
        $input_2 = GUICtrlCreateInput("Input 2", 200, 70, 160, 30)
     
        ; Set the defaults (radio buttons clicked, default button, etc)
        GUICtrlSetState($radio_1, $GUI_CHECKED)
        GUICtrlSetState($radio_6, $GUI_CHECKED)
        GUICtrlSetState($button_1, $GUI_FOCUS + $GUI_DEFBUTTON)
     
        ; Init our vars that we will use to keep track of radio events
        $radioval1 = 0    ; We will assume 0 = first radio button selected, 2 = last button
        $radioval2 = 2
     
        GUISetState()
     
        ; In this message loop we use variables to keep track of changes to the radios, another
        ; way would be to use GUICtrlRead() at the end to read in the state of each control.  Both
        ; methods are equally valid

        While 1
            $msg = GUIGetMsg()
            Select
                Case
    $msg = $GUI_EVENT_CLOSE
                    Exit
     
                Case
    $msg = $button_1
                    MsgBox(0, "Button", "Radio " & $radioval1 & @LF & "Radio " & Chr($radioval2 + Asc("A")) & @LF & GUICtrlRead($input_1) & @LF & GUICtrlRead($input_2))
     
                Case $msg = $radio_1 Or $msg = $radio_2 Or $msg = $radio_3
                    $radioval1
    = $msg - $radio_1
     
                Case $msg = $radio_4 Or $msg = $radio_5 Or $msg = $radio_6
                    $radioval2
    = $msg - $radio_4
     
            EndSelect
        WEnd
    EndFunc
      ;==>Example

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 20:25 02-03-2009 | Исправлено: sproxy, 20:27 02-03-2009
    sproxy



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

     

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 02:30 03-03-2009
    ramsladerz

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

    Цитата:
    Одновременного? Не думаю...

     
    Собственно мне нужна удаленная консоль с выводом выполнения скрипта.
    То есть следующие фишки:
    1) Server сообщений не закрывается во время закрытия соеденения с ним.
    2) После закрытия соединения с сервером присутствует возможность вновь соединиться с ним с другова клиента
     
     
    sproxy
    Спасибо за пример

    Всего записей: 3 | Зарегистр. 02-03-2009 | Отправлено: 11:13 03-03-2009 | Исправлено: ramsladerz, 11:16 03-03-2009
    asdfzxcv



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите пожалуйста бьюсь третий день, хочу написать программу которая сканирует сеть и определяет какие хосты в сети по пингу, есть список этих хостов хочу сделать статус бар не нечего не получается он считает всё из расчёта от 1 до 100 не могу допереть как написать год который условную величину количества хостов например 115 укладывал в эту величину 100 я понимаю что как-то надо в процентном соотношении продумать но не допераю или например если хостов будет меньше 100. И ещё не подскажите есть ли какой нибуть способ быстрого пинга мож порты прощупывать или udp пинг какой нибуть а то этот ping какой-то медленный
    Спасибо.

    Всего записей: 57 | Зарегистр. 08-04-2006 | Отправлено: 13:24 03-03-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    asdfzxcv
    а так быстрее ?

    Код:
    $var = Ping("\\192.168.0.2",10)
    If $var Then; also possible:  If @error = 0 Then ...
        Msgbox(0,"Status","Online, roundtrip was:" & $var)
    Else
        Msgbox(0,"Status","An error occured with number: " & @error)
    EndIf

     
     

    Цитата:
    хочу сделать статус бар не нечего не получается

    лучше покажите Ваш код ))
    пример статус бара в справке по UDF`ам есть, в чем именно сложность?
     

    Цитата:
    год который условную величину количества хостов например 115 укладывал в эту величину 100  

    т.е.?
     
    попробуйте точнее/досканальней/конкретнее описать вопрос.
     
    Добавлено:
     
    asdfzxcv
    кстати, если вопрос только "найит активные", то есть готовый софт
    бесплатный, рабочий, и простой...поиск по маске и т.д.

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 13:45 03-03-2009
    asdfzxcv



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    вот получилось сразуже как написал о помощи на форуме)
     
    $hFileWrite = FileOpen(@ScriptDir & "\result-ping.txt", 2)   ;открываем лог-файл в который будем сохранять выбранные строки  
     
    dim $aRecords
     
    ;читаю файл в массив с хостами
    If Not _FileReadToArray("net.txt",$aRecords) Then
       MsgBox(4096,"Error", " Error reading log to Array     error:" & @error)
       Exit
    EndIf
     
    ;вот начинает колбаса
    ProgressOn("Обработка сети", "Всего компьютеров total: "&$aRecords[0], "0 percent","500","500",16)
     
    $iPrecent = 0
    While 1
        For $x= 1 to $aRecords[0]
            
        ;вот тут была вся загвоздка "Увеличиваем прогресс"
        $sum=100/$aRecords[0]
        $iPrecent += $sum
        ProgressSet($iPrecent, $x&"- Компьютер:   " & $aRecords[$x])
     
        ;Спим 0.5 секунд
        Sleep(500)
     
    next
    ;вываливаемся по условия статус бара
       If $iPrecent <= 100 Then ExitLoop
        
    WEnd
     
       MsgBox(4096,"ok", "ok")
     
    вот таким образом всё заработало
     
    Почиму я не восползоватся уже написанными сканилками, потому что это только часть моей программы, она просто работает с сетью но перед тем как внести изменеия накомпьютер она сканит какие компы в сети, со статусом очень красиво, а потом начинает обрабатывать например отключать какой нибуть сервис у всех и тут тоже красиво статус бар показывает сколько осталось.
    ping очень тормозной к зажалению вот у других программ просто мухой сеть сканется, как бы тут так сделать

    Всего записей: 57 | Зарегистр. 08-04-2006 | Отправлено: 13:58 03-03-2009
    sproxy



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

    ramsladerz
    если через клиент/сервер не получится, можно попробовать сделать через файлы...
    думаю можно использовать удаленно базу sql...
     
    офф форум:
    клиент серверные направления
    и еще что то интересное
     
    но думаю верно было сказанно:

    Цитата:
    Одновременного? Не думаю...

     
     

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 14:10 03-03-2009
    Belfigor au3



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

    Всего записей: 20 | Зарегистр. 14-02-2009 | Отправлено: 14:27 03-03-2009 | Исправлено: Belfigor au3, 14:31 03-03-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.Board
    © Ru.Board 2000-2017

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru