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

» AutoIT

Автор: 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")
Автор: AZJIO
Дата сообщения: 10.06.2010 11:31
Kar1son
Немного пример упрощённой записи

Цитата:
$Output = "ArpAlwaysSourceRoute: " & $objItem.ArpAlwaysSourceRoute & @CRLF & _
"ArpUseEtherSNAP: " & $objItem.ArpUseEtherSNAP & @CRLF & _
"Caption: " & $objItem.Caption & @CRLF & _
"DatabasePath: " & $objItem.DatabasePath & @CRLF & _
"DeadGWDetectEnabled: " & $objItem.DeadGWDetectEnabled & @CRLF & _


смысл в том, что любые многостроковые данные можно указать одной строкой, переходы строк в данном случае выплняют @CRLF. Но так как запись в одну строку неудобно читается, то выполняем перенос кода с помощью символа нижнего подчёркивания. В итоге вместо многократного объединения данных происходит просто один раз вставка данных в переменную $Output.
Способ добавления точно также

Цитата:
$Output &= "ArpAlwaysSourceRoute: " & $objItem.ArpAlwaysSourceRoute & @CRLF & _
"ArpUseEtherSNAP: " & $objItem.ArpUseEtherSNAP & @CRLF & _
"Caption: " & $objItem.Caption & @CRLF & _
"DatabasePath: " & $objItem.DatabasePath & @CRLF & _
"DeadGWDetectEnabled: " & $objItem.DeadGWDetectEnabled & @CRLF & _
Автор: Kar1son
Дата сообщения: 10.06.2010 11:40
AZJIO
я знаю) тот код не я писал, это скриптоматик выдал "; Generated by AutoIt Scriptomatic"
Автор: drmodjo84
Дата сообщения: 11.06.2010 20:59
Нужно чтобы скрипт с эмулировал нажатие правой мыши на файле,затем в свойства и установил галки на совместимости правах доступа и операционки.Но при этом нужна конкретность,без использования координатов и названий типа "Свойства".Файл будет использоваться на разных машинах с операционкой "Семерка".
Я новичек и не могу заставить скрипт попасть на файл правой клавой.Объясните подробно плиз.
Автор: AZJIO
Дата сообщения: 12.06.2010 05:39
drmodjo84
Попробуй лучше клавишами используя Send
Alt+Enter - открываем окно свойств exe-файла
Ctrl+Tab - перемещение по вкладкам 2 раза
space - пробел - ставим галочку
Tab - переход к элементу списка
стрелка вниз - выбор совместимой системы
Enter - применить

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

________________________________

Есть у кого нибудь пример автоматического скролинга строк текста нужен для диалога "О программе". Случайно скачал утилиту (370кб), понравилась плавное движение текста.
Автор: drmodjo84
Дата сообщения: 12.06.2010 06:25
Можете привести пример скрипта .Как начать?Как правильно указать на файл который должен использоваться скриптом send?
Автор: AZJIO
Дата сообщения: 12.06.2010 07:14
drmodjo84

Цитата:
;Регистрация в контекстное меню
RegRead("HKCR\exefile\shell\Совместимость\command", '')
If @error=1 Then
;регистрация в реестре и копирование в системную папку, при первом запуске
RegWrite("HKCR\exefile\shell\Совместимость\command","","REG_SZ",@AutoItExe&' "'&@SystemDir&'\Compatibility.au3" "%1"')
If Not FileExists(@SystemDir&'\Compatibility.au3') Then FileCopy(@ScriptDir&'\Compatibility.au3', @SystemDir,1)
EndIf

; выход если нет параметра
If $CmdLine[0]=0 Then Exit
;выделяем файл в окне
Run('Explorer.exe /select,"'&$CmdLine[1]&'"')
; посылаем команду для открытия окна Свойства
Send("!{ENTER}")
Sleep(30)
$win=WinGetHandle(WinList("[REGEXPTITLE:Свойства:*]"))
; ожидаем открытие окна
WinWaitActive($win)
Sleep(30)
;посылаем команду окну горячими клавишами Windows... {TAB 2} - повторить TAB два раза
Send("^{TAB 2}")
Send("{SPACE}")
Send("{TAB}")
Send("{DOWN 3}")
Send("{ENTER}")
Автор: madmasles
Дата сообщения: 12.06.2010 08:57
AZJIO
Цитата:
понравилась плавное движение текста.

Посмотрите здесь: Au3ToPost ( ...\Includes\AboutBox.au3) и здесь: Прокрутка текста без мерцаний.

С праздником всех!
Автор: AZJIO
Дата сообщения: 12.06.2010 12:31
Попробовал используя UDF Table.au3 в скрипте Check_md5.au3 сделать диалог вывода, смотрится красиво, хотя много лишнего кода, а информация о хеш в принципе не нужна.



madmasles
Да, я знаю, но не много есть мерцание. А в той утилите практически нет, если только всматриваться. И процессор она на 30% меньше напрягает.
Автор: AZJIO
Дата сообщения: 14.06.2010 19:41
Сделал полный портабельный дистрибутив AutoIt3 v3.3.6.1 (20Мб), но при полных тестах столкнулся с проблемой, не работают директивы:

Цитата:
#AutoIt3Wrapper_Run_After="%autoitdir%\SciTE\ResHacker\ResHacker.exe" -add "%out%", "%out%", %scriptdir%\TextCorrection1.ico, IconGroup, 1, 0
#AutoIt3Wrapper_Run_After="%autoitdir%\SciTE\ResHacker\ResHacker.exe" -delete "%out%", "%out%", DIALOG, 1000,
#AutoIt3Wrapper_Run_After="%autoitdir%\SciTE\ResHacker\ResHacker.exe" -delete "%out%", "%out%", ICON, 161,
#AutoIt3Wrapper_Run_After="%autoitdir%\SciTE\upx\upx.exe" -7 --compress-icons=0 "%out%"

Проблема в пробелах пути папки "Program Files", если извлекаю дистрибутив в корень, то работает нормально.
Автор: Cegpuk
Дата сообщения: 14.06.2010 20:04
1. Объясните, как работает функция. Не могу понять каким образом происходит переключение состояния не в паузе/в паузе.

Код: Global $Paused
HotKeySet("{PAUSE}", "TogglePause")

Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
WEnd
EndFunc
Автор: vicbox777
Дата сообщения: 14.06.2010 20:29
Cegpuk 21:04 14-06-2010
Цитата:
1. Объясните, как работает функция. Не могу понять каким образом происходит переключение состояния не в паузе/в паузе.

Поставь после $Paused = NOT $Paused, например msgbox и посмотри, какое значение будет в переменной - $Paused - сам догадаешся. Значение меняется так, ибо НЕ Истина=ложь, ибо НЕ Ложь=истина. Цикл работает пока Истина.
Автор: madmasles
Дата сообщения: 14.06.2010 20:46
Cegpuk

Цитата:
Умеет ли AutoIT работать с памятью

Умеет. Посмотрите эту UDF NomadMemory.
И в англ. справке раздел Memory Management.
Автор: Cegpuk
Дата сообщения: 14.06.2010 21:34
vicbox777,
Я понимаю, как работает $Paused = NOT $Paused. Мне не понятно следующее: при первом же заходе в функцию $Paused получает NOT и следовательно While уже не должен работать. Но оно работает.
Вот такое вариант мне полностью понятен:
Код: Func Pause()
    $Paused = NOT $Paused
    While $Paused=True
     Sleep(100)
    WEnd
EndFunc
Автор: ViSiToR
Дата сообщения: 14.06.2010 22:16
Cegpuk 22:34 14-06-2010
Цитата:
MsgBox всё разъяснил

Угу, это (или ToolTip в некоторых ситуациях) надёжный и простой метод отладки кода. У меня самая частоиспользуемая аббревиатура это mb (MsgBox(64, 'Title', |)).
Автор: AZJIO
Дата сообщения: 15.06.2010 08:24
Обновил скрипт [more=list_var_funk.au3]
Код: ; @AZJIO 25.10.2010 - 11.04.2011

; En
$LngTitle='Variables and Functions'
$LngFO1='Select File.'
$LngFO2='Script'
$LngMs1='Message'
$LngMs2='No variables.'&@CRLF&'Continue?'
$LngLVr='Variables'
$LngLFu='Functions'
$LngLPc='pieces'
$LngCb1='> clipboard'
$LngCbH1='Copy the list of variables'&@CRLF&'to the clipboard'
$LngCb2='clipboard >'
$LngCbH2='Import from the clipboard'&@CRLF&'and show a list of variables'
$LngLcH='List as a local'&@CRLF&'variable declaration'
$LngCbHF='Copy the list of functions'&@CRLF&'to the clipboard'
$LngInc='See all the functions'&@CRLF&'in the directory "Include"'
$LngLt1='Done in'
$LngLt2='sec'
$LngUse='Use'
$LngRep='Counting the number '&@CRLF&'of repetitions of variables'
$LngOpi='Open the file folder "Include"'
$helpmsg='Hotkeys'&@CRLF&@CRLF& _
'Ctrl + Left Arrow - a list of variables to copy to clipboard'&@CRLF& _
'Ctrl + Right Arrow - a list of functions to copy to clipboard'&@CRLF& _
'Ctrl + Down Arrow - imported from Clipboard'&@CRLF& _
'Ctrl + Up Arrow - a list of variables to copy to the clipboard as a local variable declaration'&@CRLF&@CRLF& _
'Can throw the script out the window or directory scripts. In the latter case, the output only functions. Also specify the path to the script at the command prompt, which is convenient when working in a text editor.'&@CRLF&@CRLF& _
'The script is designed to show the variables and functions in the scripts, to avoid duplication, to be able to fearlessly copy of the code of one script to another. Allows you to keep track of variable names to avoid duplication when you want to rename a variable, eg $Path and $PathName. When replacing the $Path will damage $PathName, so you need to temporarily rename $PathName, then rename $Path, and then restore the $PathName. Variables and functions are displayed in one instance and sorted. The window supports drag-and-drop, and resize. The time counter shows the reading of the script or scripts directory.'

$Lang_dll = DllOpen("kernel32.dll")
$UserIntLang=DllCall ( $Lang_dll, "int", "GetUserDefaultUILanguage" )
If Not @error Then $UserIntLang=Hex($UserIntLang[0],4)
DllClose($Lang_dll)

; Ru
; если русская локализация, то русский язык
If $UserIntLang = 0419 Then
    $LngTitle='Переменные и функции'
    $LngFO1='Выбор файла.'
    $LngFO2='Скрипт'
    $LngMs1='Сообщение'
    $LngMs2='Нет переменных.'&@CRLF&'Продолжить?'
    $LngLVr='Переменные'
    $LngLFu='Функции'
    $LngLPc='шт'
    $LngCb1='в буфер'
    $LngCbH1='Скопировать список переменных '&@CRLF&'в буфер обмена'
    $LngCb2='из буфера'
    $LngCbH2='Прочитать код из буфера'&@CRLF&'и показать список переменных'
    $LngLcH='Список в виде локального'&@CRLF&'объявления переменных'
    $LngCbHF='Скопировать список функций '&@CRLF&'в буфер обмена'
    $LngInc='Показать все функции'&@CRLF&'каталога Include'
    $LngLt1='Выполнено за'
    $LngLt2='сек'
    $LngUse='Используйте'
    $LngRep='Подсчитывать количество'&@CRLF&'повторов переменных'
    $LngOpi='Открыть файл папки Include'
    $helpmsg='Горячие клавиши'&@CRLF&@CRLF& _
'Ctrl+стрелка влево - список переменных скопировать в буфер обмена'&@CRLF& _
'Ctrl+стрелка вправо - список функций скопировать в буфер обмена'&@CRLF& _
'Ctrl+стрелка вниз - обработать буфер обмена'&@CRLF& _
'Ctrl+стрелка вверх - список переменных скопировать в буфер обмена в виде локального объявления переменных'&@CRLF&@CRLF& _
'Можете кинуть скрипт в окно или каталог скриптов. В последнем случае вывод только функций. Также указать путь к скрипту в ком-строке, что удобно при работе в текстовом редакторе имеющего вызов других утилит.'&@CRLF&@CRLF& _
'Скрипт предназначен для просмотра переменных и функций в скриптах на предмет пересечения, для возможности безбоязненно копировать часть кода одного скрипта в другой. Также позволяет визуально отследить что при выполнении замены имени переменной не произойдёт порча близкой по имени переменной, например $Path и $PathName. При замене $Path испортится $PathName, поэтому можно временно переименовать сначала $PathName, а потом $Path и далее восстановить $PathName. Переменные и функции читаются из скрипта в одном экзэмпляре и сортируются. Окно поддерживает drag-and-drop, и изменение размера окна. Счётчик времени показывает время считывания скрипта или каталога скриптов.'
EndIf



#Include<Array.au3>
Opt("GUIResizeMode", 0x0322)
$bufer_read33 = 0 ; если 1 то читаем из буфера, если 0 то диалог выбора файла
Global $k, $kf, $text01, $text02, $text0, $text, $Info_Edit1, $Info_Edit2, $Time, $timer, $FileName='', $FilePath

If $CmdLine[0]=0 Then
    If $bufer_read33 = 1 Then
        $text = ClipGet()
    Else
        $Path = FileOpenDialog($LngFO1, @WorkingDir & "", $LngFO2&" (*.au3)", 1 + 4)
        If @error Then Exit
        $FileName=StringRegExpReplace($Path, '(^.*)\\(.*)$', '\2')
        $file = FileOpen($Path, 0)
        $text = FileRead($file)
        FileClose($file)
        $FilePath=$Path
    EndIf
Else
    If FileExists($CmdLine[1]) Then
        $file = FileOpen($CmdLine[1], 0)
        $text = FileRead($file)
        FileClose($file)
        $FileName=StringRegExpReplace($CmdLine[1], '(^.*)\\(.*)$', '\2')
        $FilePath=$CmdLine[1]
    EndIf
EndIf

Global $TrChe = 0
_ReadAU3($text)

If $k = 0 And MsgBox(4, $LngMs1, $LngMs2)=7 Then Exit
If $k < 25 Then
    $pos = $k
    If $k = 0 Then $pos=5
Else
    $pos = 25
EndIf


$Gui = GUICreate($LngTitle, 410, $pos * 17 + 140, -1, -1, 0x00040000+0x00020000+0x00010000, 0x00000010)
$CatchDrop = GUICtrlCreateLabel("", 0, 0, 410, $pos * 17 + 120)
GUICtrlSetState(-1, 128 + 8)
GUICtrlSetResizing(-1, 1)
$per=GUICtrlCreateLabel($LngLVr&' - '&$k&' '&$LngLPc, 8, 3, 190, 17)
GUICtrlSetResizing(-1, 1+2+32+512)
$fun=GUICtrlCreateLabel($LngLFu&' - '&$kf&' '&$LngLPc, 208, 3, 190, 17)
GUICtrlSetResizing(-1, 1+4+32+512)
$Info_Edit1 = GUICtrlCreateEdit($text01, 8, 22, 190, $pos * 17 + 40)
GUICtrlSetResizing(-1, 1+2+32+64)
$Info_Edit2 = GUICtrlCreateEdit($text02, 208, 22, 190, $pos * 17 + 40)
GUICtrlSetResizing(-1, 1+4+32+64)
$byf1 = GUICtrlCreateButton($LngCb1, 8, $pos * 17 + 67, 61, 22)
GUICtrlSetResizing(-1, 1+2+64+256+512)
GUICtrlSetTip(-1, $LngCbH1)
$Openbyf = GUICtrlCreateButton($LngCb2, 72, $pos * 17 + 67, 61, 22)
GUICtrlSetResizing(-1, 1+2+64+256+512)
GUICtrlSetTip(-1, $LngCbH2)
$Locbyf = GUICtrlCreateButton('Local', 136, $pos * 17 + 67, 61, 22)
GUICtrlSetResizing(-1, 1+2+64+256+512)
GUICtrlSetTip(-1, $LngLcH)
$byf2 = GUICtrlCreateButton($LngCb1, 208, $pos * 17 + 67, 61, 22)
GUICtrlSetResizing(-1, 1+4+64+256+512)
GUICtrlSetTip(-1, $LngCbHF)
$Include = GUICtrlCreateButton('Include', 272, $pos * 17 + 67, 61, 22)
GUICtrlSetResizing(-1, 1+4+64+256+512)
GUICtrlSetTip(-1, $LngInc)
$help = GUICtrlCreateButton('?', 336, $pos * 17 + 67, 61, 22)
GUICtrlSetResizing(-1, 1+4+64+256+512)
$Time = GUICtrlCreateLabel($LngLt1&' '&Round($timer/1000, 1)&' '&$LngLt2, 8, $pos * 17 + 93, 160, 17)
GUICtrlSetResizing(-1, 1+64+512)
GUICtrlCreateLabel($LngUse&' drag-and-drop', 178, $pos * 17 + 93, 160, 17)
GUICtrlSetResizing(-1, 1+64+512)
If $FileName<>'' Then WinSetTitle($Gui, '', $FileName&' - '&$LngTitle)

$Che = GUICtrlCreateCheckbox('N', 340, $pos * 17 + 67+24, 25, 17)
GUICtrlSetResizing(-1, 1+4+64+256+512)
GUICtrlSetTip(-1, $LngRep)
$OpInc= GUICtrlCreateButton('Open', 369, $pos * 17 + 67+24, 36, 18)
GUICtrlSetResizing(-1, 1+4+64+256+512)
GUICtrlSetTip(-1, $LngOpi)

Dim $AccelKeys[4][2]=[["^{LEFT}", $byf1], ["^{RIGHT}", $byf2], ["^{DOWN}", $Openbyf], ["^{UP}", $Locbyf]]

GUISetAccelerators($AccelKeys)

GUISetState()
GUIRegisterMsg(0x0024, "WM_GETMINMAXINFO")
Send('^{HOME}')

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $OpInc
            $curretPath = RegRead("HKLM\SOFTWARE\AutoIt v3\AutoIt","InstallDir")&'\Include'
            If @error Or Not FileExists($curretPath) Then $curretPath=@WorkingDir
            $OpenFile = FileOpenDialog('Open', $curretPath, 'Script (*.au3)', 1, '', $Gui)
            If @error Then ContinueLoop
            $FilePath=$OpenFile
            _OpenFile($FilePath)
        Case $msg = $help
            _MsgFile()
        Case $msg = $Include
            $curretPath = RegRead("HKLM\SOFTWARE\AutoIt v3\AutoIt","InstallDir")&'\Include'
            If @error Or Not FileExists($curretPath) Then ContinueLoop
            _Include($curretPath)
        Case $msg = $Locbyf
            ClipPut('Local '&StringRegExpReplace(GUICtrlRead($Info_Edit1), @CRLF&'\$', ', $'))
        Case $msg = $Openbyf
            $text=ClipGet()
            _ReadAU3($text)
            GUICtrlSetData($per, $LngLVr&' - '&$k&' '&$LngLPc)
            GUICtrlSetData($fun, $LngLFu&' - '&$kf&' '&$LngLPc)
            WinSetTitle($Gui, '', $LngCb2&' - '&$LngTitle)
        Case $msg = $byf1
            ClipPut(GUICtrlRead($Info_Edit1))
        Case $msg = $byf2
            ClipPut(GUICtrlRead($Info_Edit2))
        Case $msg = $Che
            If GUICtrlRead($Che)=1 Then
                $TrChe = 1
            Else
                $TrChe = 0
            EndIf
            If FileExists($FilePath) Then
                _OpenFile($FilePath)
            EndIf
        Case $msg = -13
            $FilePath=@GUI_DragFile
            _OpenFile(@GUI_DragFile)
        Case $msg = -3
            Exit
    EndSelect
WEnd


Func _OpenFile($OpenPath)
    If StringInStr(FileGetAttrib($OpenPath), "D") Then
        _Include($OpenPath)
    ElseIf StringRight($OpenPath, 4)='.au3' Then
        $file = FileOpen($OpenPath, 0)
        $text = FileRead($file)
        FileClose($file)
        _ReadAU3($text)
        GUICtrlSetData($per, $LngLVr&' - '&$k&' '&$LngLPc)
        GUICtrlSetData($fun, $LngLFu&' - '&$kf&' '&$LngLPc)
        WinSetTitle($Gui, '', StringRegExpReplace($OpenPath, '(^.*)\\(.*)$', '\2')&' - '&$LngTitle)
    EndIf
EndFunc

Func _Include($curretPath)
    $search = _FileFindFirstFile($curretPath & "\*.au3",1)
    If $search <> -1 Then
        $textAll=''
        $timer = TimerInit()
        $kf2=0
        While 1
            $file_open = _FileFindNextFile($search)
            If @error Then ExitLoop
            $file = FileOpen($curretPath&'\'&$file_open, 0)
            $text = FileRead($file)
            FileClose($file)

            $aText2 = StringRegExp($text, '(?:\sFunc)\s+(\w*)', 3)
            If Not @error Then
                $kf2+=UBound($aText2)
                $textAll &= @CRLF& @CRLF& @CRLF&'+++++ '&$file_open&' +++++'& @CRLF & @CRLF
                GUICtrlSetData($Time, $file_open)
                For $i In $aText2
                    $textAll &= $i & @CRLF
                Next
            Else
                $textAll &= @CRLF&'- - - - '&$file_open&' - - - -'
            EndIf
        WEnd
        _FileFindClose($search)
        WinSetTitle($Gui, '', StringRegExpReplace($curretPath, '(^.*)\\(.*)$', '\2')&' - '&$LngTitle)
        GUICtrlSetData($Info_Edit2, $textAll)
        GUICtrlSetData($Info_Edit1, '')
        GUICtrlSetData($per, $LngLVr)
        GUICtrlSetData($fun, $LngLFu&' - '&$kf&' '&$LngLPc)
        $timer=TimerDiff($timer)
        GUICtrlSetData($Time, $LngLt1&' '&Round($timer/1000, 2)&' '&$LngLt2)
    EndIf
EndFunc

Func _ReadAU3($text)
    $timer = TimerInit() ; засекаем время
    ; начинаем поиск переменных
    $aT1 = StringRegExp($text & @CRLF, '(?<=\$)\w+', 3) ; детектируем переменные в массив
    If Not @error Then
        $k=0
        For $i = 0 To UBound($aT1) -1
            Assign($aT1[$i]&'_3j5d2f8k_', Eval($aT1[$i]&'_3j5d2f8k_')+1, 1)
            If Eval($aT1[$i]&'_3j5d2f8k_') = 1 Then
                ; $aT1[$k]= "$" &$aT1[$i]
                $aT1[$k]=$aT1[$i]
                $k+=1
            EndIf
        Next
        ReDim $aT1[$k]
        _ArraySort($aT1) ; сортировка массива
        Dim $aT134[$k]
        
        If $TrChe=1 Then
            For $i = 0 To UBound($aT1) -1
                    $aT1[$i]= "$" &$aT1[$i]&' - '&Eval($aT1[$i]&'_3j5d2f8k_')
            Next
        Else
            For $i = 0 To UBound($aT1) -1
                    $aT1[$i]= "$" &$aT1[$i]
            Next
        EndIf

        $text01 = ''
        For $i In $aT1 ; объединение массива в многостроковый текст
            $text01 &= $i & @CRLF
        Next

        GUICtrlSetData($Info_Edit1, $text01)
    Else
        $k=0
    EndIf

    ; начинаем поиск функций
    $aText2 = StringRegExp($text, '(?:\sFunc)\s+(\w*)', 3) ; детектируем функции в массив
    If Not @error Then
        _ArraySort($aText2) ; сортировка массива

        $text02 = ''
        $kf=UBound($aText2)
        For $i In $aText2 ; объединение массива в многостроковый текст
            $text02 &= $i & @CRLF
        Next
        ; конец поиск функций
        GUICtrlSetData($Info_Edit2, $text02)
    Else
        $kf=0
    EndIf
    $timer=TimerDiff($timer)
    GUICtrlSetData($Time, $LngLt1&' '&Round($timer/1000, 2)&' '&$LngLt2)
EndFunc

; #INDEX# =======================================================================================================================
; Title .........: FileFind
; AutoIt Version : 3.2.3++
; Language ......: Русский
; Description ...: Поиск файлов, включая подкаталоги, синтаксис и возвращаемое значение совпадают с FileFindFirstFile()
; FileFindNextFile(), в FileFindFirstFile("filename" [,flag]) добавлен необязатенльный параметр flag
; flag=1 - поиск файлов
; flag=2 - поиск каталогов , по умолчанию flag=3
; Author(s) .....: Nikzzzz
; ===============================================================================================================================

Func _FileFindFirstFile($sFile,$iMode=3)
Local $avStack[5]
$avStack[0] = 0
$avStack[1] = StringMid($sFile, StringInStr($sFile, "\", 0, -1) + 1)
$avStack[1] = StringRegExpReplace($avStack[1], "[\\\(\)\{\}\+\$\.]", "\\\0")
$avStack[1] = StringReplace($avStack[1], "*", ".*")
$avStack[1] = StringReplace($avStack[1], "?", ".")
$avStack[2] = $iMode
$avStack[3] = StringLeft($sFile, StringInStr($sFile, "\", 0, -1) - 1)
$avStack[4] = FileFindFirstFile($avStack[3] & "\*.*")
If $avStack[4] = -1 Then
SetError(1)
Return -1
EndIf
Return $avStack
EndFunc ;==>_FileFindFirstFile

Func _FileFindNextFile(ByRef $avStack)
Local $sFindFile
While 1
$sFindFile = FileFindNextFile($avStack[$avStack[0] + 4])
If Not @error Then
If StringInStr(FileGetAttrib($avStack[$avStack[0] + 3] & "\" & $sFindFile), "D") > 0 Then
$avStack[0] += 2
ReDim $avStack[$avStack[0] + 5]
$avStack[$avStack[0] + 3] = $avStack[$avStack[0]+1] & "\" & $sFindFile
$avStack[$avStack[0] + 4] = FileFindFirstFile($avStack[$avStack[0] + 3] & "\*.*")
If BitAND($avStack[2],2) Then Return StringMid($avStack[$avStack[0] + 3], StringLen($avStack[3]) + 2)
ContinueLoop
Else
If StringRegExpReplace($sFindFile, $avStack[1], "") = "" Then
SetError(0)
If BitAND($avStack[2],1) Then Return StringMid($avStack[$avStack[0] + 3] & "\" & $sFindFile, StringLen($avStack[3]) + 2)
Else
ContinueLoop
EndIf
EndIf
Else
If $avStack[0] = 0 Then
SetError(-1)
Return ""
Else
FileClose($avStack[$avStack[0] + 4])
$avStack[0] -= 2
ReDim $avStack[$avStack[0] + 5]
EndIf
EndIf
WEnd
EndFunc ;==>_FileFindNextFile

Func _FileFindClose(ByRef $avStack)
Local $iRetVaue
While $avStack[0] >= 0
$iRetVaue=FileClose($avStack[$avStack[0] + 4])
$avStack[0] -= 2
WEnd
ReDim $avStack[1]
Return $iRetVaue
EndFunc ;==>_FileFindClose

Func WM_GETMINMAXINFO($hWnd, $iMsg, $wParam, $lParam)

Local $aWorkArea = _WinAPI_GetWorkingArea()

If $hWnd = $GUI Then
Local $tMINMAXINFO = DllStructCreate("int;int;" & _
"int MaxSizeX; int MaxSizeY;" & _
"int MaxPositionX;int MaxPositionY;" & _
"int MinTrackSizeX; int MinTrackSizeY;" & _
"int MaxTrackSizeX; int MaxTrackSizeY", _
$lParam)
DllStructSetData($tMINMAXINFO, "MinTrackSizeX", 410) ; минимальные размеры окна
DllStructSetData($tMINMAXINFO, "MinTrackSizeY", 200)
DllStructSetData($tMINMAXINFO, "MaxPositionX", $aWorkArea[0])
DllStructSetData($tMINMAXINFO, "MaxPositionY", $aWorkArea[1])
DllStructSetData($tMINMAXINFO, "MaxSizeX", 600) ; размеры развёрнутого состояния ( просто удали строку, чтоб игнорировать критерий)
DllStructSetData($tMINMAXINFO, "MaxSizeY", $aWorkArea[3]-$aWorkArea[1])
EndIf
EndFunc

Func _WinAPI_GetWorkingArea()
Local Const $SPI_GETWORKAREA = 48
Local $stRECT = DllStructCreate("long; long; long; long")

Local $SPIRet = DllCall("User32.dll", "int", "SystemParametersInfo", "uint", $SPI_GETWORKAREA, "uint", 0, "ptr", DllStructGetPtr($stRECT), "uint", 0)
If @error Then Return 0
If $SPIRet[0] = 0 Then Return 0

Local $sLeftArea = DllStructGetData($stRECT, 1)
Local $sTopArea = DllStructGetData($stRECT, 2)
Local $sRightArea = DllStructGetData($stRECT, 3)
Local $sBottomArea = DllStructGetData($stRECT, 4)

Local $aRet[4] = [$sLeftArea, $sTopArea, $sRightArea, $sBottomArea]
Return $aRet
EndFunc


Func _MsgFile()
    GUISetState(@SW_DISABLE, $Gui)
$Gui1 = GUICreate('Сообщение', 500, 340, -1, -1, -1, 0x00000080,$Gui)
    GUICtrlCreateLabel($helpmsg, 15, 10, 480, 330)
    GUISetState(@SW_SHOW, $Gui1)
    While 1
        $msg = GUIGetMsg()
        If $msg = -3 Then
            $msg = $Gui
            GUISetState(@SW_ENABLE, $Gui)
            GUIDelete($Gui1)
            ExitLoop
        EndIf
WEnd
EndFunc
Автор: Kar1son
Дата сообщения: 15.06.2010 08:43

Цитата:
mb (MsgBox(64, 'Title', |))

а что это? mb в справке не нашел, а на | ругается как не допустимый символ...
Автор: afanasy_spb_ru
Дата сообщения: 15.06.2010 12:18
Добрый день, уважаемые!
Написал в AutoIt утилиту-текстовый обработчик и откомпилировал её под DOS консоль. Хотелось бы добавить небольшой текст-описание, который бы был виден при старте утилиты в DOS консоли...
Подскажите, пожалуйста, как писать строки в DOS консоль...

(Изиняюсь, если тема уже поднималась... Утилита будет использоваться также на ПК под Linux, так что решения для записи строк в консоль Windows не катят...)

Страницы: 12345678910111213

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


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