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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    puchokbest в шапке есть ссылка с готовыми скриптами по установке приложений, совет ознакомся, есть много интрересных готовых примеров. Извлеки скачанные архивы и воспользуйся поиском по текстам в скриптах, например используя "Search and Replace 5", и найдешь все примеры копирования файлов, твиков реестра, блокирование мыши и клавиатуры во время исполнения скрипта, переменные разного вида, как они правильно прописываются в строки реестра, используемые переменные, большой список которых найдёшь в русской справке, эмуляция нажатий клавишь, скрытие икноки аутоита в трее и т.д.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 11:33 04-06-2009
    moto25ru



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    меня как-то игнорируют... =(  
    нашел пример простого чата в инете и постарался адаптировать, результат отрицательный ! скрипт только через ну ООочень долгое время создал таки первый файл с запросом на сервер, хотя когда я добавил MsgBox-ы на прием было пусто со всех сторон ! неужели нельзя одновременно прослушивать 2 порта на прием ? если нет, то как быть ? я же не могу знать заранее с какой стороны "постучат" и каким образом !
     

    Код:
     
    #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;, $BUFF, $cleint_IP_Accepted, $array, $addr $time=1000, $recv = "",  
    Global $to_proxy="temp_proxy", $to_listen="temp_listen"
    Global $buf = 1, $TTL = 100, $i=0, $bin=0, $data="", $GET=""
    Global $MainSocket, $ConnectedSocket, $proxySocket, $socket
     
    Example()
     
    Func Example()
    If FileExists($to_proxy) Then FileDelete($to_proxy)
    If FileExists($to_listen) Then FileDelete($to_listen)
        
    TCPStartUp()
     
    $MainSocket = TCPListen($listen_IP, $listen_PORT,  $TTL )
    If $MainSocket = -1 Then Exit
    $proxySocket = TCPConnect ( $proxy_IP, $proxy_PORT )
    While 1
    ;    проверка на наличие данных для отправки на proxy
        If FileExists($to_proxy) And $proxySocket<>-1 Then
            $file = FileOpen ($to_proxy, 0)
                If $file = -1 Then
                    MsgBox(0, "Error", "Unable to open file.")
                    Exit
                EndIf
            While 1
                $data=FileRead($file, 1)
                If @error == -1 Then ExitLoop
                If @error == 1 Then ExitLoop
                TCPSend ($proxySocket, $data )
                MsgBox (0, "TCPSend ($proxySocket, $data )", $data)
            WEnd
            FileClose($file)
            FileDelete($to_proxy)
        EndIf
    ;    получение данных на локальном порту
        $data = TCPRecv($ConnectedSocket, $buf)
        MsgBox (0, "TCPRecv($ConnectedSocket, $buf)", $data)
    ;    если ошибка получения или окончание получения данных (номера ошибок не известны)
        If @error Then
    ;    переключение порта в режим ожидания|приема
            $ConnectedSocket = TCPAccept($MainSocket)
        Else
    ;    если данные получены
            If $data<>"" Then
                If FileExists($to_proxy)<>1 And $proxySocket<>-1 Then
                    _FileCreate($to_proxy)
                    $file = FileOpen ($to_proxy, 2)
                    If $file = -1 Then
                        MsgBox(0, "Error", "Unable to open file.")
                        Exit
                    EndIf
                    FileWrite($file, $data)
                    FileClose($file)
                ElseIf FileExists($to_proxy) And $proxySocket<>-1 Then
                    $file = FileOpen ($to_proxy, 1)
                    If $file = -1 Then
                        MsgBox(0, "Error", "Unable to open file.")
                        Exit
                    EndIf
                    FileWrite($file, $data)
                    FileClose($file)
                EndIf
            EndIf
        EndIf
        
    ;    проверка на наличие данных для отправки в браузер
        If FileExists($to_listen) And $MainSocket<>-1 Then
            $file = FileOpen ($to_listen, 0)
                If $file = -1 Then
                    MsgBox(0, "Error", "Unable to open file.")
                    Exit
                EndIf
            While 1
                $GET=FileRead($file, 1)
                If @error == -1 Then ExitLoop
                If @error == 1 Then ExitLoop
                TCPSend ($MainSocket, $GET )
                MsgBox (0, "TCPSend ($MainSocket, $GET )", $GET)
            WEnd
            FileClose($file)
            FileDelete($to_listen)
        EndIf
    ;    получение данных на порту proxy
        $GET = TCPRecv($socket, $buf)
        MsgBox (0, "TCPRecv($socket, $buf)", $GET)
    ;    если ошибка получения или окончание получения данных (номера ошибок не известны)
        If @error Then
    ;    переключение порта в режим ожидания|приема
            $socket = TCPAccept($proxySocket)
        Else
    ;    если данные получены
            If $GET<>"" Then
                If FileExists($to_listen)<>1 And $MainSocket<>-1 Then
                    _FileCreate($to_listen)
                    $file = FileOpen ($to_listen, 2)
                    If $file = -1 Then
                        MsgBox(0, "Error", "Unable to open file.")
                        Exit
                    EndIf
                    FileWrite($file, $GET)
                    FileClose($file)
                ElseIf FileExists($to_listen) And $MainSocket<>-1 Then
                    $file = FileOpen ($to_listen, 1)
                    If $file = -1 Then
                        MsgBox(0, "Error", "Unable to open file.")
                        Exit
                    EndIf
                    FileWrite($file, $GET)
                    FileClose($file)
                EndIf
            EndIf
        EndIf
    WEnd
        
     If $ConnectedSocket <> -1 Then TCPCloseSocket($InputSocket)
     If $proxySocket <> -1 Then TCPCloseSocket($InputSocket)
     TCPShutdown()
    EndFunc    
     

    Всего записей: 12 | Зарегистр. 02-06-2009 | Отправлено: 11:43 04-06-2009
    whitebear150980

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

    Код:
    #AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #Include <File.au3>
    #Include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <TreeViewConstants.au3>
    #include <StaticConstants.au3>
    #include <GuiTreeView.au3>
    #include <GuiImageList.au3>
     
     
     
     
     
     
     
    Opt('MustDeclareVars', 0)
    $Debug_TV = False
     
    Example()
     
    Func Example()
         
        Local $msg, $item, $hItem, $text
        Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES, $TVS_TRACKSELECT)
     
        $cfg = 'D:\Magazin\system\system.ini'
        $pathall = IniRead($cfg, 'system', 'all', '')
        $pathdemand = $pathall & IniRead($cfg, 'system', 'demand', '')
        $pathBD = $pathall & IniRead($cfg, 'system', 'BD', '')
        $tmp_tree_tree=@TempDir&'\Tree_tmp.ini'
         
        FileDelete($tmp_tree_tree)
     
         
        GUICreate("My GUI", 1000, 500, 150, 200)  
        $but = GUICtrlCreateButton('', 5, 210, 100, 20)
        $treeview = GUICtrlCreateTreeView(5, 5, 200, 200, $iStyle, $WS_EX_CLIENTEDGE)
        GUISetState()
         
             
        $hImage = _GUIImageList_Create(16, 16, 5, 3)
        _GUIImageList_AddIcon($hImage, "C:\WINDOWS\system32\shell32.dll", 110)
        _GUIImageList_AddIcon($hImage, "C:\WINDOWS\system32\shell32.dll", 131)
        _GUIImageList_AddIcon($hImage, "C:\WINDOWS\system32\shell32.dll", 165)
        _GUIImageList_AddIcon($hImage, "C:\WINDOWS\system32\shell32.dll", 168)
        _GUIImageList_AddIcon($hImage, "C:\WINDOWS\system32\shell32.dll", 137)
        _GUIImageList_AddIcon($hImage, "C:\WINDOWS\system32\shell32.dll", 146)
        _GUICtrlTreeView_SetNormalImageList($treeview, $hImage)
         
        _GUICtrlTreeView_BeginUpdate($treeview)
         
         
        $YearList =_FileListToArray($pathdemand); D:\Magazin\ & demand\ список папок  
         
        For $y=1 To $YearList[0]
            $iImage = Random(0, 5, 1)
            $Yearitem = _GUICtrlTreeView_Add($treeview, 0, StringFormat('[%02d]' & $YearList[$y], $y), $iImage, $iImage)
            $MonthList = _FileListToArray($pathdemand & $YearList[$y] & '\') ; D:\Magazin\ & demand\ & 2009\ получим [05,06]
            If @error Then  
                 
                ExitLoop
            Else
                 
                For $m=1 To $MonthList[0]
                    $Montitem = _GUICtrlTreeView_AddChild($treeview, $Yearitem, StringFormat('[%02d]' & $MonthList[$m], $m), $iImage, $iImage)
                     
                    $DayList = _FileListToArray($pathdemand & $YearList[$y] & '\' & $MonthList[$m] & '\') ; D:\Magazin\ & demand\ & 2009\ & 06\ получим [01]
                    If @error Then
                        ExitLoop
                    Else
                        For $d=1 To $DayList[0]
                            $dayitem = _GUICtrlTreeView_AddChild($treeview, $Montitem, StringFormat('[%02d]' & $DayList[$d], $d), $iImage, $iImage)
                             
                            $FileList = _FileListToArray($pathdemand & $YearList[$y] & '\' & $MonthList[$m] & '\' & $DayList[$d] & '\')
                            If @error Then
                                ExitLoop
                            Else
                                For $f=1 To $FileList[0]
                                    $file_name = StringSplit($FileList[$f],'.')
                                    $stat = IniRead($pathBD & $YearList[$y] & '\' & $MonthList[$m] & '\' & $DayList[$d] & '\' & $file_name[1] & '.ini', 'status', 'status', '4')
                                    $fileitem = _GUICtrlTreeView_AddChild($treeview, $dayitem, StringFormat('[%02d]' & $FileList[$f], $f), $iImage, $iImage)
                                     
                                    ;If $stat = 1 Then GUICtrlSetColor(-1, 0xff0000) ; red
                                    ;If $stat = 2 Then GUICtrlSetColor(-1, 0x0000C0) ; blue
                                    ;If $stat = 3 Then GUICtrlSetColor(-1, 0x00ff00) ; green
                                Next
                            EndIf
                        Next
                    EndIf
                Next
            EndIf
        Next
        _GUICtrlTreeView_EndUpdate($treeview)
         
         
         
         
        $cursor = MouseGetCursor()
         
         
        GUISetState(@SW_SHOW)
        While 1
            $msg = GUIGetMsg()
            Select
                Case $msg = $GUI_EVENT_CLOSE
                    ExitLoop
                             
            EndSelect
        WEnd
     
        GUIDelete()
    EndFunc   ;==>Example
     

     
     
     
    Добавлено:
    а если не через чайлды, все равно откликается только последний созданый

    Код:
     #Include <File.au3>
    #Include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <TreeViewConstants.au3>
    #include <StaticConstants.au3>
    #include <GuiTreeView.au3>
    #include <GuiImageList.au3>
     
    #Region ### START Koda GUI section ### Form=
     
    Local $array[10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    Local $array1[12] = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
     
     
     
    $Form1 = GUICreate("Form1", 629, 453, 193, 115, -1)
    $TreeView1 = GUICtrlCreateTreeView(8, 8, 177, 313)
     
    For $i = 0 To $array[0]
        $TreeView1_0 = GUICtrlCreateTreeViewItem($array[$i], $TreeView1)
        
        For $e = 0 To $array1[0]
            $TreeView1_1 = GUICtrlCreateTreeViewItem($array1[$e], $TreeView1_0)
            
        Next
    Next
     
     
    $Progress1 = GUICtrlCreateProgress(0, 440, 625, 9)
    GUISetState()
    #EndRegion ### END Koda GUI section ###
     
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
     
            Case $TreeView1_0
                MsgBox(0,'',GUICtrlRead($TreeView1_0,1))
            Case $TreeView1_1
                MsgBox(0,'',GUICtrlRead($TreeView1_1,1))
        EndSwitch
    WEnd

    Всего записей: 15 | Зарегистр. 03-06-2009 | Отправлено: 14:43 04-06-2009 | Исправлено: whitebear150980, 14:46 04-06-2009
    moto25ru



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    тот скрипт, что выше - доработан, теперь передача данных не стопорится намертво, т.е. если запрос отправлен - приходит ответ, но.. но не целиком и через некоторое колличество циклов отправляется зеркально назад полученная информация... код не выкладываю т.к. это просто засоряет форум, а советы реально никто не даёт =( как только на меня обратят внимание - выложу последний вариант =) может и пригодится кому, а вообще если через функцию InetGet можно все обрабатывать мимо прокси - былоб даже лучше, но... я с помощью нее умею сохранять только без картинок, а это не вариант.. если бы знать что и с картинками сохранит - был бы отличный выход, особенно если учесть, что натыкался на похожую функцию upload

    Всего записей: 12 | Зарегистр. 02-06-2009 | Отправлено: 16:18 04-06-2009
    whitebear150980

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

    Всего записей: 15 | Зарегистр. 03-06-2009 | Отправлено: 16:29 04-06-2009
    moto25ru



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    to whitebear150980
    не о том речь, мне как-то поровну любит|нелюбит =) есть задача которую надо выполнить, но беда в том, что я не знаю формата сообщений обмена браузера с прокси, а в autoit нет возможности (или я не в курсе) перехватывать пакеты в сети ))) другой вариант был бы в полном отказе от proxy и организация собственного или как вариант нормальное описание функций TCP на autoit.. но никак более подробно чем в help-е они не описываются.. тот же inetget.. он записывает файл в файл.. а если мне нужна вся страница целиком ? или получение и передача информации.. сказано, что
    "Failure: Returns "" and set @error according to Windows API WSAGetError return. " для TCPRecv ... даже самые простые не показали какими могут быть ошибки... а что будет если скажем он берет в буфер данный сперва строковые, а затем и двоичные... т.е. за один заход.. как их разделить !? по одному символу пробовал.. комп так тормозит - что это не вариант вообще =( и т.д. вопросов миллионы, уже испинал google но везде одно и тоже.. отправляют в хелп.. что толку то ? я в бешенстве =(
    просто те, кто уже наступал на эти грабли могут очень сильно помочь уже хоть бы и тем, что сказать, реально или не реально это осуществить... в конце концов это не C где все возможно )))
    а тут тишина..  
    #####
    а по поводу GUI, я в него вообще пока не углубляюсь ))) ну нахрен, и так нормально живется, мнеб сперва функционал освоить, а красотулины потом докручу ))) хотя "выдирать" нужный код из скриптов с GUI умею, всё же раздражает.. можно былоб и не усложнять примеры этими навоторами )))

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    moto25ru, мне кажется у тебя не получится сделать прокси. Как-то я делал socks 4/5 прокси на Perl, так там используется спецфункция select чтобы определять с какого сокета пришли данные (с сайта или от браузера) или есть еще неблокирующие сокеты,незнаю, может еще с многопоточностью можно как-то извернуться. Я уже не помню сокетовые функции Autoit-а, как они ведут себя, поэтому конкретно ничего подсказать не могу, надо экспериментировать.
     
    PS:Вот, решил заглянуть к автоитчикам и посоветовать Вещицу заодно
    Недавно попробовал Visual Basic Net из Visual Studio - это просто сказка какая-то! Честно говоря, стало очень грустно, что столько времени я потратил нерационально
    Раньше я выбирал на чем мне программировать по принципу "попроще" Но в результате получал низкую скорость программ или ограниченный функционал, в частности так было и с Autoit. Приходилось городить жуткий огород... И решил я как-то посмотреть Visual Studio 2008 от Microsoft (среда разработки). Посмотрел в очередной раз Visual C++ там, облизнулся на его возможности и скорость создания GUI, увидел в очередной раз его код ... и закрыл среду. Потом начал смотреть инфу о VB и C#(си шарп) оттуда же. Про С# сразу бросилось в глаза, что он во многом похож на C по синтаксису (а он сложный вспомнил я), а про Visual Basic, что он медленный Ну думаю, опять облом. Потом решил все-таки провести тесты этих языков и оказалось, что VB совсем не медленный, а очень даже быстрый Медленным VB был в прошлых версиях (VB6 и ранее - на инфу о них я и натыкался), а сейчашней VB NET (9) по тестам у меня шел фактически вровень с Visual C++ (для примера, Autoit-программа выполняется на аналогичных операциях в десятки (!) раз медленнее) на протестированных операциях. Но причина по которой я вообще стал смотреть VS 2008 это то, что она стала полностью русской! Без этого будь она хоть трижды крутой и бесплатной, мне бы не подошла. А так, сама среда разработки локализована, справка MSDN  по большей части в нужных местах переведена, хотя есть кое-что не переведенное (пока - вроде, microsoft хочет перевести всю MSDN), но оно мне не нужно (типа разработки для КПК и т.д.). Все что нужно, можно быстро найти в справке (локальной или с сайта microsoft). Названия элементов(например переменных) можно даже писать по-русски если хочется Также там радует технология IntelliSense, которая позволяет вставлять готовые (или свои) фрагменты кода парой кликов кнопок мыши. Можно, например, указав имя название класса и поставив точку увидеть во всплывающей подсказке все возможные методы, свойства, события и т.д., причем с пояснениями на русском и не нужно даже искать их справке (вроде в Visual C++ и C# такое не сделано). Автоматически при наборе кода высвечиваются ошибки (и предлагаются варианты исправления - щелкнул и исправилось само), предупреждения, форматируется он тоже сам, пара секунд компиляции и новый экзешник ждет своего хозяина встроен отладчик, можно например посмотреть значение переменной во время работы программы и еще много чего. Базово похожий на Autoit синтаксис, хотя конечно придется вникнуть в ООП, лучше всего читать какую-нибудь книжечку (VB2005 почти такой же как и VB2008) и параллельно пробовать писать примеры кода из нее. Возможности намного обширенее Autoit-овских, хорошая поддержка microsoft, куча разных других примочек о которых я не упомянул. Не говоря уже о качестве и скорости создания GUI для приложений. Хотя у нас в стране C#, вроде, больше распространен. Были бы у меня свободные 5 тыс рублей или сколько там VS 2008 стоит, отдал бы, по мне она того стоит. Есть VS 2008 Express, она бесплатна, а есть платные версии, функционал у них во многом схож. Где-то видел инфу, что microsoft выдает студентам даже VS2008 Professional бесплатно если отослать копию студенческого, не знаю правда ли это.  
    Теперь я за программированием в VB2008 отдыхаю Прошу прощения за офтопик, но не мог не порадовать За сим откланиваюсь.

    Всего записей: 145 | Зарегистр. 03-06-2007 | Отправлено: 20:45 04-06-2009 | Исправлено: gal7, 18:32 13-08-2009
    whitebear150980

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

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



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

    Всего записей: 1378 | Зарегистр. 26-10-2004 | Отправлено: 02:47 05-06-2009 | Исправлено: CKA3O4H1K, 03:09 05-06-2009
    wellic

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

    Цитата:
    Давно ищу программную реализацию линейки для чтения. Пример  
    Прогу из примера найти не смог.  

     
    Возьми прогу PicPick на http://picpick.wiziple.net/ - это грабилка екрана (висит в трее), в состав входит хорошо настраиваемая линейка (цвет, размер, прозрачность). А на Autoit допиши управление. Я не думаю, что возникнут особые трудности.
     

    Всего записей: 339 | Зарегистр. 06-05-2002 | Отправлено: 03:00 05-06-2009 | Исправлено: wellic, 03:06 05-06-2009
    CKA3O4H1K



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Перепробовал я много линеек и PicPick не подошла.  
    Как минимум тем что при перетаскивании многие не отображаются если стоит опция в Windows "не отображать при перетаскивании". Вроде две подобных линейки нормально таскались, но совсем не настраивались по цвету/прозрачности.
     
    В мире Linux и Mac такие решения есть...
     
     
     
    Добавлено:
    Тут бы хоть горизонтальную линиию отрисовать, мне трудно, потому и прошу.

    Всего записей: 1378 | Зарегистр. 26-10-2004 | Отправлено: 03:08 05-06-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    CKA3O4H1K 02:47 05-06-2009
    Цитата:
    Может кто возьмёться сделать?

    Сделал каркас, на большее не хватило времени.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 03:54 05-06-2009
    CKA3O4H1K



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Спасибо огромное!  
     
    Самое главное - возможно ли сделать так, что бы Линейка замещала курсор, или закреплялась возле него и перемещалась с ним синхронно, дабы не держать нажатой клавишу мышки?  
     
    К примеру после клика правой клавишей мышки закреплялась/откреплялась возле курсора.  
    (и верх мечтаний: скролом с модификатором - изменялся цвет или прозрачность, по среднему/левому клику с модификатором - скрывалась/отображалась)
     
    Еще проблема (как я понимаю, очень трудная) скролинга, когда фокус на Линейке - не прокручивается текст, и даже если стоит программа для прокрутки в окне "под курсором" без активности (фокуса) окна - все равно Линейка "принимает на себя" все прокрутки, клавиши, то есть для навигации приходиться кликать в приложении, прокручиваться и возращатся к Линейке. Здорово было бы сделать Линейку как бы без фокуса и даже без индикации в панели задач.
     
    Ну и по вопросу отображения когда стоит в настройках Windows опция "не отображать сожержимое окон при перетаскивании"... Ну да бог с этим делом, включу отображение.
     
    Добавлено:
    P.S.: я просто не верю что вот так взялась и появилась из рук ViSiToR a.k.a CreatoR в мир такая чудная и лично мною очень желанная программка...!
    В OperaAC её интегрирую!

    Всего записей: 1378 | Зарегистр. 26-10-2004 | Отправлено: 04:07 05-06-2009 | Исправлено: CKA3O4H1K, 05:09 05-06-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    CKA3O4H1K 04:07 05-06-2009
    Цитата:
    возможно ли сделать так, что бы линейка замещала курсор, или закреплялась возле него и перемещалась с ним синхронно, дабы не держать нажатой клавишу мышки?  

    А где должна быть ленейка по сравнению с курсором?
     

    Цитата:
    К примеру после клика правой клавишей мышки закреплялась/откреплялась возле курсора.  
     (и верх мечтаний: скролом изменялся цвет или прозрачность, по среднему/левому клику с модификатором - скрывалась/отображалась)  
      
     Ну и по вопросу отображения когда стоит в настройках Windows опция "не отображать сожержимое окон при перетаскивании"...

     
    Вот немного(?) подправил - Скролл вверх меняет фоновой цвет, скролл вниз меняет прозрачность.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 05:45 05-06-2009 | Исправлено: ViSiToR, 06:44 05-06-2009
    CKA3O4H1K



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

    Цитата:
    Вот немного(?) подправил  

    Текст сбился в кучу
     

    Цитата:
    А где должна быть ленейка по сравнению с курсором?

    Я не знаю реально ли, что бы Линейка пропускала сквозь себя клики и скролл, потому тут трудно думать.
     
    Если она не сможет работать в режиме "сквозь", тогда лучше конечно когда она замещает курсор (то есть работает прямо под ним, а он скорее просто скрывается). Допустим после клика на Линейке П-К-М она занимает место курсора и перемещается, после еще одного П-К-М, она открепляеться. По Л-К-В она перетаскивается (если реально - пропускает клики сквозь). Просто супер было бы, если в режиме закрепления работал скролл в окне с текстом (браузер/просмотрщик) под курсором.
    А по хоткею умела отображаться, скрываться.
     
    Я не знаю что можно сделать средствами AutoIT, но очень благодарен что Вы отозвались. Спасибо огромное.

    Всего записей: 1378 | Зарегистр. 26-10-2004 | Отправлено: 06:26 05-06-2009 | Исправлено: CKA3O4H1K, 06:28 05-06-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    CKA3O4H1K 06:26 05-06-2009
    Цитата:
    Текст сбился в кучу

    Поправил.
     

    Цитата:
    что можно сделать средствами AutoIT

    В плане манипуляции с окнами, почти всё что вообразимо - Главное правильно поставить задачу. Распишите подробный список функциональности этой ленейки, на досуге попробую сделать (подобные задачи помагают поддерживать “кодинговую форму”, в последнее время не получается кодить).

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

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



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

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

    Линейка для Чтения:

    - Линейка запоминает и берёт цвет, прозрачность, общий размер, размер верхней и нижней полоски в ini-файле
    - В ini-файле можно менять местами роли клавиш мышки
    - Линейка не отображается в Панели задач
    - Esc скрывает Линейку, клик ЛКМ в трее (и хоткей) - отображает
    - Пункты меню при ПКМ по иконке в трее: "Режим отображения", Правка ini-фала, Выход
     
    - Клики ЛКМ и ПКМ по Линейке в пасивном режиме Линейки происходит сквозь неё.
     
    - Клик Средней-К-М изменяет "режимы привязки":
    а) Нормальный: Линейка имеет установленный размер, курсор мышки по умолчанию скрыт, но клики мышки обрабатываются в окне под курсором (кроме средней).
    б) Максимальный: Линейка в ширину имеет размер текущего монитора, то есть полностью пересекает текущий монитор по горизонтали, а в высоту по умолчанию просто цветная/чёрная линия. Курсор мышки по умолчанию отображается,  двигаться по горизонтали и по вертикали, Линейка следует за курсором по вертикали. Клики мышки обрабатываются в окне под курсором (кроме средней).
     
    - В режимах "привязок" обрабатываются клики ЛКМ и ПКМ (по ссылкам, кнопкам) и работают хоткеи, скроллинг в активном окне,  
     
    - При одновременном клике ПКМ+ЛМК по Линейке - она "привязываеться" к курсору в том месте где произошел клик. Включается текущий "режим привязки". Курсор скрывается как это указано в ini-файле. При повторном нажатии данного сочетания - Линейка отвязывается, отображается курсор если был скрыт.
     
    - При зажатом Shift + Средняя-КМ: прокрутка вверх - цвет, вниз - прозрачность. Комбинации прокрутки с Alt и Ctrl работают в окне под курсором (маштабирование).

     
    А тут мне уже и нечего сказать.
    Очень надеюсь, то что выйдет у Вас ViSiToR, пригодиться многим и многим читающим сапиенс.  
    Жду отзывов. Огромное спасибо!

    Всего записей: 1378 | Зарегистр. 26-10-2004 | Отправлено: 08:27 05-06-2009 | Исправлено: CKA3O4H1K, 10:59 05-06-2009
    whitebear150980

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

    Цитата:
    В плане манипуляции с окнами, почти всё что вообразимо  - Главное правильно поставить задачу.

    ловлю на слове.
    Итаг итоговый вопрос:
    Как сделать активными элементы дерева GUI, если они считываются как массив (список файлов) с помощью For To. Пример скрипта приведен выше, извините что не  в цвете.

    Всего записей: 15 | Зарегистр. 03-06-2009 | Отправлено: 10:20 05-06-2009 | Исправлено: whitebear150980, 10:38 05-06-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    whitebear150980 10:20 05-06-2009
    Цитата:
    ловлю на слове

    Это не лучший метод привлеч внимания к своей проблеме. Если многое возможно на AutoIt, это ещё не значит что я буду это реализовывать. Я если честно ваш пост пропустил по одной простой причине - он слишком большой
     

    Цитата:
    Как сделать активными элементы дерева GUI, если они считываются как массив (список файлов) с помощью For To. Пример скрипта приведен выше

    Пример не рабочий для меня, и если честно с предыдущего поста задача не ясна, что значит «сделать активными элементы дерева GUI»?

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:26 05-06-2009
    whitebear150980

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

    Цитата:
     Это не лучший метод привлеч внимания к своей проблеме.  

     
    Прошу прощения, это от безнадеги
     
     

    Цитата:
    Пример не рабочий для меня, и если честно с предыдущего поста задача не ясна, что значит «сделать активными элементы дерева GUI»?

     
     
    Замените значение $pathdemand на любой каталог, содержащий папки и файлы
     
    Я считываю каталог файлов в массив и перебираю массив, последовательно записываю в дерево, но активным (дающим отклик) остается только последняя запись. Остальные просто нарисованы.  
    Мне же надо чтобы при выборе файла в моем дереве, давала отклик (в идеале имя файла). Причем мне надо именно дерево, иначе пиплы не смогут корректно работать.  
    Временные файлы с путями не помогут, очень большой объём записей получиться (порядка 700 в неделю, и все надо хранить примерно год).  
     
    Единственный вариант приходящий в голову - зделать рядом с деревом окошко Edit, пускай пишут название файла в ручную (т.к. имена уникальны) и потом по кнопке искать в заданном каталоге

    Всего записей: 15 | Зарегистр. 03-06-2009 | Отправлено: 16:49 05-06-2009 | Исправлено: whitebear150980, 17:07 05-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