Autorun

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):Нужен другой топик на тему сборок и прочего.
Дак он есть на руборде. Причем есть еще и моя страничка. Заметьте, не я начал сборки здесь обсуждать :lol:
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Дак он есть на руборде.
На руборде много чего есть, даже Рошаль со своим топиком ) Но вот чего там точно нет, так это темы "Autorun" ))
AkulaBig писал(а):Причем есть еще и моя страничка
Вот видите?! Каждый ютится там, где теплее, и только мы с Loopback - там, где холоднее ) Холодные мы с ним сердцем, остыли давно ))
AkulaBig писал(а):Заметьте, не я начал сборки здесь обсуждать
Да без разницы. Ничто нам не мешает продолжить. Как говорится, вливайтесь ))
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Orion9
Никаких вливаний там не будет, я закрыл ту тему. С нарушением правил (в особенности с оффтопом) пора заканчивать. А про ру-борд вам посоветовали в общем и целом правильно.
Даже самая богатая фантазия
Не представит себе наши безобразия.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а): Ничто нам не мешает продолжить.
[cut]
Переделал я сильно тулбар. Примерно как вы предлагали. Правда надо еще до ума довести кнопку пользовательской панели и описание исправить.
[/cut]
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig
Всё — кина не будет. Трансляция прервалась по техническим причинам, возникшим за территорией Советского Союза :mrgreen: Видно не судьба )
[cut]Но я гляну завтра[/cut]
Avada писал(а):А про ру-борд вам посоветовали в общем и целом правильно.
Есть только четыре варианта, при которых я могу оказаться на руборде:

1. Loopback создаст на руборде тему "Autorun"
2. Flasher триумфально вернётся на форум wincmd.ru
3. Я сам сделаю свой Total Commander или хотя бы архиватор
4. Ghisler объявит о своём уходе и станцует нам лезгинку

Любое из этих событий или их комбинация теоретически может привести меня на рубоард )
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Orion9
Странные у вас критерии. Но ещё раз — давайте заканчивать оффтоп (а кое-где уже и флуд). В этой теме его стало неприлично много.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig
Всё стало смотреться гораздо лучше. Осталось только заменить самую правую иконку перезагрузки, которая, на мой взгляд, слишком контрастная. Возьмите стандартную иконку от TOTALCMD.EXE или любую другую более мягкую.

На счёт панели пользователя, думаю, Autorun тут бессилен, как и TCIMG и прочие инструменты. Идея-то хорошая, с этим не поспоришь, но, к сожалению, имеет одно серьёзное ограничение - первая часть панели не должна изменяться ни при каких условиях. Стоит её только чуть-чуть изменить, как придётся перестраивать всю панель пользователя. При этом "хвост" придется где-то отдельно хранить, чтобы потом его доклеивать. Возможно, вы сами и не будете никогда трогать первую часть, но пользователь-то точно будет.

Иконка внутренних ассоциаций перестала переключаться, нужно внести изменения в TCASwitcher.ini и указать панель. Но зачем вам эта утилита, если есть скрипт на Autorun, который к тому же завязан на ВАШ vbs-скрипт? Разницы-то никакой. А, как известно, если нет разницы - зачем платить больше? :mrgreen:

[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]
[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]
[cut="Кнопка"]

Код: Выделить всё

TOTALCMD#BAR#DATA
61003

%ICON_TEST%
Внутренние ассоциации

1
-1
[/cut]
Иконки 2.ico и 6.ico как раз от TCASwitcher.exe
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):имеет одно серьёзное ограничение - первая часть панели не должна изменяться ни при каких условиях
Она и не будет изменяться ни при каких условиях. Так как состоит только из кнопок переключения панелей. Уже исправил кое-какие нюансы и отредактировал ридми. Так что на нынешний момент меня все устраивает.
Orion9 писал(а):Иконка внутренних ассоциаций перестала переключаться, нужно внести изменения в TCASwitcher.ini и указать панель
Ну да, забыл это сделать.
Orion9 писал(а):Но зачем вам эта утилита, если есть скрипт на Autorun
Уберу, скорей всего.
За скрипт спасибо.
Я сейчас занялся заголовком. Там тоже много интересного. Почему-то найденные мной в других сборках скрипты на Autorun не полностью работают. А вот TCIMG отлично работает :) У ней тоже есть этот функционал. Вот я и думаю, схалявить или пойти по трудному пути.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Вот я и думаю, схалявить или пойти по трудному пути.
По-моему, тут и думать нечего: только Autorun, только Hardcore )

Можно и TCIMG использовать, наверное, но зачем: это же отдельный процесс, как я понимаю, будет всё время висеть, а у вас свой поток уже запущен - осталось только добавить к нему всё, что есть в Autorun (а есть там немало - CPU, RAM, NET, DISK, DATE, TIME и т.д.), и вопрос решён.

Спешить-то некуда. Сделаете постепенно :)
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):vbs-скрипт
Все работает. Я-то 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
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9
Убрал свитчер.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig
Просто кнопка ещё тестовая, даже имя переменной окружения, в которой хранится значок, так и осталось пока %ICON_TEST% :) Lookback ведь обещал сделать чтение и запись секций в ini-файлах, так что весьма вероятно, что кнопка переключеня внутренних ассоциаций будет полностью на Autorun. Но хорошо, что вы сделали фикс: ваш скрипт еще однозначно пригодится )

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

[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]

[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
[/cut]
Здесь еще много недоделанного, но вроде всё работает.

Надеюсь, вам чем-то поможет, так как в ближайшие дни не смогу заниматься Autorun.

Вызов с параметром "0", т.е. код 61980, снимает регистрацию. Остальные коды завязаны по последней цифре на ini-файл. Вызов из кнопки обычный по коду.

Код: Выделить всё

TOTALCMD#BAR#DATA
61981

%COMMANDER_EXE%
Алиса

1
-1
В общем, думаю, вы без проблем разберётесь :)
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):ваш скрипт еще однозначно пригодится
Ну сам-то я последний скрипт тоже на au3 переписал.
Orion9 писал(а):разберётесь
Когда до этого дело дойдет. Сейчас с вашим :) заголовком разбираюсь. Планы грандиозные. Так что придется потрудиться. Планирую настройку через инишник делать.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Ну сам-то я последний скрипт тоже на au3 переписал.
Да, я помню, что вы хотите, чтобы везде работало, включая WinPE.
AkulaBig писал(а):Так что придется потрудиться.
Важно отметить, что этот труд больше увлекает, чем надоедает :) Когда я делал, в Autorun ещё много не было из того, что появилось в последних версиях. Сейчас один объект List чего стоит (кстати, в последнем примере я забыл освободить объекты List через Free). И это если ещё не говорить об объекте WMIQuery, который тоже может помочь развернуться не на шутку.

Три примера в отдельном модуле, на случай, если будут нужны ещё какие-то идеи:
[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
[/cut]
Ну и в цикле можно переодически вызывать au3-скрипт, который в фоне может принести что угодно и откуда угодно )
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Версия 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", связанный с со внутренними изменениями, он касается использования комментариев в конце строк с функциями, записанными в командной записи. Это и раньше было нерекомендованное использование, но допускалось в отдельных случаях. Сейчас такое использование не разрешено и в большинстве случаев будет вызывать ошибку числа параметров.

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

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