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


Система 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
    SVDraiv

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрых суток. Подскажите комаду с помощью которой можно найти нужные куски HTML текста в IE. Желательно показать пример этой команды...

    Всего записей: 7 | Зарегистр. 08-07-2009 | Отправлено: 06:56 09-07-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    SVDraiv 06:56 09-07-2009
    Цитата:
    Добрых суток. Подскажите комаду с помощью которой можно найти нужные куски HTML текста в IE. Желательно показать пример этой команды...

     
    Все те же: StringRegExp / StringRegExpReplace
     

    Код:
    Opt('MustDeclareVars',      1)
    Opt('TrayIconDebug',        1)
     
    #include <Array.au3>
    #include <IE.au3>
     
    HotKeySet('{ESC}', '_Pro_Exit'); ESC - Закрыть скрипт
     
    Local $oIE = _IECreate('http://www.google.ru/search?hl=ru&q=AutoIt')
    Local $sHTML = _IEBodyReadHTML($oIE)
    ClipPut($sHTML)
    Local $aNick = StringRegExp($sHTML, '(?s)(?U)(?i).+<H3 class=r><A.+>(<EM>AutoIt</EM>.+)</A>.+', 3)
    If NOT @error Then
        _ArrayDisplay($aNick, 'Google поиск "AutoIt"')
    Else
        MsgBox(48, 'Google поиск "AutoIt"', 'Cовпадений не найдено')
    EndIf
     
    Func
    _Pro_Exit()
        Exit
    EndFunc

     
    Добавлено:
    Aleksks 05:06 09-07-2009
    Цитата:
    но можно и закинутых в окно программы

    это реально, пример позже..
     

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

    думаю возможно, только пока не знаю как  
     

    Цитата:
    ри нажатии какой-либо комбинации клавиш

    это легко, функция: HotKeySet  
     

    Цитата:
    или переименовались) лишь те папки, которые включают

    и это легко, функции: DirMove  / FileMove

    ----------
    Мысли-читатель сломался…..может подробней расскажите?
    Где исходный код? Или мы стихи обсуждаем?! ))) Тег [more] спасет этот мир !!

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 11:34 09-07-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Aleksks
     
    Пример Drag & Drop файлов и папок в Gui скрипта, и переименовывание полученных ресурсов по фильтру.

    ----------
    Мысли-читатель сломался…..может подробней расскажите?
    Где исходный код? Или мы стихи обсуждаем?! ))) Тег [more] спасет этот мир !!

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 04:04 11-07-2009
    Aleksks

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sproxy
    спасибо за помощь, но должен признаться - сложно для меня всё это. и даже хэлп на русском не особо помогает - для самых начинающих толку от него не много.
    единственное, что я пока сделал - создал файл example.txt, скопировал в него твой пример, переименовал расширение на au3. запускаю - вижу окно drag helper со строкой reg маска фильтра : .+D.+
     
    сделал для примера несколько папок (в одной - 1 ape и 1 cue, в другой - 1 wv, в третьей - 1 flac и 1 cue), кидаю их в это окно, но ведь что в строке набирать - не знаю. мне даже не понятно, что именно править в файле au3 и нужно ли вообще что-то в нём менять.
    прошу, если не сложно, более детально объяснить - с расчётом на человека, который впервые всё это видит

    Всего записей: 96 | Зарегистр. 25-04-2008 | Отправлено: 05:02 11-07-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Aleksks 05:02 11-07-2009
    Цитата:
    прошу, если не сложно, более детально объяснить - с расчётом на человека, который впервые всё это видит

    окей, тогда давай изучать AutoIt.
     
    1. Придется много программировать, думаю для начинающего объем работы именно большим окажется
    2. Имхо, думаю изучение не сложно
    3. Для работы необходима последняя версия компилятора
    4. Желательно эту сборку SciTe
    5. Установить компилятор и SciTe, лучше с параметрами по умолчанию
    6. После, можно будет работать только в редакторе SciTe - в нем писать код и из него же запускть скрипты. Т.е. не придется записывать код в .txt файл и переименовывать расширение
    7. Далее, точная постановка задачи, желательно расписать по пунктам - больше конкретного описания: как должен работать скрипт, что длеать, с чем, как, куда, из чего, во что, где какие кнопочки должны быть и т.д., т.д., т.д. Именно по этому плану необходимо будет писать скрипт.
    8. Далле вывешивай этот план (ТЗ - техническое задание) сбда, опишу будущий алгоритм работы и далее займемся реализацией.

    ----------
    Мысли-читатель сломался…..может подробней расскажите?
    Где исходный код? Или мы стихи обсуждаем?! ))) Тег [more] спасет этот мир !!

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 10:39 11-07-2009
    Rok2y



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребят, а вот скрипт описывающий это как долго и сложно написать?
     

    Код:
    скрипт который может автоматчески переключаться между двумя запущенными приложениями причем с последовательными интервалами: 3 минуты и 10 секунд. При этом программа должна уметь нажимать на клавиатуре любую кнопку, но последовательно с кликом мыши с интервалом 5 секунд, причем желательно что бы можно было задавать интервал вручную от 3 до 30 секунд.


    ----------
    Стивен Кинг Королевский клуб

    Всего записей: 501 | Зарегистр. 13-04-2004 | Отправлено: 12:54 11-07-2009
    Monarhia

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, подскажите плз как выделить нежный radio в IE, если html не стандартный немного:

    Код:
    <td width="10"><input name="quiz_answer" value="7" type="radio"></td>
                <td>When a bet would be more than one third of the chips left in your stack.</td>
     

    Получается что:

    Код:
    </td>
                <td>
     

     
    Не позволяет правильно работать с:

    Код:
    _IEFormElementRadioSelect

    Пробывал вырезать регулярным выражением:

    Код:
    $regexp = StringRegExp($HTML, 'type=\"radio\">(.*?)' & FileReadLine($file_handle, $k+2), 0)

     
    Не сработало подскажите плз, как быть ?
     
    P.S. в FileReadLine($file_handle, $k+2), 0) - находится строка: "When a bet would be more than one third of the chips left in your stack."
     
    Заранее благодарен.

    Всего записей: 1 | Зарегистр. 11-07-2009 | Отправлено: 14:41 11-07-2009 | Исправлено: Monarhia, 14:42 11-07-2009
    Aleksks

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

    Цитата:
    7. точная постановка задачи, желательно расписать по пунктам - больше конкретного описания: как должен работать скрипт, что длеать, с чем, как, куда, из чего, во что, где какие кнопочки должны быть

    1. через определённые промежутки времени будет появляться 100-200 папок
     
    2. их я буду перетаскивать в окно (это будет окно drag helper, по всей видимости)
     
    3. при нажатии на кнопку rename к названию каждой папки, содержащей что-либо, отличное от
    1 файл cue и 1 файл ape
    или
    1 файл cue и 1 файл flac
    или
    1 файл cue и 1 файл wv
    прибавляется в начале символ подчёркивания:  _
     
    запускать сам файл au3 я буду каждый раз из разной папки с помощью своей комбинации клавиш, поэтому не должно быть привязки скрипта к какой-нибудь конкретной папке (но ведь этого и не будет, как я понимаю)

    Всего записей: 96 | Зарегистр. 25-04-2008 | Отправлено: 14:52 11-07-2009
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    пытаюсь понять ответ на мой вопрос.
    $IsEmpty = _DirIsEmpty("c:\Temp") - здесь все имена задаются любые, то есть переменная, название функции, путь. Как переменная понимает что нужно обработать функцией, или если нет кавычек, значит передать функции?
    Func _DirIsEmpty($sPath) - здесь Func - интерпретируемое имя, далее _DirIsEmpty то есть найти _DirIsEmpty и передать её содержимое в переменную $sPath, далее выполнить команды используя $sPath и вернуть результат в $IsEmpty, а если переменная не задана то и ворачивать ничего не надо, то есть выполнить функцию и всё, так?
     
    Ещё вопрос, на каждой вкладке есть одна и та же кнопка "Старт regedit", но прописывать одну и ту же команду для каждой вкладки не хочется, как это выполнить через функцию?

    Всего записей: 3453 | Зарегистр. 03-05-2006 | Отправлено: 15:48 11-07-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Rok2y 12:54 11-07-2009
    Цитата:
    скрипт который может автоматчески переключаться между двумя запущенными приложениями причем с последовательными интервалами: 3 минуты и 10 секунд.  

    и все зависит от уровня наворот в этом скрипте. самое простое мин аз 10-90
     

    Цитата:
    При этом программа должна уметь нажимать на клавиатуре любую кнопку, но последовательно с кликом мыши с интервалом 5 секунд

    на сколько любую? и так можно нажимать на все стандарные и некоторые meday клавиши. Вместе с кликом мышки - то же можно.
     

    Цитата:
    причем желательно что бы можно было задавать интервал вручную от 3 до 30 секунд

    возможно.
     
    Monarhia
    так надо необходимо выделить в окне IE или вытащить данные из html файла? с окном пример тут... а с чтением файла тут ....
     
    Добавлено:
    Aleksks
    2. да, закидывать папки необходимо будет в окно drag helper
     
    3. для этого, в моем примере, есть строка ввода фильтра в формате регулярного выражения, в которой можно задать условия для выбора папок, которые следует переименовать
    как думаешь, нужное дело? т.к. если будет необходимо переименовывать папки, имена которых будут соответствовать другому условию - достаточно будет ввести новое условия фильтра, а не править скрипт
     
    4. Aleksks 14:52 11-07-2009
    Цитата:
    запускать сам файл au3 я буду каждый раз из разной папки с помощью своей комбинации клавиш, поэтому не должно быть привязки скрипта к какой-нибудь конкретной папке (но ведь этого и не будет, как я понимаю)

    этого и не будет. достаточно будет одной копии скрипта, который будет находится, например, на диске 'd:\'. и даже можно его будет скомпилировать в exe файл.
     
    5. а поля для ввода нового имени папки не требуется? думаю было бы удобно, и задавать так же в формате регулярных выражений
    4. подумай еще об интерфейсе скрипта. какие еще нужные кнопочки? для чего? где? ....посмотри фишки в других программах (сворачивание в трей, горячие клавиши и т.д.) - многие из вариантов можно будет и здесь реализовать.
     
    Добавлено:
    AZJIO 15:48 11-07-2009
    Цитата:
    Ещё вопрос, на каждой вкладке есть одна и та же кнопка "Старт regedit", но прописывать одну и ту же команду для каждой вкладки не хочется, как это выполнить через функцию?

    имеешь в виду:
    - как сделать так, что бы кнопка "Старт regedit" была на всех вкладках, но её код (её создание) было только на одной?
    если да, то создавай кнопку ПОСЛЕ всех вкладок - тогда она будет только одна и всегда сверху tab вкладак.


    ----------
    Мысли-читатель сломался…..может подробней расскажите?
    Где исходный код? Или мы стихи обсуждаем?! ))) Тег [more] спасет этот мир !!

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 18:09 11-07-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 15:48 11-07-2009
    Цитата:
     Как переменная понимает что нужно обработать функцией, или если нет кавычек, значит передать функции?

    Переменная ничего не понимает - это всего лишь вызов функции, и она возвращает значение, и через оператор = это значение присваивается переменной $IsEmpty.
    Остальное по теме мне не понятно, слова как то в воздухе зависают.
     

    Цитата:
    на каждой вкладке есть одна и та же кнопка "Старт regedit", но прописывать одну и ту же команду для каждой вкладки не хочется, как это выполнить через функцию?

    Пример нужен, я ведь понятия не имею, что за вкладка?

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 18:48 11-07-2009
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sproxy
    Цитата:
    то создавай кнопку ПОСЛЕ всех вкладок  
    это я пробовал. Опять же хочется через функцию, я наконец пойму варианты её использования. К примеру каждой кнопке уже назначено действие^
    Case $msg = $regedit1
    Case $msg = $regedit2
    и т. д.
    но в каждом дейсвии указан вызов функции, внутри которой прописано, что нужно выполнить, то есть прочитать в ini существование альтернативного редактора, если нету, то стартовать regedit. Да и дело не в только в нём, есть ещё "длинный" код, который нужно повторять 6 раз для каждого файла, вот я и хочу понять как выполнить необходимую часть кода. Если я редактирую эту часть кода, то она редактируется для всех, и мне не нужно её шесть раз редактировать во всём скрипте, даже методом "копировать-вставить" можно ошибится.
     
    Добавлено:
    ViSiToR

    Цитата:
    Переменная ничего не понимает - это всего лишь вызов функции

    $IsEmpty = _DirIsEmpty("c:\Temp")  
    $IsEmpty = '_DirIsEmpty("c:\Temp")'
    две разные записи
     
    Добавлено:

    Цитата:
    Пример нужен

    вот TweakerLiveCD.au3
     
    Добавлено:
    _DirIsEmpty("c:\Temp") - это вызов функции
    JyOtFa("zLi4U8") - это тоже вызов функции? только с другим именем и параметрами?

    Всего записей: 3453 | Зарегистр. 03-05-2006 | Отправлено: 19:03 11-07-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 19:03 11-07-2009
    Цитата:
    две разные записи

    Вторая неверная (разве что если потом сделать «Execute($IsEmpty)», тогда «Execute» вернёт результат вызова функции «_DirIsEmpty»), см. справку по использованию функции.
     

    Цитата:
    но в каждом дейсвии указан вызов функции, внутри которой прописано, что нужно выполнить, то есть прочитать в ini существование альтернативного редактора, если нету, то стартовать regedit. Да и дело не в только в нём, есть ещё "длинный" код, который нужно повторять 6 раз для каждого файла, вот я и хочу понять как выполнить необходимую часть кода. Если я редактирую эту часть кода, то она редактируется для всех, и мне не нужно её шесть раз редактировать во всём скрипте, даже методом "копировать-вставить" можно ошибится.

    Это изначально неправильное кодирование программы. Я у себя подобные программы либо переписывал по новой, либо вообще забросил их разработку .
     

    Цитата:
    вот TweakerLiveCD.au3

    Я просил пример, а не программу в несколько сотен строчек.
     

    Цитата:
    это тоже вызов функции? только с другим именем и параметрами?

    Да.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 19:58 11-07-2009
    AZJIO



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

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

    что именно неправильно? понятно, что современем приходится переписывать, и кстати, это я уже делал, то период обростания фичами, то переписывание для упрощения, даже сейчас средствами AutoIT текст переводится в шестнадцатеричные данные и передаются как параметр утилитке, но оказывается ей можно передать данные в текстовом виде.

    Цитата:
    Я просил пример

    ну вот кусок, который почти пол-ста строк

    Код:
    Case $msg = $unsetldr
        $showsizeldr00
    =FileGetSize ( 'SETUPLDR.BIN' )
        If $showsizeldr00>=298096 Then
          FileWriteLine (@ScriptDir&'\list.txt', 'FILE = SETUPLDR.BIN' )
          FileWriteLine (@ScriptDir&'\list.txt', 'TTL = Replace' )
          FileWriteLine (@ScriptDir&'\list.txt', 'Offset  = 173314' )
          FileWriteLine (@ScriptDir&'\list.txt', 'Change  = "TXTSETUP.SIF"' )
          ------------------------//-------------------------------

          FileWriteLine (@ScriptDir&'\list.txt', 'Offset  = 172886' )
          FileWriteLine (@ScriptDir&'\list.txt', 'Change  = "WINNT.SIF"' )
          FileWriteLine (@ScriptDir&'\list.txt', 'Offset  = 191849' )
          FileWriteLine (@ScriptDir&'\list.txt', 'Change  = "i386"' )
          FileWriteLine (@ScriptDir&'\list.txt', 'Offset  = 277870' )
          RunWait ( @Comspec & ' /C '&@ScriptDir&'\Replace.exe /p list.txt', '', @SW_HIDE )
        EndIf

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

    Код:
    If $showsizeldr00=298096 Then GUICtrlSetData($Label89, 'размер 291кб')
    If $showsizeldr00=302192 Then GUICtrlSetData($Label89, 'размер 295кб')
    If $showsizeldr00=261376 Then GUICtrlSetData($Label89, 'размер 255кб')
    If $showsizeldr00=247024 Then GUICtrlSetData($Label89, 'размер 241кб')

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

    Код:
    #include <GUIConstants.au3>
     
    GUICreate("типа так",500,420) ; размер окна
    $tab=GUICtrlCreateTab (10,10, 480,400) ; размер вкладки
     
    $tab95=GUICtrlCreateTabitem ("один") ; имя вкладки
    $reestr91=GUICtrlCreateButton ("Старт Regedit", 20,280,141,22)
     
    $tab55=GUICtrlCreateTabitem ("два") ; имя вкладки
    $reestr=GUICtrlCreateButton ("Старт Regedit", 20,280,141,22)
     
    $tab55=GUICtrlCreateTabitem ("три") ; имя вкладки
    $reestr61=GUICtrlCreateButton ("Старт Regedit", 20,280,141,22)
     
    $pathreestr = ""
     
    GUICtrlCreateTabitem ("")   ; конец вкладок
     
    GUISetState ()
     
        While 1
            $msg = GUIGetMsg()
            Select
                Case
    $msg = $reestr91
                        If $pathreestr = "" Then $pathreestr="regedit.exe"
                        Run($pathreestr)
                Case $msg = $reestr61
                        If $pathreestr = "" Then $pathreestr="regedit.exe"
                        Run($pathreestr)
                Case $msg = $reestr
                        If $pathreestr = "" Then $pathreestr="regedit.exe"
                        Run($pathreestr)
                Case $msg = $GUI_EVENT_CLOSE
                    ExitLoop
            EndSelect
        WEnd

    Всего записей: 3453 | Зарегистр. 03-05-2006 | Отправлено: 21:28 11-07-2009
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 21:28 11-07-2009
    Цитата:
    что именно неправильно?

    Неправильно когда в следствии изменения одной или нескольких строчек, нужно переделывать другие строчки, не относящиеся напрямую к этим строчкам .
     

    Цитата:
    еперь мне нужно указать конкретный размер файла, типа

    Для этого есть (у меня ) функция _String_GetFormattedSize:
     

    Код:
    ;........
     
    $showsizeldr00=298096
     
    GUICtrlSetData($Label89, 'размер ' & _String_GetFormattedSize($showsizeldr00))
     
    ;........
     
    Func _String_GetFormattedSize($iByteSize, $iRound=2, $sRetFormat=-1)
        Local $asBytes[9] = [8, 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] ;Last two unreachable
        Local $iBytes_Val = 2 ^ 10
     
        If $iByteSize < $iBytes_Val Then Return $iByteSize & ' Bytes'
     
        Local $iRetFormat_IsString = IsString($sRetFormat)
        Local $iFor = 1, $iTo = 8, $iStep = 1
     
        If $iRetFormat_IsString Then
            If Not
    StringRegExp($sRetFormat, "\A(?i)(KB|MB|GB|TB|PB|EB|ZB|YB)\z") Then Return SetError(1, 0, $iByteSize)
        Else
            Local
    $iFor = 8, $iTo = 1, $iStep = -1
        EndIf
     
        For
    $i = $iFor To $iTo Step $iStep
            If ($iRetFormat_IsString And $sRetFormat = $asBytes[$i]) Or _
                (
    Not $iRetFormat_IsString And $iByteSize >= $iBytes_Val ^ $i) Then _
                    Return Round($iByteSize / $iBytes_Val ^ $i, $iRound) & ' ' & $asBytes[$i]
        Next
    EndFunc

     

    Цитата:
    Или вот с кнопками

    Если я правильно понял:
     

    Код:
    #include <GUIConstants.au3>
     
    GUICreate("типа так", 500, 420) ; размер окна
    $tab = GUICtrlCreateTab(10, 10, 480, 400) ; размер вкладки
     
    $tab95 = GUICtrlCreateTabItem("один") ; имя вкладки
    $reestr91 = GUICtrlCreateButton("Старт Regedit", 20, 280, 141, 22)
     
    $tab55 = GUICtrlCreateTabItem("два") ; имя вкладки
    $reestr = GUICtrlCreateButton("Старт Regedit", 20, 280, 141, 22)
     
    $tab55 = GUICtrlCreateTabItem("три") ; имя вкладки
    $reestr61 = GUICtrlCreateButton("Старт Regedit", 20, 280, 141, 22)
     
    $pathreestr = ""
     
    GUICtrlCreateTabItem("")   ; конец вкладок
     
    GUISetState()
     
    While 1
        $nMsg = GUIGetMsg()
     
        Switch $nMsg
            Case $reestr91
                _Run_Proc($pathreestr)
            Case $reestr61
                _Run_Proc($pathreestr)
            Case $reestr
                _Run_Proc($pathreestr)
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
     
    Func
    _Run_Proc($sRunSoft)
        If $sRunSoft = "" Then $sRunSoft = "regedit.exe"
        Run($sRunSoft)
    EndFunc


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 22:15 11-07-2009
    Aleksks

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

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

    да, я тоже об этом думал. в принципе, строка для ввода фильтра не помешает, но тогда я точно хотел бы знать, что именно вводить, допустим, при указанном мною случае (1 файл cue и 1 файл ape или 1 файл cue и 1 файл flac или 1 файл cue и 1 файл wv).
    т.е., мне пока не понятно, как это будет выглядеть в строке. нужно ведь указать не только сочетания файлов, но и их количество в папке

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

    новое имя папки должно отличаться только так, как я упоминал (добавление символа _ в начале названия папки).
    в принципе, нет необходимости, но можно сделать и так, чтобы в окне было дополнительное поле для ввода нового имени папки, рядом с которым можно было бы поставить галочку "добавить в начало названия", а в поле набрать символ подчёркивания

    Цитата:
    подумай еще об интерфейсе скрипта. какие еще нужные кнопочки? для чего? где?

    пока вроде всё, главное для меня на данном этапе - реализовать самую насущную потребность

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

    не уверен полностью, но, кажется, из фишек ничего не нужно. пользуюсь разными прогами, выполняющими многие из подобных действий (Comfort Keys, Wire-Keys, Actual Windows-Manager, Windows Power-Pro)

    Всего записей: 96 | Зарегистр. 25-04-2008 | Отправлено: 22:30 11-07-2009
    sproxy



    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Aleksks
    1) Что такое фильтр и как он будет применяться к папкам, которые необходимо переименовать: это, в моем примере, и думаю очень удобно, паттерн регулярного выражения. Посмотри примеры в справке на функции StringRegExp и StringRegExpReplace. Т.е. регулярные выражения, в этом случае, могут из списка, перекинутых в окно программы папок и полученных адресов этих папок, выбрать только те папки, котрые содержат букву "D", или только те папки, которые начинаются на "A" и далее любые буквы, или только те папки, которые заканчиваются на "ge", а в начале имени любые буквы.  
     
    Например, есть 3 папки:
     
    c:\cue
    c:\ape
    c:\flac
     
    и необходимо из них выбрать:
     
    Вариант № 1: только те папки, названия которых: "cue" или "ape"
    Фильтр будет выглядить так (паттерн регулярного выражения): "cue|ape" (в регулярных выражениях знак "|" - означет ИЛИ, т.е. фильтр будет правильным если имя папки равно "cue" или "ape")
    Соответсвенно при выполнении, папка "flac" не попадет под фильтр, её название не равно "cue" или "ape", и не будет использованна
     
    Вариант № 2: только те папки, названия которых содержат букву "e"
    Фильтр будет выглядить так (паттерн регулярного выражения): ".*e.*" (в регулярных выражениях "." - означает любой символ, а знак "*" - повтор предыдущего символа ноль раз или более.
    Соответсвенно при выполнении, папка flac не попадет под фильтр, в ней нет буквы "e", и не будет использованна
     
    Например, в windows, что бы найти любой файл с расширением txt принято использовать: "*.txt"
    то же самое в регулярных выражениях: ".+\.txt"
     
    2) И так же, регулярные выражения, могут помочь не только в поиске именно нужных папок, но и в переименовывании.
    В этом случае необходимо два поля, поле 1: что искать в имени папки, поле 2: на что заменить найденное в имени папки.
     
     
    Конечно решать тебе - использовать фильтр поиска / замены, или использовать что нить проще и менее гибкое...

    ----------
    Мысли-читатель сломался…..может подробней расскажите?
    Где исходный код? Или мы стихи обсуждаем?! ))) Тег [more] спасет этот мир !!

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 23:03 11-07-2009 | Исправлено: sproxy, 23:06 11-07-2009
    Aleksks

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sproxy
    давай тогда, наверное, без фильтра вообще обойдёмся. пусть прога только имеет кнопку rename, по которой в начало названия каждой папки, не содержащей:
    1 файл cue и 1 файл ape или 1 файл cue и 1 файл flac или 1 файл cue и 1 файл wv
    будет добавляться знак подчёркивания
     
    возможно, я как-то не точно объясняю, но суть в том, что мне аж никак не нужно искать что-либо по названиям папок (у меня установлен потрясающий Everything Search Engine, делающий всё то, что ты только что описал)
     
    также не нужно переименовывать сами названия папок, за исключением добавления символа подчёркивания в начало названия папки (эти добавленные подчёркивания дадут мне возможность, закрыв окно drag helper, в проводнике визуально отличить и вручную рассортировать те немногие папки, с которыми нужно продолжить работу, и те, которые  уже готовы)

    Всего записей: 96 | Зарегистр. 25-04-2008 | Отправлено: 00:55 12-07-2009
    sproxy



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

    ----------
    Мысли-читатель сломался…..может подробней расскажите?
    Где исходный код? Или мы стихи обсуждаем?! ))) Тег [more] спасет этот мир !!

    Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 02:57 12-07-2009
    Aleksks

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sproxy
    на этот раз папки просто не перетаскиваются в окно drag helper
     

    Цитата:
    +можно подправить, что бы сразу же после получения списка папок начиналось переименовывание...  

    да, это было бы удобнее.
    тогда все 3 кнопки стоит убрать, ведь закрыть окно можно и просто на крестик нажав, или alt+F4

    Всего записей: 96 | Зарегистр. 25-04-2008 | Отправлено: 03:44 12-07-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