Дак он есть на руборде. Причем есть еще и моя страничка. Заметьте, не я начал сборки здесь обсуждатьOrion9 писал(а):Нужен другой топик на тему сборок и прочего.
Autorun
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
На руборде много чего есть, даже Рошаль со своим топиком ) Но вот чего там точно нет, так это темы "Autorun" ))AkulaBig писал(а):Дак он есть на руборде.
Вот видите?! Каждый ютится там, где теплее, и только мы с Loopback - там, где холоднее ) Холодные мы с ним сердцем, остыли давно ))AkulaBig писал(а):Причем есть еще и моя страничка
Да без разницы. Ничто нам не мешает продолжить. Как говорится, вливайтесь ))AkulaBig писал(а):Заметьте, не я начал сборки здесь обсуждать
AkulaBig
Всё — кина не будет. Трансляция прервалась по техническим причинам, возникшим за территорией Советского Союза
Видно не судьба )
[cut]Но я гляну завтра[/cut]
1. Loopback создаст на руборде тему "Autorun"
2. Flasher триумфально вернётся на форум wincmd.ru
3. Я сам сделаю свой Total Commander или хотя бы архиватор
4. Ghisler объявит о своём уходе и станцует нам лезгинку
Любое из этих событий или их комбинация теоретически может привести меня на рубоард )
Всё — кина не будет. Трансляция прервалась по техническим причинам, возникшим за территорией Советского Союза
[cut]Но я гляну завтра[/cut]
Есть только четыре варианта, при которых я могу оказаться на руборде:Avada писал(а):А про ру-борд вам посоветовали в общем и целом правильно.
1. Loopback создаст на руборде тему "Autorun"
2. Flasher триумфально вернётся на форум wincmd.ru
3. Я сам сделаю свой Total Commander или хотя бы архиватор
4. Ghisler объявит о своём уходе и станцует нам лезгинку
Любое из этих событий или их комбинация теоретически может привести меня на рубоард )
AkulaBig
Всё стало смотреться гораздо лучше. Осталось только заменить самую правую иконку перезагрузки, которая, на мой взгляд, слишком контрастная. Возьмите стандартную иконку от TOTALCMD.EXE или любую другую более мягкую.
На счёт панели пользователя, думаю, Autorun тут бессилен, как и TCIMG и прочие инструменты. Идея-то хорошая, с этим не поспоришь, но, к сожалению, имеет одно серьёзное ограничение - первая часть панели не должна изменяться ни при каких условиях. Стоит её только чуть-чуть изменить, как придётся перестраивать всю панель пользователя. При этом "хвост" придется где-то отдельно хранить, чтобы потом его доклеивать. Возможно, вы сами и не будете никогда трогать первую часть, но пользователь-то точно будет.
Иконка внутренних ассоциаций перестала переключаться, нужно внести изменения в TCASwitcher.ini и указать панель. Но зачем вам эта утилита, если есть скрипт на Autorun, который к тому же завязан на ВАШ vbs-скрипт? Разницы-то никакой. А, как известно, если нет разницы - зачем платить больше?
[cut=".aucfg"][/cut]
[cut="Ваш скрипт"][/cut]
[cut="Кнопка"][/cut]
Иконки 2.ico и 6.ico как раз от TCASwitcher.exe
Всё стало смотреться гораздо лучше. Осталось только заменить самую правую иконку перезагрузки, которая, на мой взгляд, слишком контрастная. Возьмите стандартную иконку от TOTALCMD.EXE или любую другую более мягкую.
На счёт панели пользователя, думаю, Autorun тут бессилен, как и TCIMG и прочие инструменты. Идея-то хорошая, с этим не поспоришь, но, к сожалению, имеет одно серьёзное ограничение - первая часть панели не должна изменяться ни при каких условиях. Стоит её только чуть-чуть изменить, как придётся перестраивать всю панель пользователя. При этом "хвост" придется где-то отдельно хранить, чтобы потом его доклеивать. Возможно, вы сами и не будете никогда трогать первую часть, но пользователь-то точно будет.
Иконка внутренних ассоциаций перестала переключаться, нужно внести изменения в TCASwitcher.ini и указать панель. Но зачем вам эта утилита, если есть скрипт на Autorun, который к тому же завязан на ВАШ vbs-скрипт? Разницы-то никакой. А, как известно, если нет разницы - зачем платить больше?
[cut=".aucfg"]
Код: Выделить всё
RegisterCommand 61003 "SwitchAssocState"
Global AssocIniState
# первое выполнение при запуске
AssocIniState = AssocState()
Func AssocState()
Local f1, res
IniRead /R f1 %COMMANDER_INI% "Associations" "Filter1" ""
# если в секции что-то есть, значит она включена
If f1 <> "" Then
SetEnv ICON_TEST "%COMMANDER_PATH%\Icons\Clsw\2.ico"
res = true
Else
SetEnv ICON_TEST "%COMMANDER_PATH%\Icons\Clsw\6.ico"
res = false
Endif
Return res
EndFunc
Func SwitchAssocState(lParam)
Local script = %COMMANDER_PATH% & "\Scripts\Vbs\ChangeAssoc.vbs", sect
If AssocState() Then
# отключение секции
sect = '[-Associations]'
Else
# включение секции
sect = '[+Associations]'
Endif
ShellExec /SW_HIDE /WAIT:3000 "%script%" "%sect%"
AssocState()
If AssocIniState Then
AssocUpdateWin(true)
Else
RunThread AssocWinSynс
EndIf
EndFunc
Func AssocWinSynс()
Local b, i, h = 0
PostMessage(AUTORUN_TCHANDLE, 0x433, 519)
# ожидание окна
For i = 1 To 75
h = WinFind(0, "TDlgCustomColors")
If h > 0 Then Break
Sleep(20)
Next
If h > 0 Then
b = WinFind(h, (AUTORUN_TCARCH = 32 ? "TButton" : "Button"), (AUTORUN_TCARCH = 32 ? 3 : 2))
SendMessage(b, 0xF5, 0, 0)
Else
ShowHint("Окно не найдено")
Return
Endif
AssocUpdateWin(false)
EndFunc
Func AssocUpdateWin(lReload)
SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
If lReload Then SendCommand cm_ReloadFileIcons
SendCommand cm_ReloadBarIcons
Sleep(10)
SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
WinRedraw(1)
EndFunc
[cut="Ваш скрипт"]
Код: Выделить всё
Dim objArgs
Dim objShell
Dim arrLang
arrLang = Array("[+Associations]", "[-Associations]")
Set objShell = WScript.CreateObject("WScript.Shell")
INI = objShell.ExpandEnvironmentStrings("%COMMANDER_PATH%\Ini\Associations.ini")
Text = CreateObject("Scripting.FileSystemObject").OpenTextFile(INI, 1).ReadAll
for i = 0 to UBound(arrLang)
If InStr(1, Text, arrLang(i), 1) = 0 Then
Text = Replace(Text, "[Associations]", arrLang(i), 1, 1, 1)
exit for
End If
next
Set objArgs = WScript.Arguments
If InStr(1, Text, objArgs(0), 1) Then
Text = Replace(Text, objArgs(0), "[Associations]", 1, 1, 1)
With CreateObject("Scripting.FileSystemObject")
.OpenTextFile(INI, 2).Write Text
.OpenTextFile(INI, 1).Close
End With
End If
With CreateObject("Scripting.FileSystemObject")
.OpenTextFile(INI, 2).Write Text
.OpenTextFile(INI, 1).Close
End With
Set objShell = Nothing
WScript.Quit[cut="Кнопка"]
Код: Выделить всё
TOTALCMD#BAR#DATA
61003
%ICON_TEST%
Внутренние ассоциации
1
-1
Иконки 2.ico и 6.ico как раз от TCASwitcher.exe
Она и не будет изменяться ни при каких условиях. Так как состоит только из кнопок переключения панелей. Уже исправил кое-какие нюансы и отредактировал ридми. Так что на нынешний момент меня все устраивает.Orion9 писал(а):имеет одно серьёзное ограничение - первая часть панели не должна изменяться ни при каких условиях
Ну да, забыл это сделать.Orion9 писал(а):Иконка внутренних ассоциаций перестала переключаться, нужно внести изменения в TCASwitcher.ini и указать панель
Уберу, скорей всего.Orion9 писал(а):Но зачем вам эта утилита, если есть скрипт на Autorun
За скрипт спасибо.
Я сейчас занялся заголовком. Там тоже много интересного. Почему-то найденные мной в других сборках скрипты на Autorun не полностью работают. А вот TCIMG отлично работает
По-моему, тут и думать нечего: только Autorun, только Hardcore )AkulaBig писал(а):Вот я и думаю, схалявить или пойти по трудному пути.
Можно и TCIMG использовать, наверное, но зачем: это же отдельный процесс, как я понимаю, будет всё время висеть, а у вас свой поток уже запущен - осталось только добавить к нему всё, что есть в Autorun (а есть там немало - CPU, RAM, NET, DISK, DATE, TIME и т.д.), и вопрос решён.
Спешить-то некуда. Сделаете постепенно
Все работает. Я-то vbs не использую, поэтому забыл вам написать, что у меня в скрипт ошибка закралась. УсловиеOrion9 писал(а):vbs-скрипт
Код: Выделить всё
If InStr(1, Text, objArgs(0), 1) Then
Text = Replace(Text, objArgs(0), "[Associations]", 1, 1, 1)
With CreateObject("Scripting.FileSystemObject")
.OpenTextFile(INI, 2).Write Text
.OpenTextFile(INI, 1).Close
End With
End If
Код: Выделить всё
If InStr(1, Text, objArgs(0), 1) Then
Text = Replace(Text, objArgs(0), "[Associations]", 1, 1, 1)
End If
AkulaBig
Просто кнопка ещё тестовая, даже имя переменной окружения, в которой хранится значок, так и осталось пока %ICON_TEST%
Lookback ведь обещал сделать чтение и запись секций в ini-файлах, так что весьма вероятно, что кнопка переключеня внутренних ассоциаций будет полностью на Autorun. Но хорошо, что вы сделали фикс: ваш скрипт еще однозначно пригодится )
Пока выдалась свободная минута, сделал костяк на звуковые схемы. Вариантов, как это сделать, есть, наверное, много, но пока я сделал так:
[cut="Sounds.ini"][/cut]
[cut=".aucfg"][/cut]
Здесь еще много недоделанного, но вроде всё работает.
Надеюсь, вам чем-то поможет, так как в ближайшие дни не смогу заниматься Autorun.
Вызов с параметром "0", т.е. код 61980, снимает регистрацию. Остальные коды завязаны по последней цифре на ini-файл. Вызов из кнопки обычный по коду.
В общем, думаю, вы без проблем разберётесь 
Просто кнопка ещё тестовая, даже имя переменной окружения, в которой хранится значок, так и осталось пока %ICON_TEST%
Пока выдалась свободная минута, сделал костяк на звуковые схемы. Вариантов, как это сделать, есть, наверное, много, но пока я сделал так:
[cut="Sounds.ini"]
Код: Выделить всё
[Schemes1]
Name=Алиса #1
Folder=Alisa1
Description=Алиса знает, что делать! #1
WincmdConnected=Соединение.wav
WincmdCopyComplete=Копирование.wav
WincmdDeleteComplete=Удаление.wav
WincmdPackComplete=Упаковка.wav
WincmdSearchComplete=Поиск.wav
WincmdTransferComplete=Передача.wav
WincmdUnpackComplete=Распаковка.wav
[Schemes2]
Name=Алиса #2
Folder=Alisa2
Description=Алиса знает, что делать! #2
WincmdConnected=Соединение.wav
WincmdCopyComplete=Копирование.wav
WincmdDeleteComplete=Удаление.wav
WincmdPackComplete=Упаковка.wav
WincmdSearchComplete=Поиск.wav
WincmdTransferComplete=Передача.wav
WincmdUnpackComplete=Распаковка.wav
[Schemes3]
Name=Archer
Folder=Archer
Description=Archer
WincmdConnected=TC Connected To FTP.wav
WincmdCopyComplete=TC Operation Complete.wav
WincmdDeleteComplete=TC Delete Complete.wav
WincmdPackComplete=TC Pack Complete.wav
WincmdSearchComplete=TC Search Complete.wav
WincmdTransferComplete=TC Transfer Complete.wav
WincmdUnpackComplete=TC Unpack Complete.wav
[Schemes4]
Name=Операция Ы
Folder=Операция Ы
Description=Операция Ы
WincmdConnected=Со взломом или без.wav
WincmdCopyComplete=Мелкое хулиганство - крупные деньги.wav
WincmdDeleteComplete=Пол-литра вдребезги.wav
WincmdPackComplete=Сворачивайтесь - есть дело.wav
WincmdSearchComplete=Где бабуля - я за неё.wav
WincmdTransferComplete=Всё уже украдено до нас.wav
WincmdUnpackComplete=Расхититель соцсобственности.wav
[cut=".aucfg"]
Код: Выделить всё
RegisterCommand 61980 "RegSoundScheme" 0
RegisterCommand 61981 "RegSoundScheme" 1
RegisterCommand 61982 "RegSoundScheme" 2
RegisterCommand 61983 "RegSoundScheme" 3
RegisterCommand 61984 "RegSoundScheme" 4
RegisterCommand 61985 "RegSoundScheme" 5
RegisterCommand 61986 "RegSoundScheme" 6
RegisterCommand 61987 "RegSoundScheme" 7
RegisterCommand 61988 "RegSoundScheme" 8
RegisterCommand 61989 "RegSoundScheme" 9
RegisterCommand 61990 "RegSoundScheme" 10
RegisterCommand 61991 "RegSoundScheme" 11
RegisterCommand 61992 "RegSoundScheme" 12
RegisterCommand 61993 "RegSoundScheme" 13
RegisterCommand 61994 "RegSoundScheme" 14
RegisterCommand 61995 "RegSoundScheme" 15
RegisterCommand 61996 "RegSoundScheme" 16
RegisterCommand 61997 "RegSoundScheme" 17
RegisterCommand 61998 "RegSoundScheme" 18
RegisterCommand 61999 "RegSoundScheme" 19
Global DirSounds = %COMMANDER_PATH% & "\Ini\Sounds\"
Func RegSoundScheme(lParam, nItem)
Local ini = DirSounds & "Sounds.ini"
Local sect = "Schemes" & nItem, name, fold, desc
If Not FileExist(ini) Then
ShowHint("Не найден " & ini)
Return
Endif
IniRead name %ini% %"%sect%" "Name"
IniRead fold %ini% %"%sect%" "Folder"
IniRead desc %ini% %"%sect%" "Description"
Local aNames = List("WincmdConnected","WincmdCopyComplete","WincmdDeleteComplete","WincmdPackComplete", _
"WincmdSearchComplete","WincmdTransferComplete","WincmdUnpackComplete")
# unregister sounds
If nItem = 0 Then
For i = 0 To aNames.Count - 1
key = "HKCU\AppEvents\Schemes\Apps\Wincmd\" & aNames[i] & "\.current"
RegWrite(key, "", "REG_SZ", "")
#If ERROR = 1 Then Break
Next
RegWrite("HKCU\AppEvents\Schemes\Apps\Wincmd", "", "REG_SZ", "Total Commander")
MsgBox("Звуковая схема отключена.", "Sounds")
Return
EndIf
Local aFiles = List(), ErrLog = ""
For i = 0 To aNames.Count-1
key = aNames[i]
IniRead val %ini% %"%sect%" %"%key%"
If val = "" Then
ErrLog &= "Пустое значение ключа <" & key & "> секции [" & sect & "]"
Break
EndIf
val = DirSounds & fold & "\" & val
If FileExist(val) Then
aFiles.Add(val)
Else
ErrLog &= val & auCRLF
Endif
Next
If StrLen(ErrLog) > 0 Then
MsgBox("Не найдены файлы схемы: " & auCRLF & ErrLog, "Sounds")
Return
Endif
For i = 0 To aFiles.Count - 1
#OutputDebugString(aFiles[i])
key = "HKCU\AppEvents\Schemes\Apps\Wincmd\" & aNames[i] & "\.current"
RegWrite(key, "", "REG_SZ", aFiles[i])
#If ERROR = 1 Then Break
Next
RegWrite("HKCU\AppEvents\Schemes\Apps\Wincmd", "", "REG_SZ", "TC Test")
MsgBox("Схема <" & name & "> зарегистрирована", "Sounds")
Return
EndFunc
Здесь еще много недоделанного, но вроде всё работает.
Надеюсь, вам чем-то поможет, так как в ближайшие дни не смогу заниматься Autorun.
Вызов с параметром "0", т.е. код 61980, снимает регистрацию. Остальные коды завязаны по последней цифре на ini-файл. Вызов из кнопки обычный по коду.
Код: Выделить всё
TOTALCMD#BAR#DATA
61981
%COMMANDER_EXE%
Алиса
1
-1
Да, я помню, что вы хотите, чтобы везде работало, включая WinPE.AkulaBig писал(а):Ну сам-то я последний скрипт тоже на au3 переписал.
Важно отметить, что этот труд больше увлекает, чем надоедаетAkulaBig писал(а):Так что придется потрудиться.
Три примера в отдельном модуле, на случай, если будут нужны ещё какие-то идеи:
[cut="WMI.aucfg"]
Код: Выделить всё
Pragma IncludeOnce
Global Ping3_Thread = 0, P3_MousePosX = 0, P3_MousePosY = 0
# вызов Alt + "-"
#SetHotkeyAction /K:A /V:189 WmiTcpipTest
# коды вызова из кнопок
RegisterCommand 80003 "PingThree"
RegisterCommand 80004 "WmiTcpipTest"
RegisterCommand 80005 "GetDriverList"
Func PingThree(lParam)
If Ping3_Thread > 0 Then
Ping3_Thread = 0
Else
Ping3_Thread = 1
# прямой вызов WmiPing по коду не работает
Runthread Wmiping
Endif
EndFunc
Func WmiPing()
Local out
Local wq = WMIQuery(), pa1, pa2, pa3, pq
pa1 = "192.168.1.1"
pa2 = "192.168.1.2"
pa3 = "wincmd.ru"
# приводит к ошибке Autorun
pq1 = 'SELECT Address, ResponseTime, ResponseTimeToLive, StatusCode FROM Win32_PingStatus _
WHERE BufferSize = 32 AND Timeout = 1000 AND (Address = "' & pa1 & '" _
OR Address = "' & pa2 & '" OR Address = "' & pa3 & '")'
# рабочая запись запроса
pq = "SELECT Address, ResponseTime, ResponseTimeToLive, StatusCode FROM Win32_PingStatus _
WHERE BufferSize = 32 AND Timeout = 1000 AND (Address = '" & pa1 & "' _
OR Address = '" & pa2 & "' OR Address = '" & pa3 & "')"
#OutputDebugString(pq)
MouseGetPos("P3_MousePosX", "P3_MousePosY")
ShowPingHint("Pinging started")
While Ping3_Thread > 0
out = ''
wq.Query(pq)
If IsPressed (0x1B) Then Break
While wq.Next()
out = out & "Ping " & wq.GetValue("Address") & " " & GetPingStatus(wq.GetValue("StatusCode")) _
& " ResponseTime " & wq.GetValue("ResponseTime") & " TTL " & wq.GetValue("ResponseTimeToLive") & auCRLF
If IsPressed (0x1B) Then Break
Wend
If IsPressed (0x1B) Then Break
ShowPingHint(StrTrim(out))
If IsPressed (0x1B) Then Break
#Sleep(1000)
Wend
ShowPingHint("Pinging stoped")
Free(wq)
EndFunc
Func GetPingStatus(StatusCode)
If StatusCode = 0 Then
Return "OK"
Else
Return "##"
Endif
EndFunc
Func ShowPingHint(PingHint)
# формат подсказки
SetHintParam("ShowHint", "Font", 10, "Consolas")
SetHintParam("ShowHint", "BackColor", 0x001C1C1C)
SetHintParam("ShowHint", "Text", 0xFFFFFF)
#SetHintParam("ShowHint", "Frame", 0xFFFFFF)
ShowHint(PingHint, P3_MousePosX, P3_MousePosY)
For i = 1 To 20
#If IsPressed (0x1B) Then Break
Sleep(50)
Next
#WinSetState(23)
SetHintParam("ShowHint", "Reload")
EndFunc
Func WmiTcpipTest()
Local Outstr
Local wq = WMIQuery()
While 1
wq.Query('select * from Win32_PerfFormattedData_Tcpip_NetworkInterface')
#wq.Query('select * from Win32_PerfRawData_Tcpip_NetworkInterface')
wq.Next()
Outstr = wq.GetValue("BytesReceivedPersec") & " / " & wq.GetValue("BytesSentPersec")
If IsPressed (0x1B) Then Break
ShowHint(Outstr)
Sleep(500)
WinSetState(23)
If IsPressed (0x1B) Then
Break
Endif
Wend
Free(wq)
EndFunc
Func GetDriverList()
Local Outstr
Local wq = WMIQuery()
wq.Query('SELECT * FROM Win32_SystemDriver')
While wq.Next()
Outstr = Outstr & wq.GetValue("Caption") & " | " & wq.GetValue("Name") & auCRLF
Wend
Free(wq)
Return MsgBox(Outstr)
EndFunc
Ну и в цикле можно переодически вызывать au3-скрипт, который в фоне может принести что угодно и откуда угодно )
Версия Autorun 2.2.16 beta
[cut="Список изменений"]
- исправлено падение в SizeFormat при некорректно сформированной строке единиц
+ Tweaks: переключатели /S, /D, /DM в SetMessageAction
+ Runtime: функция WinAlign
- AUTORUN_TCLANG работал неправильно на языковых файлах с нестандартным именем
- исправлено неправильное разворачиваение \r \n в Set, SetEnv
* внутренние изменения в работе со встроенными функциями
* оптимизация работы с преобразованием параметров и проверкой их количества
+ Runtime: GetCurrentItem индекс 5 (выделенное состояние элемента)
- свойство Text объекта List возвращало лишний перенос строки в конце
- FileGetTime не возвращала дату для каталогов
+ функции StrRepeat, StrReverse, Opt
+ макросы SYSERROR, SYSERRORTEXT, переменная auPtrSize, auX64
+ Call возвращает error и extended вызываемой функции
- не работало комментирование первой строки при использовании дополнительных полей
* увеличен лимит длины первой строки до 8192 байт при использовании дополнительных полей
- не работала проверка правильности имён переменных в определениях пользовательских функций
+ новое сообщение об ошибке "функция должна быть пользовательской функцией"
* внутренние изменения в работе с пользовательскими функциями для увеличения лимита по длине строк
+ функция Free может освобождать несколько объектов в одном запуске
+ объекты Buffer, Callback
+ функция DllCall
+ Tweaks: макрос LAST_HINT_WINDOW
+ Tweaks: для ShowHint задержка для автоматического закрытия, флаги
+ переменная AUTORUN_PATH доступна в Pragma Include
* внутренние изменения строчных функций для увеличения лимита по длине строк
+ функция IsObject
- при обращении к переменной, содержащей объект, не проверялось его фактическое существование
+ в объект List добавлены методы Sort, Reverse, Split, Join и IndexOf
- исправлена некорректная обработка кавычек в параметрах методов объектов в плагинах
* Runtime: функция GetSelectedItems по умолчанию исключает из вывода "..", добавлен флаг 4
+ функции IniGetSectionLocation, IniReadSectionNames, IniReadSection, IniWriteSection, IniRenameSection
- Tweaks: не обрабатывались переключатели, относящиеся к функции обратного вызова (CSMA, SHA, SMA)
- исправлены неправильные символы перевода строк в GetState и StrFormat
- исправлена неявная интерпретация числовых значений в условии цикла While..Wend
[/cut]
В этом релизе ещё один "breaking change", связанный с со внутренними изменениями, он касается использования комментариев в конце строк с функциями, записанными в командной записи. Это и раньше было нерекомендованное использование, но допускалось в отдельных случаях. Сейчас такое использование не разрешено и в большинстве случаев будет вызывать ошибку числа параметров.
Произведены внутренние изменения для увеличения лимитов по размерам строк, с которыми могут работать встроенные и пользовательские функции. Это необходимо для будущих функций чтения файлов. Как бонус, теперь в функциональной записи функции в среднем выполняются быстрее.
Ввиду большого объема внутренних изменений могут возникнуть неожиданные проблемы в любой функции, так что при необходимости будут выпущены хотфиксы.
[cut="Список изменений"]
- исправлено падение в SizeFormat при некорректно сформированной строке единиц
+ Tweaks: переключатели /S, /D, /DM в SetMessageAction
+ Runtime: функция WinAlign
- AUTORUN_TCLANG работал неправильно на языковых файлах с нестандартным именем
- исправлено неправильное разворачиваение \r \n в Set, SetEnv
* внутренние изменения в работе со встроенными функциями
* оптимизация работы с преобразованием параметров и проверкой их количества
+ Runtime: GetCurrentItem индекс 5 (выделенное состояние элемента)
- свойство Text объекта List возвращало лишний перенос строки в конце
- FileGetTime не возвращала дату для каталогов
+ функции StrRepeat, StrReverse, Opt
+ макросы SYSERROR, SYSERRORTEXT, переменная auPtrSize, auX64
+ Call возвращает error и extended вызываемой функции
- не работало комментирование первой строки при использовании дополнительных полей
* увеличен лимит длины первой строки до 8192 байт при использовании дополнительных полей
- не работала проверка правильности имён переменных в определениях пользовательских функций
+ новое сообщение об ошибке "функция должна быть пользовательской функцией"
* внутренние изменения в работе с пользовательскими функциями для увеличения лимита по длине строк
+ функция Free может освобождать несколько объектов в одном запуске
+ объекты Buffer, Callback
+ функция DllCall
+ Tweaks: макрос LAST_HINT_WINDOW
+ Tweaks: для ShowHint задержка для автоматического закрытия, флаги
+ переменная AUTORUN_PATH доступна в Pragma Include
* внутренние изменения строчных функций для увеличения лимита по длине строк
+ функция IsObject
- при обращении к переменной, содержащей объект, не проверялось его фактическое существование
+ в объект List добавлены методы Sort, Reverse, Split, Join и IndexOf
- исправлена некорректная обработка кавычек в параметрах методов объектов в плагинах
* Runtime: функция GetSelectedItems по умолчанию исключает из вывода "..", добавлен флаг 4
+ функции IniGetSectionLocation, IniReadSectionNames, IniReadSection, IniWriteSection, IniRenameSection
- Tweaks: не обрабатывались переключатели, относящиеся к функции обратного вызова (CSMA, SHA, SMA)
- исправлены неправильные символы перевода строк в GetState и StrFormat
- исправлена неявная интерпретация числовых значений в условии цикла While..Wend
[/cut]
В этом релизе ещё один "breaking change", связанный с со внутренними изменениями, он касается использования комментариев в конце строк с функциями, записанными в командной записи. Это и раньше было нерекомендованное использование, но допускалось в отдельных случаях. Сейчас такое использование не разрешено и в большинстве случаев будет вызывать ошибку числа параметров.
Произведены внутренние изменения для увеличения лимитов по размерам строк, с которыми могут работать встроенные и пользовательские функции. Это необходимо для будущих функций чтения файлов. Как бонус, теперь в функциональной записи функции в среднем выполняются быстрее.
Ввиду большого объема внутренних изменений могут возникнуть неожиданные проблемы в любой функции, так что при необходимости будут выпущены хотфиксы.