Ru-Board.club
← Вернуться в раздел «Программы»

» AutoIT

Автор: Widok
Дата сообщения: 01.06.2010 12:07
Часть 1, Часть 2



AutoIt 3

Домашняя страница
Страница загрузки
Русское сообщество AutoIt


Описание:

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


[more=Справки]
AutoIt в Википедии


[b]Справочные материалы


Новая справка на русском, зеркало (8 Мб) для v3.3.8.1 от активных пользователей, обсуждается на OSzone
Справка на русском (v3.2.5.4 от Иванова) и по этой же ссылке есть справки на других языках
Видео-уроки на youtube от пользователя AutoIt Guide RUS

AutoIt Script : Введение
Урок 1: Скрипт HelloWorld
Урок 2: Автоматизация Notepad
Урок 3: Переменные, Массивы
Урок 4: Условные выражения
Урок 5: Циклы
Урок 6: Функции
Урок 7: Работа с файлами

Collection16.zip (11 Мб) или страница закачки на script-coding.com



Справка общего характера

Стили окон, ещё, ещё
Стили элементов управления
Справочник по командам rundll32



WinAPI

w32api - Справочник по Windows API, (веб-страничка).
WinAPI по-русски - БОЛЬШОЙ справочник, (веб-страничка).
Справочник по функциям Windows API, (веб-страничка).
Справочник по функциям Windows API, (веб-страничка).
Справочник по функциям Windows API, (веб-страничка).
WM Сообщения, (веб-страничка).

API-Guide 3.7 Справочник 925 функций, англ. яз. в виде программы EXE, русификатор
API-Viewer 2004, англ. яз. в виде программы EXE, русификатор
Справочнник по функциям Windows API от Дэниэла Эпплмана , англ. яз.
Сайт Владимира Соковикова
Win32API_First_Steps.zip (2 Мб) или страница закачки на script-coding.com
WinAPI (32) (3 Мб)
Справка WinAPI (Win 32 API по шагам)
WinAPI тот же выше указанный ресурс
Русский справочник по API-функциям
Недокументированные функиии Windows API, Синтаксис C (не VB!)



Помощь по регулярным выражениям

Учимся регулярно выражаться
Книга от Дж. Фридл - Регулярные выражения. Библиотека программиста [издание первое], [издание второе], [издание третье].
Ресурс, посвящённый регулярным выражениям.
Regular Expression Library - Online библиотека регулярных выражений
edlinsoft.blogspot.com - доступное пониманию описание конструкций
valera.asf.ru - доступное пониманию описание конструкций
msdn.microsoft.com - справочник по метасимволам
wiki - управляющие символы



Англоязычные учебники

Учебник по AutoIt для начинающих (англ. яз., pdf)
Видео-руководства на YouTube (англ. яз.)
AutoIt v3: Your Quick Guide (652 КБ) - Ваш быстрый гид в мир AutoIt-а (pdf)
Tutorial on DllCall() & DllStructs - Небольшое (пока?) руководство по использованию функции DllCall*()[/more][/b]
[more=Инструменты]
[b]Основные инструменты


SciTE4AutoIt3 (4.7 Мб) (Страница загрузки) - комплект содержит в себе следующие инструменты:
Koda (724 Kb) - Создание внешнего интерфейса GUI (окно с элементами управления).
Form Builder (Ссылка в конце первого поста темы) - Создание внешнего интерфейса GUI.
AutoIt3Wrapper (документация) - для компиляции скрипта с дополнительными возможностями (добавление значка, описания и т.п).
Obfuscator (документация) - делает неудобочитаемым AutoIt-код, удаляет комментарии и неиспользуемые функции.
CodeWizard (400 Kb) - Создаёт некоторые элементы интерфейса.
AutoItMacroGenerator (34 Kb) - Записывает в реальном времени действия пользователя в AutoIt-код.
Tidy (документация) - делает скрипт читабельным
SciTEConfig - позволяет настроить цветовое оформление и шрифты SciTE.

Дополнительные инструменты

SciTE-Ru - русский проект скайта.
RegToScript - конвертирование reg-файлов в скрипт. Автор NIKZZZZ.
RegExp - для теста регулярных выражений. страничка
Au3PP - Project Manager - программа для оптимизации скрипта, удаление комментариев, табов и пробелов в начале и в конце строки, добавление в скрипт функций вызываемых из Include. Но не всегда корректно отрабатывает. Автор kjactive.
Dependency Walker 2.2 - (0.6Мб, En) показывает задействованные программой DLL и задействованные в ней вызовы функций. пример использования
DLL Export Viewer v1.41 - (60кб, Ru) показывает имена функций в выбранном DLL.

AutoIt Path Switcher - Переключение пути к папке AutoIt.
ScriptWriter (78 Kb) - Аналог AutoItMacroGenerator.
API Constants (817 Kb) - Утилита для просмотра констант API-функции.
AutoIt-меню для браузера Opera.
[/more][/b]
[more=Ресурсы, посвящённые AutoIt]
[b]Ресурсы, посвящённые AutoIt


autoitscript.com - Официальный англоязычный форум
AutoIt Russian Community - Русское сообщество AutoIt
Раздел в конференции OSzone.net, посвящённый AutoIt
Раздел в конференции Серый форум, посвящённый AutoIt
Jabber-конференция для обсуждения мелких вопросов касающихся AutoIt
Обзор скриптового языка AutoIt (рус.)
AutoIt на Yahoo! Groups (En)
Пополняющийся со временем сайт с полезными утилитами и функциями на AutoIt
Коллекция AutoIt-скриптов от Sanja Alone
Коллекция AutoIt-скриптов от MSFN (могут быть устаревшие).
Коллекция AutoIt-скриптов от AZJIO
[/more][/b]
[more=Полезные советы новичкам и не только]
[b]Полезные советы новичкам и не только


1. «Если для вас понятно то, что вы пишете, это ещё не значит, что и остальным оно будет также очевидно!»

2. «Не всегда выставление полных примеров помогает тому, кто спрашивает... Если бы за меня вот так всегда всё делали, когда я начинал (показывали всё примерами, а не указывали на нужное направление), то вряд ли я бы развивался в изучении AutoIt'а»

3. Помимо тега code, используйте тег more для больших кусков кода. Так легче читать сообщения, это поможет не отпугнуть тех, кто всё же решится вам помочь .

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

5. Старайтесь предоставить как можно больше деталей касательно вашей проблемы (но не преувеличивая), гадать ещё никто не научился.

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

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

8. Ну и, как (должно быть) известно, прежде чем что-либо спрашивать в этой (да и не только) ветке, используйте поиск, в нашем случае это:

По здешнему форуму
По официальному форуму
По форуму AutoIt на OSzone - содержит огромное количество материалов на тему AutoIt.


Рекомендации по написанию скриптов

В Autoit существует только один тип данных - Variant , поэтому для удобства написания скриптов рекомендуется использовать следующие имена переменных:

Первый набор символов после знака доллара ($) должен определять тип данных. Следующий список определяет префиксы и типы данных, используемых с ними:


$a<символ> - (Array) Массив данных - последующий символ, взятый из списка ниже, определяет тип данных в массиве
$b - (Binary data) Двоичные данные
$h - (File or window handle) Дескриптор файла, окна и т.д.
$i - (Integer) Целое число
$f - (Boolean) Логический тип, может принимать значения True или False
$n - (Floating point number) Число с плавающей точкой
$s - (String) Строка
$v - (Variant) Вариант, неопределенный тип данных, базовый тип для Autoit
$t - (Struct) Структура в стиле C/C++, для использования в DllCall, в сообщениях WM_*, при обработке данных и т.п.
$p - (Pointer) Указатель на структуру или на её элемент


Остальное имя переменной следует начинать с заглавной буквы, и оно должно отражать функциональность (свойства) переменной. Имена вроде “$iC” неприемлемы.
"$aiWeekDayNames" или "$iCounter" намного предпочтительнее.

Переведено с «User Defined Functions Standards».

P.S
От себя...
Такая манера написания скриптов уже стала почти стандартом среди AutoIt-кодеров, оно придаёт коду более читабельный и приятный вид.
[/more][/b]
[more=Готовые решения]
[b]Examples.7z
- архив ниже приведённых скриптов.

Готовые скрипты и программы с открытым кодом на AutoIt

Desktop Icons Restorator - Скрипт-программа для сохранения/восстановления позиции значков рабочего стола.
CaptureIt - Утилита для захвата изображений с экрана.
SwitchIt - Скрипт для конвертирования выделенного текста.

Общие вопросы и решения на Autoit

Обработчик скриптов добавляющий отладчик (debugger) - Последняя версия: AutoItScript Add Debugger
Интеракция между несколькими скриптами
Пример использование интеракции между скриптами - Добавление элементов GUI с внешнего модуля
Чтение и запись данных с/в окна/о SciTE
Пример автообновления версии своего приложения
Копирование большого файла с отображением данных прогресса
Создание динамического меню в Tray Icon (значок в области уведомлений)
Пример создания своего мастера (Wizard)
Метод, позволяющий запускать код VBS без создания временных файлов
Описание функции GUIRegisterMsg()
Пример перехвата вводимых символов с клавиатуры
Пример деактивирования TabItem
Пример вывода лога в Edit-поле (с поддержкой форматирования текста)
Пример остановки/начало выполнения скрипта + Слежение за буфером обмена с заменой неподдерживаемых в имени файла символов
Подключение приложения (GUI) к буферу обмена
Пример использования меню с значками (ModernMenu.au3) -> Список программ в меню значка в системном трее
Пример подсчёта интервала времени между нажатиями клавиш
Слежение нажатых элементов в текущем окне (под курсором)
Написание instant messaging Бота на AutoIt
Способ, позволяющий посылать нажатие клавиши в неактивное окно (не путать со свёрнутым)
Сервер <=> Клиент - Пример передачи файла
Пример отображения только элементов GUI (без самой оболочки)
Модуль, превращающий ваше приложение в Trial-версию
Слежение за выделенным текстом и с последующим его помещением в файл


Отдельные функции и библиотеки (UDF):

Функции, относящиеся к интернету

_FTP_DirsListToArray - Функция получения списка каталогов (включая подкаталоги) на FTP
Функция для отправки электронной почты (email) с поддержкой Html и вложений файлов
Функции и пример для отображения детального процесса закачки файла
Функции отключения/подключения к интернету
Функция проверки подключения к интернету
_SocketToIP - Получение IP по подключённому сокету:

Код: ; Function to return IP Address from a connected socket.
;вызов функции через "Dim $szIP_Accepted = SocketToIP($ConnectedSocket)"
Func _SocketToIP($iSocket)
Local $stSockAddr = DllStructCreate("short;ushort;uint;char[8]")

Local $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $iSocket, _
"ptr", DllStructGetPtr($stSockAddr), "int_ptr", DllStructGetSize($stSockAddr))

If Not @error And $aRet[0] = 0 Then
$aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($stSockAddr, 3))
If Not @error Then $aRet = $aRet[0]
Else
$aRet = 0
EndIf

Return $aRet
EndFunc
Автор: ViSiToR
Дата сообщения: 01.06.2010 14:53
Всех с переездом!
Автор: NIKZZZZ
Дата сообщения: 01.06.2010 14:59
ViSiToR
По поводу Ссылка
Кроме этого, надо исправить удаление отладочных строк
[more]--------------------------------------------------------------------------------
-- ConsoleWritePattern(with_comment)
--
-- Returns the pattern used to find DebugConsoleWrite statements. This must be
-- a function so NewLineInUse() can be called on the correct document.
--
-- Paramters:
--    with_comment - If true, returns the pattern with a leading comment.
--
-- Returns:
--    The pattern used to find DebugConsoleWrite statements.
--------------------------------------------------------------------------------
function AutoItTools:ConsoleWritePattern(with_comment)
    local nl = self:NewLineInUse()
    if with_comment then
        return nl .. "[%s]*;[%s]*(SetError%([^" .. nl .. "]-%) ;### Debug[^" .. nl .. "]+)"
    else
        return nl .. "[%s]*(SetError%([^" .. nl .. "]-%) ;### Debug[^" .. nl .. "]+)"
    end
end    -- ConsoleWritePattern()

--------------------------------------------------------------------------------
-- MsgBoxPattern(with_comment)
--
-- Returns the pattern used to find DebugMsgBox statements. This must be
-- a function so NewLineInUse() can be called on the correct document.
--
-- Paramters:
--    with_comment - If true, returns the pattern with a leading comment.
--
-- Returns:
--    The pattern used to find DebugMsgBox statements.
--------------------------------------------------------------------------------
function AutoItTools:MsgBoxPattern(with_comment)
    local nl = self:NewLineInUse()
    if with_comment then
        return nl .. "[%s]*;[%s]*(SetError%([^" .. nl .. "]-%) ;### Debug[^" .. nl .. "]+)"
    else
        return nl .. "[%s]*(SetError%([^" .. nl .. "]-%) ;### Debug[^" .. nl .. "]+)"
    end
end    -- MsgBoxPattern()

--------------------------------------------------------------------------------
[/more]
Автор: ViSiToR
Дата сообщения: 01.06.2010 15:26
NIKZZZZ 15:59 01-06-2010
Цитата:
Кроме этого, надо исправить удаление отладочных строк

В этом случае можно не дублировать функции:


Код: [no]function AutoItTools:ConsoleWritePattern(with_comment)
    return self:MsgBoxPattern(with_comment)
end    -- ConsoleWritePattern()

function AutoItTools:MsgBoxPattern(with_comment)
    local nl = self:NewLineInUse()
    if with_comment then
        return nl .. "[%s]*;[%s]*(SetError%([^" .. nl .. "]-%) ;### Debug[^" .. nl .. "]+)"
    else
        return nl .. "[%s]*(SetError%([^" .. nl .. "]-%) ;### Debug[^" .. nl .. "]+)"
    end
end    -- MsgBoxPattern()[/no]
Автор: degid
Дата сообщения: 02.06.2010 17:16
Есть скрипт на vbscript, меняет рабочую группу, тут нашел пример всовывания vbscript в AutoIT, но он чет вылетает на с ошибкой
Исходный скрипт:

Код:
Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144

strDomain = "NewGr"

Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain)
Автор: Kar1son
Дата сообщения: 02.06.2010 18:02
degid
если внутри строки у тебя есть кавычки " то саму строку надо заключать в апострофы ' и наоборот.

Зы хотел написать готовую но запутался в твоей строке
Автор: ViSiToR
Дата сообщения: 02.06.2010 20:33
degid 18:16 02-06-2010
Цитата:
Есть скрипт на vbscript, меняет рабочую группу, тут нашел пример всовывания vbscript в AutoIT, но он чет вылетает на с ошибкой

А зачем выполнять vbs из AutoIt, это не тот случай , вот тот же скрипт но переведён на AutoIt (не тестировал):


Код: Const $JOIN_DOMAIN = 1
Const $ACCT_CREATE = 2
Const $ACCT_DELETE = 4
Const $WIN9X_UPGRADE = 16
Const $DOMAIN_JOIN_IF_JOINED = 32
Const $JOIN_UNSECURE = 64
Const $MACHINE_PASSWORD_PASSED = 128
Const $DEFERRED_SPN_SET = 256
Const $INSTALL_INVOCATION = 262144

$strDomain = "NewGr"

$objNetwork = ObjCreate("WScript.Network")
$strComputer = $objNetwork.ComputerName
$objComputer = ObjGet("winmgmts:{impersonationLevel=Impersonate}!\\" & $strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & $strComputer & "'")
$ReturnValue = $objComputer.JoinDomainOrWorkGroup($strDomain)
Автор: Kar1son
Дата сообщения: 03.06.2010 00:12
ViSiToR
а откуда ты узнаешь об обектах? например в ObjCreate("WScript.Network"), ты откуда узнал что есть такой объект "WScript.Network"?
Автор: ViSiToR
Дата сообщения: 03.06.2010 01:09
Kar1son 01:12 03-06-2010
Цитата:
откуда ты узнаешь об обектах? например в ObjCreate("WScript.Network"), ты откуда узнал что есть такой объект "WScript.Network"?

Это из скрипта от degid

А вообще есть такой инструмент как Scriptomatic, там можно много чего узнать об объектах (работа с WMI), ну и конечно же разные справки по теме WSH.
Автор: Kar1son
Дата сообщения: 03.06.2010 13:05
есть команда Send('Kar1son{Enter}'), а если в момент выполнения язык в системе переключен на русский то получается "Лфк1ыщт". Есть способы кроме как посылать через Send ASCII коды символов?
Автор: degid
Дата сообщения: 03.06.2010 13:21
Kar1son, ViSiToR
разобрался, всё дело в кавычках... (там просто сразу " и ' используются, записал $Code в файлик и всё увидел)

Код: $Code &= "Set objComputer = GetObject(" & """winmgmts:{impersonationLevel=Impersonate}!\\""" & " & _" & @LF
$Code &= "strComputer & " & """\root\cimv2:Win32_ComputerSystem.Name='""" & " & _" & @LF
$Code &= "strComputer & " & """'""" & ")" & @LF
Автор: NIKZZZZ
Дата сообщения: 03.06.2010 13:29
degid

Цитата:
разобрался, всё дело в кавычках...

В таких случаях удобно использовать одиночные кавычки, например:

Код: $Code &= 'Set objComputer = GetObject(' & '"winmgmts:{impersonationLevel=Impersonate}!\\"' & ' & _' & @LF
Автор: degid
Дата сообщения: 03.06.2010 13:32

Цитата:
есть команда Send('Kar1son{Enter}'), а если в момент выполнения язык в системе переключен на русский то получается "Лфк1ыщт". Есть способы кроме как посылать через Send ASCII коды символов?

http://forum.ru-board.com/topic.cgi?forum=5&topic=17705&start=2620#15
Автор: ViSiToR
Дата сообщения: 03.06.2010 14:20
Kar1son 14:05 03-06-2010
Цитата:
Есть способы кроме как посылать через Send ASCII коды символов?

Обход проблемы с кодировкой при использовании Send

degid 14:21 03-06-2010
Цитата:
было бы прикольно его полностью переделать на AutoIt

Я привёл пример выше.
Автор: Z4masko
Дата сообщения: 03.06.2010 15:45
Подскажите как автоматизировать нажатия в Internet Explorer по элементам меню, которое написано на JavaScript?
То есть есть выпадающее меню на Javascript и справа кнопочка Ок например (то же относится к этому скрипту). И вот как бы указать через Auto It те элементы меню ,на которые надо кликать и потом нажимать ОК ?
С обычными ссылками понятно - можно просто делать: _IELinkClickByText
А вот как кликать когда все меню на JavaScript - непонятно (
Почитал мануал, там написано что при таких случаях надо кликать с помощью:

Код: _IEAction ($element, "click")
Автор: madmasles
Дата сообщения: 03.06.2010 16:25
Z4masko
Вы здесь посмотрите: Выбрать определенное значение из списка в окне, там для vkontakte есть готовое решение.
Автор: Kar1son
Дата сообщения: 03.06.2010 17:02
Z4masko
я когда пытался этой функцией пользоваться, сохранял страничку и потом в коде(блокнотом открывал просто) искал имя элемента
Автор: degid
Дата сообщения: 03.06.2010 17:12

Цитата:
Kar1son
degid 14:21 03-06-2010
Цитата: было бы прикольно его полностью переделать на AutoIt

Я привёл пример выше.
Автор: ynbIpb
Дата сообщения: 04.06.2010 10:45
Маленькая задачка: Необходимо сформировать энное количество байтов, но заранее нам это количество не известно. Оно появляется в результате другой функции.
Я сделал вот так:

Код: $iBytesToAdd = 10
$string = ""
$stringlen = ""
While 1
$string &= "00"
$stringlen = StringLen ($string)
If $stringlen = $iBytesToAdd * 2 Then ExitLoop
WEnd

$bstring = "0x" & $string
$bstring
= Binary ($bstring)
Автор: NIKZZZZ
Дата сообщения: 04.06.2010 11:20
ynbIpb

Цитата:
более элегантное решение?



Код: $iBytesToAdd = 10
$string = "0x"
For $i= 1 To $iBytesToAdd
$string &= "00"
Next
$bstring = Binary ($string)
Автор: ynbIpb
Дата сообщения: 04.06.2010 12:01
Да, первый оптимизированный вариант мне подходит. Спасибо.
Второй нет, так как максимальное количество байт 2047
Просто я думал, может есть совсем иные способы, значит я выбрал правильный путь.
Автор: AZJIO
Дата сообщения: 06.06.2010 05:30
[more=мои скрипты]
Архив скриптов AZJIO 2013.06.30 - (5 Мб), 1000 файлов-скриптов, включая ниже указанные.
AutoIt3_v3.3.8.1.exe, зеркало (28Мб) 07.01.2014 - полная версия портабельного AutoIt3 в виде SFX-архива. В комплекте настроенный Notepad++ с использованием горячих клавиш и все инструменты, которыми я пользуюсь. Подробнее.
AutoIt3_v3.3.6.1.exe (25Мб) 17.02.2012 - Старая портабельная сборка AutoIt3

Новое
Sort_main_menu 2014.07.05 - v0.1, Сортирует ярлыки в меню Пуск.
My Notepad 2013.07.03 - v0.4, Блокнот, который начинался как пример.
RateUSD 2013.12.11 - v0.2, Запрос курса доллара.

Compare strings 2012.12.25 - v0.2, Сравнение файлов построчно.
Converting numbers 2012.12.30 - v0.1, Конвертор чисел.
Registry Manager 24.09.2012 - v0.3, Менеджер реестра. Пример.

Zoom 2012.06.30 - v0.1, Захват цвета под курсором. (EXE+ исходник).
CaptureText 2012.06.13 - v0.1, Захват текста под курсором (WinXP). (EXE+ исходник).
Synchronization 2013.03.04 - v0.2 - синхронизация каталогов.
Password generator 2013.09.24 - v0.5 - генератор пароля на основе фразы.

Desktop Locker 2012.02.22 - v0.2, блокировка экрана, аналог Win+L. Создаёт ярлык со скрытым паролем для блокировки.
ButtonBar 2013.06.27 - v0.7.6, утилита представляет собой панель кнопок, с которой удобно запускать программы, самая скачиваемая утилитка (EXE+ исходник).
TextReplace 2013.04.13 - v1.1, поиск и замена текста в файлах. Поддержка сценариев (множественная замена).
Search duplicates 2013.08.01 - v0.5 и 0.6.3 - Поиск дубликатов файлов
Create_list_files 2013.11.12 - v0.6.4, создаёт список файлов для статистики или для обработки (имя, путь, размер, хэш, дата, любой текст и сортировка по критерию).
Volume Control 2012.10.21 - v0.5.5, утилита для регулировки общей громкости горячей клавишей Snift+колёсико мыши. Подробнее, скрин
ReName 2012.08.14 - v0.3, для переименования файлов.
TextCorrection (290 кб) 2012.09.02 - v0.8 исправление текста набранного в неправильной раскладке клавиатуры. Подробнее.
Check_md5 (280 кб) 2012.10.12 - v0.7.1 Утилита для проверки контрольных сумм файлов в каталоге с сохранением в базовый файл для последующей сверки целостности оригинала. Скрин. Подробнее.

Launcher 2013.01.02 - v0.3, Настраиваемая оболочка для запуска файлов
Straightedge 2012.07.11 - v0.3, (линейка) утилитка для измерения элементов интерфэйса на экране монитора. (EXE+ исходник), подробнее.
Converter CMD to BBcode 2011.11.08 - v0.7, для выкладывания файлов BAT, CMD на форум с использованием цветовой темы для ключевых слов. Это помогает лучше воспринимать код.
Podarok - подарок на 8 марта. Можно предустановить, указав дату и время запуска
ColorText 2012.11.18 - v0.3.1 Утилита создания поздравительных постов на форумах (EXE+ исходник).

contmenu_setup 2013.06.30 - v0.3, панелька прописывается в контекстное меню, имеет команды для частых операций с файлами, папками. скрин, старая версия
SaveFolders-Tray+иконки 24.04.2010 сохранение сессии открытых каталогов в файл и восстановление, скрин. Скомпилированный файл
Старые версии: SaveFolders-Combo, SaveFolders-List, SaveFolders-Tray построенные на Combo, List, Tray без библиотеки.
Секундомер 2013.02.27 - v0.7. Скомпилированный файл
Пятнашки 2012.07.17 - игра, v0.3

Системные
JumpReg 2012.06.03 - v0.8, прыжок в ветку реестра, список избранное. на oszone.
Process 2011.11.03 - v0.1, утилита завершения процессов. Поддерживается однократная операция или режим мониторинга.
USB_Open - для открытия флешки в файловом менеджере при выключенном автозапуске autorun.inf.
ChkDskGui - GUI-оболочка для консольной утилиты проверки жёсткого диска.
BootSectGui - GUI-оболочка для консольной утилиты восстановления загрузчика.

Настройка OS
Ассоциатор программ 1.1 - для восстановления или смены ассоциаций, скрин. Архив v1.5 2014.07.03 (380кб) скомпилированная версия (с бэкапированием). Три DLL для компиляции смотреть в %temp% при старте программки.
ContMenuFiles 2013.11.12 - v0.8, для настройки контекстного меню файлов. Подробнее.
Icon_of_folder 2013.11.12 - v0.4.3, утилитка для быстрой смены иконки каталогов. Скомпилированный файл.
Recovery_associative_icons 2013.06.22 v0.2 - утилита для восстановления иконок после переназначения их какой либо программой.
TweakerXP 2012.06.14 - v0.8, твикер, скрин.

Compare, Search_files_list 6.12.2010, три в одном.
Генератор мелодий 24.07.2010 - v0.4, два варианта, для динамика ПК и с использованием MIDI.
Калькулятор 29.07.2010 - v0.6. Скомпилированный файл
Мелодия Heavy Asia основанная на функции Beep (динамиком ПК). 20.05.2010
Мелодия Europe основанная на функции Beep (динамиком ПК). 20.05.2010
Portable AutoIt3 v1.6 - для возможности использовать разные версии AutoIt3, легко переключаться между ними, скрин.
Color marking resistor - определения маркировки резистора (в радиотехнике).
reg-backup.au3 reg-backup_without export.au3 - бэкапирование данных из реестра по веткам подопытного reg-файла. Для создания и сохранения конфигураций.
Patch_SETUPLDR.au3 - удобное редактирование параметров загрузки в SETUPLDR.BIN. Скомпилированный Patch_SETUPLDR.exe (500кб) с комплектом SETUPLDR.BIN (11шт).
Create_lnk 2014.07.03 - v0.3.1, Создание ярлыков, бэкапирование ярлыков в текст и восстановление Старая версия, скрин.
Цитатник - сохранение выделенного текста по горячей клавише
user.au3 - пользовательские папки. В винде только для текущего пользователя, а в LiveCD можно переключатся между пользователями.
gui_qemu.au3 скрипт управления эмулятором qemu. архив - (1Мб) вместе с файлами программы.
График - пример использования UDF GraphGDIPlus.au3 - рисование графиков функций, скрин.
Версия для печати - скрипт для поиска текста и формирование ссылки на пост, а также изменения цвета в сохранённой страничке ru-board. Старая версия.
плеер - простейший пример.
instLiveCD - (700кб) инсталятор LiveCD+Grub на хард/флешку с файлами программы.
датчик харда и памяти - на основе прогресс бара.
GoogleTranslate 2011.12.08 - переводчик использующий сайт Google. Утилита была сделана взаимным вкладом AZJIO и ViSiToR и UDF от Stephen Podhajecki. Ограничение по длинне символов 350-376, взависимости от количества переноса строк. Часто сбоит из-за смены формата запрашиваемой страницы сервисом Google.
Connection 12.10.2010 - v0.3, утилита проверки онлайн-серверов. Скомпилированный файл.
forum - v0.2 - утилита показывает в трее появление новых сообщений в указанных темах на форуме forum.ru-board.com. (EXE+ исходник), подробнее.


=================================
Мои скрипты-инструменты для AutoIt3 (рекомендую смотреть на моём сайте)
RegExp 2013.06.23 - v1.0.2, - для теста регулярных выражений.
JumpToString 2011.10.30 - v0.3 - утилита для быстрого перехода к функциям (Func), регионам (#Region) и пользовательским образцам текста в редакторе Notepad++.
Panel Function 0.4 - панелька для вставки готовых конструкций в окно редактора. Скрин. Старый вариант
Converter_AU3_to_BBcode 2011.11.02 - v0.2, утилита для выкладывания файлов AU3, CMD, REG на форум с использованием цветовой темы. (EXE+ исходник), подробнее.
list_var_funk - показывает список переменных и функций скрипта.
CreationTheme - для редактирования темы SciTE.страничка
CreationGui - скрипт позволяет создать оболочку управления, добавить элементы управления в готовый скрипт.
AutoCompletion 2014.04.15 - пользовательское автозавершение функций/слов, настраиваемое в Notepad++ или другой поддерживающий команды запуска.
txt2au3 - текстовый файл конвертировать в код, например для создания дефолтного ini.
удалить пробел в конце строк скрипта с ru-board (в Notepad++ есть стандартная опция "Правка > Обрезать пробелы".

=================================
Инструменты для AutoIt3
Au3PP - Project Manager - программа для оптимизации скрипта, удаление комментариев, табов и пробелов в начале и в конце строки, добавление в скрипт функций вызываемых из Include. Но не всегда корректно отрабатывает. Автор kjactive.
Dependency Walker 2.2 - (0.6Мб, En) показывает задействованные программой DLL и задействованные в ней вызовы функций. пример
DLL Export Viewer v1.41 - (60кб, Ru) показывает имена функций в выбранном DLL.
=================================

поиск всех файлов в папке и обработка в цикле - выложил NIKZZZZ, самый используемый мной скрипт. предыдущая версия

поиск всех разделов/параметров/значений в реестре и обработка в цикле - выложил NIKZZZZ.[/more]
Автор: degid
Дата сообщения: 08.06.2010 17:29
есть скрипт на vbscript (меняет IP на локальном компьютере):

Код: strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
strIPAddress = Array("192.168.0.141")
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.168.0.100")
strGatewayMetric = Array(1)
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
If errEnable = 0 Then
WScript.Echo "The IP address has been changed."
Else
WScript.Echo "The IP address could not be changed."
End If
Next
Автор: Kar1son
Дата сообщения: 09.06.2010 07:57

Цитата:
Array("255.255.255.0")

может имеется в виду массив символов? (string = array (Char) ) тогда просто присвоение strIPAddress = "192.168.0.141"
Автор: degid
Дата сообщения: 09.06.2010 10:46
ругается тогда:
"TLine 11 (File "ip.au3"):
$errEnable = $objNetAdapter.EnableStatic($strIPAddress, $strSubnetMask)
$errEnable = $objNetAdapter.EnableStatic($strIPAddress, $strSubnetMask)^ ERROR
Error: The requested action with this object has failed."......

Код: $strComputer = "."
$objWMIService = ObjGet("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$colNetAdapters = $objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
$strIPAddress = "192.168.0.141"
$strSubnetMask = "255.255.255.0"
$strGateway = "192.168.0.254"
$strGatewayMetric = 1
For $objNetAdapter in $colNetAdapters
$errEnable = $objNetAdapter.EnableStatic($strIPAddress, $strSubnetMask)
$errGateways = $objNetAdapter.SetGateways($strGateway, $strGatewaymetric)
If $errEnable = 0 Then
MsgBox(4096,"-", "The IP address has been changed.")
Else
MsgBox(4096,"-", "The IP address could not be changed.")
EndIf
Next
Автор: Kar1son
Дата сообщения: 09.06.2010 11:27
Посмотрел в скриптоматике, не нашел метода "$objNetAdapter.EnableStatic" (WinXP 32 SP3)

Код: ; Generated by AutoIt Scriptomatic

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$Output=""
$Output = $Output & "Computer: " & $strComputer & @CRLF
$Output = $Output & "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) then
For $objItem In $colItems
$Output = $Output & "ArpAlwaysSourceRoute: " & $objItem.ArpAlwaysSourceRoute & @CRLF
$Output = $Output & "ArpUseEtherSNAP: " & $objItem.ArpUseEtherSNAP & @CRLF
$Output = $Output & "Caption: " & $objItem.Caption & @CRLF
$Output = $Output & "DatabasePath: " & $objItem.DatabasePath & @CRLF
$Output = $Output & "DeadGWDetectEnabled: " & $objItem.DeadGWDetectEnabled & @CRLF
$strDefaultIPGateway = $objItem.DefaultIPGateway(0)
$Output = $Output & "DefaultIPGateway: " & $strDefaultIPGateway & @CRLF
$Output = $Output & "DefaultTOS: " & $objItem.DefaultTOS & @CRLF
$Output = $Output & "DefaultTTL: " & $objItem.DefaultTTL & @CRLF
$Output = $Output & "Description: " & $objItem.Description & @CRLF
$Output = $Output & "DHCPEnabled: " & $objItem.DHCPEnabled & @CRLF
$Output = $Output & "DHCPLeaseExpires: " & WMIDateStringToDate($objItem.DHCPLeaseExpires) & @CRLF
$Output = $Output & "DHCPLeaseObtained: " & WMIDateStringToDate($objItem.DHCPLeaseObtained) & @CRLF
$Output = $Output & "DHCPServer: " & $objItem.DHCPServer & @CRLF
$Output = $Output & "DNSDomain: " & $objItem.DNSDomain & @CRLF
$strDNSDomainSuffixSearchOrder = $objItem.DNSDomainSuffixSearchOrder(0)
$Output = $Output & "DNSDomainSuffixSearchOrder: " & $strDNSDomainSuffixSearchOrder & @CRLF
$Output = $Output & "DNSEnabledForWINSResolution: " & $objItem.DNSEnabledForWINSResolution & @CRLF
$Output = $Output & "DNSHostName: " & $objItem.DNSHostName & @CRLF
$strDNSServerSearchOrder = $objItem.DNSServerSearchOrder(0)
$Output = $Output & "DNSServerSearchOrder: " & $strDNSServerSearchOrder & @CRLF
$Output = $Output & "DomainDNSRegistrationEnabled: " & $objItem.DomainDNSRegistrationEnabled & @CRLF
$Output = $Output & "ForwardBufferMemory: " & $objItem.ForwardBufferMemory & @CRLF
$Output = $Output & "FullDNSRegistrationEnabled: " & $objItem.FullDNSRegistrationEnabled & @CRLF
$strGatewayCostMetric = $objItem.GatewayCostMetric(0)
$Output = $Output & "GatewayCostMetric: " & $strGatewayCostMetric & @CRLF
$Output = $Output & "IGMPLevel: " & $objItem.IGMPLevel & @CRLF
$Output = $Output & "Index: " & $objItem.Index & @CRLF
$strIPAddress = $objItem.IPAddress(0)
$Output = $Output & "IPAddress: " & $strIPAddress & @CRLF
$Output = $Output & "IPConnectionMetric: " & $objItem.IPConnectionMetric & @CRLF
$Output = $Output & "IPEnabled: " & $objItem.IPEnabled & @CRLF
$Output = $Output & "IPFilterSecurityEnabled: " & $objItem.IPFilterSecurityEnabled & @CRLF
$Output = $Output & "IPPortSecurityEnabled: " & $objItem.IPPortSecurityEnabled & @CRLF
$strIPSecPermitIPProtocols = $objItem.IPSecPermitIPProtocols(0)
$Output = $Output & "IPSecPermitIPProtocols: " & $strIPSecPermitIPProtocols & @CRLF
$strIPSecPermitTCPPorts = $objItem.IPSecPermitTCPPorts(0)
$Output = $Output & "IPSecPermitTCPPorts: " & $strIPSecPermitTCPPorts & @CRLF
$strIPSecPermitUDPPorts = $objItem.IPSecPermitUDPPorts(0)
$Output = $Output & "IPSecPermitUDPPorts: " & $strIPSecPermitUDPPorts & @CRLF
$strIPSubnet = $objItem.IPSubnet(0)
$Output = $Output & "IPSubnet: " & $strIPSubnet & @CRLF
$Output = $Output & "IPUseZeroBroadcast: " & $objItem.IPUseZeroBroadcast & @CRLF
$Output = $Output & "IPXAddress: " & $objItem.IPXAddress & @CRLF
$Output = $Output & "IPXEnabled: " & $objItem.IPXEnabled & @CRLF
$strIPXFrameType = $objItem.IPXFrameType(0)
$Output = $Output & "IPXFrameType: " & $strIPXFrameType & @CRLF
$Output = $Output & "IPXMediaType: " & $objItem.IPXMediaType & @CRLF
$strIPXNetworkNumber = $objItem.IPXNetworkNumber(0)
$Output = $Output & "IPXNetworkNumber: " & $strIPXNetworkNumber & @CRLF
$Output = $Output & "IPXVirtualNetNumber: " & $objItem.IPXVirtualNetNumber & @CRLF
$Output = $Output & "KeepAliveInterval: " & $objItem.KeepAliveInterval & @CRLF
$Output = $Output & "KeepAliveTime: " & $objItem.KeepAliveTime & @CRLF
$Output = $Output & "MACAddress: " & $objItem.MACAddress & @CRLF
$Output = $Output & "MTU: " & $objItem.MTU & @CRLF
$Output = $Output & "NumForwardPackets: " & $objItem.NumForwardPackets & @CRLF
$Output = $Output & "PMTUBHDetectEnabled: " & $objItem.PMTUBHDetectEnabled & @CRLF
$Output = $Output & "PMTUDiscoveryEnabled: " & $objItem.PMTUDiscoveryEnabled & @CRLF
$Output = $Output & "ServiceName: " & $objItem.ServiceName & @CRLF
$Output = $Output & "SettingID: " & $objItem.SettingID & @CRLF
$Output = $Output & "TcpipNetbiosOptions: " & $objItem.TcpipNetbiosOptions & @CRLF
$Output = $Output & "TcpMaxConnectRetransmissions: " & $objItem.TcpMaxConnectRetransmissions & @CRLF
$Output = $Output & "TcpMaxDataRetransmissions: " & $objItem.TcpMaxDataRetransmissions & @CRLF
$Output = $Output & "TcpNumConnections: " & $objItem.TcpNumConnections & @CRLF
$Output = $Output & "TcpUseRFC1122UrgentPointer: " & $objItem.TcpUseRFC1122UrgentPointer & @CRLF
$Output = $Output & "TcpWindowSize: " & $objItem.TcpWindowSize & @CRLF
$Output = $Output & "WINSEnableLMHostsLookup: " & $objItem.WINSEnableLMHostsLookup & @CRLF
$Output = $Output & "WINSHostLookupFile: " & $objItem.WINSHostLookupFile & @CRLF
$Output = $Output & "WINSPrimaryServer: " & $objItem.WINSPrimaryServer & @CRLF
$Output = $Output & "WINSScopeID: " & $objItem.WINSScopeID & @CRLF
$Output = $Output & "WINSSecondaryServer: " & $objItem.WINSSecondaryServer & @CRLF
if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
$Output=""
Next
Else
Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_NetworkAdapterConfiguration" )
Endif


Func WMIDateStringToDate($dtmDate)

Return (StringMid($dtmDate, 5, 2) & "/" & _
StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
& " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
EndFunc
Автор: degid
Дата сообщения: 09.06.2010 12:04
тупо всунул скрипт в AutoIT, работает...........
Автор: Kar1son
Дата сообщения: 09.06.2010 13:00
degid
ты же только что говорил что ошибка?
Автор: degid
Дата сообщения: 09.06.2010 13:21
он ругается если его переделать полностью на AutoIT, сам vbs скрипт рабочий... Всунул его вот так:

Код: $ProcessName = "AutoIt3.exe"
$RetArr = _ProcessExistsVbs($ProcessName, "192.168.0.14")
If IsArray($RetArr) Then MsgBox(64, "", "Process <" & $RetArr[1] & "> exists." & @LF & @LF & _
"The returned PID is: " & $RetArr[2] & @LF & @LF & _
"Returned Executable Path is: " & @LF & $RetArr[3] & @LF & @LF & _
"Command Line of executed process is: " & @LF & $RetArr[4])

Func _ProcessExistsVbs($ProcName, $ip)
Local $Code = ""
$Code &= 'Function ProcessExists(ProcessName)' & @LF
$Code &= 'On Error Resume Next' & @LF
$Code &= 'strComputer = "."' & @LF
$Code &= 'Set objWMIService = GetObject("winmgmts:" _' & @LF
$Code &= '& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")' & @LF
$Code &= 'Set colNetAdapters = objWMIService.ExecQuery _' & @LF
$Code &= '("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")' & @LF
$Code &= 'strIPAddress = Array("' & $ip & '")' & @LF
$Code &= 'strSubnetMask = Array("255.255.255.0")' & @LF
$Code &= 'strGateway = Array("192.168.0.254")' & @LF
$Code &= 'strGatewayMetric = Array(1)' & @LF
$Code &= 'For Each objNetAdapter in colNetAdapters' & @LF
$Code &= 'errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)' & @LF
$Code &= 'errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)' & @LF
$Code &= 'Next' & @LF
$Code &= 'End Function'

Local $VbsObj = ObjCreate("ScriptControl")
If @error Then Return SetError(1, 0, -1)
$VbsObj.Language = "vbscript"
$VbsObj.AddCode($Code)
Local $RetArr = $VbsObj.[i]Run[/i]("ProcessExists", $ProcName)
If $RetArr = 0 Then Return SetError(0, 0, 0)
Return $RetArr
EndFunc
Автор: XpycTMD
Дата сообщения: 09.06.2010 16:40
degid
Цитата:
Ура!!! Оказывается существует файл Array.au3! там есть _ArrayCreate.

Попробуй заменить
Код: #include <Array.au3>
$strIPAddress = _ArrayCreate("192.168.0.141")

Страницы: 12345678910111213

Предыдущая тема: Проблемы с VMware Workstation (часть 4)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.