View previous topic :: View next topic |
Author |
Message |
AkulaBig
Joined: 03 Dec 2008 Posts: 203
|
(Separately) Posted: Sun Feb 09, 2025 22:46 Post subject: |
|
|
Loopback wrote: | Версия Autorun 2.2.16
|
Столько полезных изменений. Спасибо, будем тестить. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 658
|
(Separately) Posted: Mon Feb 10, 2025 23:48 Post subject: |
|
|
Loopback wrote: | Ввиду большого объема внутренних изменений могут возникнуть неожиданные проблемы в любой функции, так что при необходимости будут выпущены хотфиксы. |
Проблемы действительно возникли, пришлось разбираться. Пока всё запустилось, но чтобы и другое всё проверить, потребуется больше времени.
DllCall - это, конечно, круто. Ещё бы уметь им пользоваться
Можете посмотреть, что не так в этом коде:
 Hidden text Code: | Func FileSecInfo(lParam)
Static SEE_MASK_INVOKEIDLIST = 0x0000000C, _
LPSHELLEXECUTEINFO = 60, _
SW_SHOWNORMAL = 1
SW_SHOW = 5
Local p = RequestCopyDataInfo("SP")
Local n = RequestCopyDataInfo("SN")
Local f = p & n
Local buff = Buffer(LPSHELLEXECUTEINFO) , verb = Buffer(10*2+2), file = Buffer(StrLen(f)*2+2), parm = Buffer(12*2+2)
verb.SetStr("properties" & Chr(0))
file.SetStr(f & Chr(0))
#parm.SetStr("Security" & Chr(0))
parm.SetStr("Безопасность" & Chr(0))
buff.SetNum(0, "dword", buff.size, _
"ulong", SEE_MASK_INVOKEIDLIST, _
"ptr", 0, _
"ptr", verb.Ptr, _
"ptr", file.Ptr, _
"ptr", parm.Ptr, _
"ptr", 0, _
"int", 1)
DllCall("shell32\ShellExecuteExW", "ptr", buff.Ptr)
Free(buff, verb, file, parm)
EndFunc
|
Вроде всё работает, но иногда спотыкается, а иногда и ТС валит.
Ну и с новыми функциями сам Гислер велел:
 Hidden text Code: | # внутренние ассоциации
Global AssocIniState = AssocState()
Func AssocState()
Local flt
IniRead /R flt %COMMANDER_INI% "Associations" "Filter1" ""
# секция включена
If flt <> "" Then
SetEnv ICON_ASSOC "%COMMANDER_PATH%\Icons\Clsw\2.ico"
Return true
Endif
# секция выключена
SetEnv ICON_ASSOC "%COMMANDER_PATH%\Icons\Clsw\6.ico"
Return false
EndFunc
Func SwitchAssocState(lParam)
Local ini = %COMMANDER_PATH% & "\Ini\Associations.ini"
Local script = %COMMANDER_PATH% & "\Scripts\Vbs\ChangeAssoc.vbs", sect, vbs = false
If AssocState() Then
# отключение секции
sect = '[-Associations]'
If vbs = false Then IniRenameSection(ini, "Associations", "-Associations")
Else
# включение секции
sect = '[+Associations]'
If vbs = false Then IniRenameSection(ini, "-Associations", "Associations")
Endif
If vbs = true Then 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
|
Совместимость с vbs-скриптом сохранена. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 203
|
(Separately) Posted: Tue Feb 11, 2025 00:20 Post subject: |
|
|
Orion9 wrote: | чтобы и другое всё проверить, потребуется больше времени. |
Я уже переделал на обновленный TCLANG.
Только что написал новый скрипт на Autorun для переключения секций. Пришлось в инишник добавлять еще одну секцию. Но по другому никак. На нынешний момент Buttonbar.ini переделан. Завтра добью.
Orion9 wrote: | # внутренние ассоциации |
Я сначала применил вашу функцию, но потом увидел, что вы еще один процесс запускает. Я так понял у вас эта функция для тестирования. Мне-то пришлось ее полностью переделать. А завтра на новый алгоритм переделаю. И в справке приведен пример с ассоциациями с использованием нового функционала. Но и ваш вариант у меня полностью работал. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1465
|
(Separately) Posted: Tue Feb 11, 2025 12:17 Post subject: |
|
|
Orion9 wrote: | Вроде всё работает, но иногда спотыкается, а иногда и ТС валит. |
Есть две очевидные проблемы:
- память структуры нужно обнулять после создания, если явно не устанавливаются все её члены, иначе там окажется случайный мусор;
- размер структуры 60 - это для 32-битной версии, в x64 должен быть 112.
Как-то так:
 Hidden text
Code: | Func FileSecInfo(lParam)
Static SEE_MASK_INVOKEIDLIST = 0x0000000C, _
LPSHELLEXECUTEINFO = (auX64 ? 112 : 60) , _
SW_SHOWNORMAL = 1
SW_SHOW = 5
Local p = RequestCopyDataInfo("SP")
Local n = RequestCopyDataInfo("SN")
Local f = p & n
Local buff = Buffer(LPSHELLEXECUTEINFO), verb = Buffer(10*2+2), file = Buffer(StrLen(f)*2+2), parm = Buffer(12*2+2)
buff.Zero() # обнуляем память
verb.SetStr("properties" & Chr(0))
file.SetStr(f & Chr(0))
#parm.SetStr("Security" & Chr(0))
parm.SetStr("Безопасность" & Chr(0))
buff.SetNum(0, "dword", buff.size, _
"ulong", SEE_MASK_INVOKEIDLIST, _
"ptr", 0, _
"ptr", verb.Ptr, _
"ptr", file.Ptr, _
"ptr", parm.Ptr, _
"ptr", 0, _
"int", 1)
DllCall("shell32\ShellExecuteExW", "ptr", buff.Ptr)
Free(buff, verb, file, parm)
EndFunc |
Orion9 wrote: | Ну и с новыми функциями сам Гислер велел: |
В подразделе "Конфигурация TC" справочных примеров Flasher добавил пример на эту тему, гляньте, может пригодится. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 658
|
(Separately) Posted: Tue Feb 11, 2025 13:54 Post subject: |
|
|
Утро, кофе, и нешвейцарский шоколад:
 Hidden text Code: | Global DirSounds = %COMMANDER_PATH% & "\Ini\Sounds\"
RunThread ThreadSounds
Func ThreadSounds
Local debg = 1, key, val
Local ini = DirSounds & "Sounds.ini", out, i
If Not FileExist(ini) Then
MsgBox("Не найден " & ini)
Return
Endif
ProcessExecGetOutput /OEM out %COMSPEC% "/c dir /s /b *.wav" %DirSounds%
Local aWav = List()
aWav.Text = out
Local aNames = List("WincmdConnected","WincmdCopyComplete","WincmdDeleteComplete","WincmdPackComplete", _
"WincmdSearchComplete","WincmdTransferComplete","WincmdUnpackComplete")
While 1
For i = 0 To aNames.Count - 1
val = aWav[Random(0, aWav.Count-1, 1)]
key = "HKCU\AppEvents\Schemes\Apps\Wincmd\" & aNames[i] & "\.current"
RegWrite(key, "", "REG_SZ", val)
If debg Then
OutputDebugString("Autorun: key = " & key)
OutputDebugString("Autorun: val = " & val)
EndIf
Next
Sleep(1000)
Wend
Free(aNames, aWav)
EndFunc
|
Вот теперь ближе к тому, как оно должно быть, и это ещё не предел. Чтобы выжать максимум, список нужно дополнительно фильтровать и предварительно назначить на каждую операцию свой подкаталог с рамдомными файлами. Секция в ini может выглядеть так:
Code: | [Random]
Enable=1
Interval=10000
Debug=1
...
WincmdCopyComplete=Chewbacca
WincmdDeleteComplete=Операция Ы
...
|
Когда услышал звуки Чубаки чуть под стол не закатился. Однозначно рекомендую.
Loopback wrote: | Есть две очевидные проблемы: |
Теперь всё работает Для таких дел, разумеется, совсем другой объем знаний требуется. Было бы хорошо пару статеек почитать для начала: найдутся хорошие материалы?
Loopback wrote: | В подразделе "Конфигурация TC" справочных примеров Flasher добавил пример на эту тему, гляньте, может пригодится. |
Пригодится-то он пригодится, но сам пример не до конца рабочий. Ранее я уже писал, чем обусловлен вызов окна ассоциаций, вот и автор TCASwitcher тоже был вынужден откатится к тому же и всё по той же причине:
 Hidden text TCASwitcher - программа для переключения внутренних файловых ассоциаций Total Commander >=10.50 с возможностью задать наборы программ для открытия файлов в зависимости от их расширения
История изменений:
1.1.7
Исправлено переключение ассоциаций, когда при запуске Total Commander была включена "красная" секция (без ассоциаций). Правда, для этого пришлось вернуть одно из двух мелькающих окон, которые были убраны в версии 1.1.5
Я был бы рад отказаться от вызова окна, но пока Ghisler не исправит этот косяк, видимо, не получится. Однако если у вас есть какие-то предложения, буду рад услышать!
AkulaBig wrote: | но потом увидел, что вы еще один процесс запускает. Я так понял у вас эта функция для тестирования. |
Нет, функция больше не для тестирования, даже успел имя переменной окружения поменять с %ICON_TEST% на %ICON_ASSOC% А по поводу окна написал выше (если вы имеете в виду строку RunThread AssocWinSynс).
AkulaBig
Кстати, забыл написать. Последнюю сборку ещё не скачивал, но в той, что у меня есть, не вижу хайлайтера от yozhic в AkelPad-е. Вы им не пользуютесь? Имхо, многое теряеете. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 203
|
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 658
|
(Separately) Posted: Tue Feb 11, 2025 19:37 Post subject: |
|
|
Чтобы не откладывать в дальний ящик:
 Sounds.ini Code: | [Random]
Enable=1
Interval=5000
Debug=1
WincmdConnected=*
WincmdCopyComplete=Alisa1
WincmdDeleteComplete=Chewbacca
WincmdPackComplete=Операция Ы
WincmdSearchComplete=Random\Search
WincmdTransferComplete=Archer
WincmdUnpackComplete=**
[EventLabels]
Wincmd=Total Commander
WincmdConnected=FTP-соединение установлено
WincmdCopyComplete=Копирование/перемещение завершено
WincmdDeleteComplete=Удаление завершено
WincmdPackComplete=Упаковка завершена
WincmdSearchComplete=Поиск завершён
WincmdTransferComplete=Передача завершена
WincmdUnpackComplete=Распаковка завершена
[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
|
 .aucfg Code: | RunThread ThreadSoundsAdvanced
Func ThreadSoundsAdvanced()
Local rand = 1, debg = 1, intv, key, val
Local ini = DirSounds & "Sounds.ini", out, i
If Not FileExist(ini) Then
MsgBox("Не найден " & ini)
Return
Endif
IniRead rand %ini% "Random" "Enable" 0
IniRead intv %ini% "Random" "Interval" 3000
IniRead debg %ini% "Random" "Debug" 0
If Not rand Then Return
If Not IsInt(intv) Or intv < 1000 Then intv = 1000
ProcessExecGetOutput /OEM out %COMSPEC% "/c dir /s /b *.wav" %DirSounds%
Local aWav = List()
aWav.Text = out
If aWav.Count = 0 Or Not StrPos(aWav[0], ".wav") Then
MsgBox("Не найдены звуковые файлы *.wav в каталоге " & DirSounds)
Return
Endif
Local aNames = List("WincmdConnected","WincmdCopyComplete","WincmdDeleteComplete","WincmdPackComplete", _
"WincmdSearchComplete","WincmdTransferComplete","WincmdUnpackComplete")
Local aVal = List(), aPos = List(), aEnd = List()
For i = 0 To aNames.Count-1
key = aNames[i]
IniRead val %ini% "Random" %"%key%" "*"
aVal.Add(val)
If val = "*" Then
aPos.Add(-1)
aEnd.Add(-1)
ElseIf val = "**" Then
aPos.Add(0)
aEnd.Add(aWav.Count-1)
Else
Local dir = "\" & val & "\", found = false
For j = 0 To aWav.Count-1
If StrPos(aWav[j], dir) Then
found = true
Break
EndIf
Next
If Not found Then j = -1
pos = j
aPos.Add(pos)
If pos > -1 Then
For j = pos To aWav.Count-1
If Not StrPos(aWav[j], dir) Then Break
Next
If j < aWav.Count-1 Then j = j - 1
aEnd.Add(j)
Else
aEnd.Add(-1)
EndIf
EndIf
Next
If debg Then
OutputDebugString("Autorun: aWav = " & aWav.Text)
OutputDebugString("Autorun: aVal = " & aVal.Text)
OutputDebugString("Autorun: aPos = " & aPos.Text)
OutputDebugString("Autorun: aEnd = " & aEnd.Text)
EndIf
While 1
For i = 0 To aNames.Count - 1
If aPos[i] = -1 Then Continue
val = aWav[Random(aPos[i], aEnd[i], 1)]
key = "HKCU\AppEvents\Schemes\Apps\Wincmd\" & aNames[i] & "\.current"
RegWrite(key, "", "REG_SZ", val)
If debg Then
OutputDebugString("Autorun: key = " & key)
OutputDebugString("Autorun: val = " & val)
EndIf
Next
Sleep(intv)
Wend
Free(aNames, aWav, aVal, aPos, aEnd)
EndFunc |
На каждое событие можно указать отдельный каталог с wav-файлами. Файлы из этого каталога будут проигрываться в случайном порядке только для данного события. Одиночная звёздочка - игнорировать событие. Двойная звёздочка - проигрывать все (*.wav ) файлы для данного события из корневого каталога, включая подкаталоги.
По задумке, нужно создать отдельный каталог типа "Random" (чтобы не трогать существующие каталоги звуковых схем), который будет содержать подкаталоги с именами Copy, Delete, Pack, Search и т.д. В этих подкаталогах можно собирать любые wav-файлы, которые нравятся и не надоедают, и далее использовать для озвучки нужных событий.
Поскольку готовой коллекции wav-файлов у меня пока нет, за основу были взяты файлы из сборки AkulaBig + Чубака (первая версия Copilot, которая не умела говорить, но всё понимала ), но можно использовать любые wav-файлы, даже не регистрируя звуковые схемы. Первый простой алгоритм постом выше для этого подойдет. Второй алгоритм уже завязан на ini-файл и его опции. Серьёзных проверок нет: если файлы отсутствуют, они просто не будут проигрываться или меняться в случайном порядке.
AkulaBig wrote: | У меня вроде нет проблем при запуске с отключенными ассоциациями. |
Повезло. А у меня не работает, в том плане, что значки на панелях не меняются, если при старте ТС внутренние ассоциации были выключены.
AkulaBig wrote: | Еще-бы понять, про что вы. |
Про эту подсветку к файлам Autorun. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 203
|
(Separately) Posted: Tue Feb 11, 2025 21:36 Post subject: |
|
|
Orion9 wrote: | значки на панелях не меняются, если при старте ТС внутренние ассоциации были выключены |
Теперь понял. Да, у меня так-же. TCASwitcher у меня простоял совсем немного времени и я с ним не разбирался. Поэтому не понял вашего намека.
Orion9 wrote: | RunThread AssocWinSynс |
Я имею ввиду, что второй поток это слишком. Буду пытаться запихать его в общий поток.
Добавлено спустя 2 часа 36 минут:
Orion9
У меня ваш скрипт ассоциаций срабатывает только после команды cm_ReloadFileIcons. Я имею ввиду при отключенных ассоциациях. После перезагрузки. Причем не важно, используешь внешний скрипт или новый алгоритм с скриптом Autorun. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 203
|
(Separately) Posted: Wed Feb 12, 2025 07:42 Post subject: |
|
|
Ну вот так все отлично работает. Теперь надо разобраться, как ShellExec "%COMMANDER_PATH%\Utilities\TCFS2\TCFS2.exe" '/ef "msg(147,0,1302100) msg(1045,0,0)' переписать на Autorun и можно пользоваться.
Code: |
# Переключение ассоциаций файлов
# Switching file associations
RegisterCommand 61000 "SwitchAssocState"
Global AssocIniState
# первое выполнение при запуске
# first execution when launching
AssocIniState = AssocState()
Func AssocState()
Local flt
IniRead /R flt %COMMANDER_INI% "Associations" "Filter1" ""
# если в секции что-то есть, значит она включена
# if there is something in section, then it is turned on
If flt <> "" Then
SetEnv AssocIco "%COMMANDER_PATH%\Images\Others\ICO\Light\LightOn.ico"
Return true
Else
SetEnv AssocIco "%COMMANDER_PATH%\Images\Others\ICO\Light\LightOff.ico"
Return false
Endif
EndFunc
Func SwitchAssocState(lParam)
Local ini_Assoc = %COMMANDER_PATH% & "\Ini\Associations.ini"
Local Sections = List()
Sections.Text = IniReadSectionNames(%ini_Assoc%)
If Sections.IndexOf('Associations') > -1 Then
IniRenameSection(%ini_Assoc%, 'Associations', '-Associations')
ElseIf Sections.IndexOf('-Associations') > -1 Then
IniRenameSection(%ini_Assoc%, '-Associations', 'Associations')
EndIf
Free(Sections)
AssocState()
CommandExec cm_ReloadBarIcons
# Обновляем иконки ассоциированных файлов
# Update icons of associated files
ShellExec "%COMMANDER_PATH%\Utilities\TCFS2\TCFS2.exe" '/ef "msg(147,0,1302100) msg(1045,0,0)'
EndFunc
|
Добавлено спустя 1 час 48 минут:
Ну все, пишем вместо ShellExec "%COMMANDER_PATH%\Utilities\TCFS2\TCFS2.exe" '/ef "msg(147,0,1302100) msg(1045,0,0)':
Code: |
CommandExec cm_ReloadBarIcons
# Обновление внутренних ассоциаций
# Updating internal associations
SendMessage(AUTORUN_TCHANDLE, 1045,0,0)
|
и все отлично работает. Обратите внимание, что CommandExec cm_ReloadBarIcons после AssocState() не лишний. Иначе будет открываться окно настройки ассоциаций. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 658
|
(Separately) Posted: Wed Feb 12, 2025 12:48 Post subject: |
|
|
AkulaBig
Ну что тут сказать? Теперь я точно знаю, как я буду дальше жить:
Спасибо за наводку. Переделал под себя:
 Hidden text Code: | # внутренние ассоциации
Global AssocIniState = AssocState()
Func AssocState()
Local flt
IniRead /R flt %COMMANDER_INI% "Associations" "Filter1" ""
# секция включена
If flt <> "" Then
SetEnv ICON_ASSOC "%COMMANDER_PATH%\Icons\Clsw\2.ico"
Return true
Endif
# секция выключена
SetEnv ICON_ASSOC "%COMMANDER_PATH%\Icons\Clsw\6.ico"
Return false
EndFunc
Func SwitchAssocState(lParam)
Local ini = %COMMANDER_PATH% & "\Ini\Associations.ini"
Local script = %COMMANDER_PATH% & "\Scripts\Vbs\ChangeAssoc.vbs", sect, vbs = false
If AssocState() Then
# отключение секции
sect = '[-Associations]'
If vbs = false Then IniRenameSection(ini, "Associations", "-Associations")
Else
# включение секции
sect = '[+Associations]'
If vbs = false Then IniRenameSection(ini, "-Associations", "Associations")
Endif
If vbs = true Then ShellExec /SW_HIDE /WAIT:3000 "%script%" "%sect%"
AssocState()
SendMessage(AUTORUN_TCHANDLE, 11, 0, 0)
SendMessage(AUTORUN_TCHANDLE, 1045, 0, 0)
SendCommand cm_ReloadBarIcons
Sleep(10)
SendMessage(AUTORUN_TCHANDLE, 11, 1, 0)
WinRedraw(1)
EndFunc
|
Vbs-скрипт оставлен как альтернативный вариант, поскольку ограничение в 32767 символа у IniRenameSection не такое уж и недостижимое. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 203
|
(Separately) Posted: Wed Feb 12, 2025 13:22 Post subject: |
|
|
Orion9 wrote: | ограничение в 32767 символа у IniRenameSection не такое уж и недостижимое. |
А применение List() не решит проблему? Я пытался сделать через List.Text, но ничего не получилось, так как при командной записи Autorun ругается, что ему нужна переменная нормального формата. А без командной записи никак.
Orion9 wrote: | Vbs-скрипт оставлен как альтернативный вариант |
А я просто сборку с внешними скриптами забекапил. Потому что второй раз разобраться с кавычками не реально
Orion9 wrote: | SendMessage(AUTORUN_TCHANDLE, 1045, 0, 0) |
А вы не подскажите, что это за команда? Пробовал ее заменить на cm_InternalAssociate. Не прокатывает. Но если cm_ReloadBarIcons использовать только один раз, окно ассоциаций появляется.
В скриптах для Акельки хорошее правило применяется. Рядом с цифирками обозначение пишут. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 658
|
(Separately) Posted: Wed Feb 12, 2025 14:02 Post subject: |
|
|
AkulaBig wrote: | но ничего не получилось |
А я ничего не понял ) Ну, может быть Loopback чего подскажет.
AkulaBig wrote: | А вы не подскажите, что это за команда? Пробовал ее заменить на cm_InternalAssociate. Не прокатывает. |
Я так глубоко в систему не лезу. На такие вопросы могут ответить разве что системные разработчики, типа Loopback, либо те, кто давно и плотно сидит в теме автоматизации, типа Flasher. Как я уже говорил, присутствие второго на форуме не помешало бы, но увы - пять лет назад не поделили что-то с админом, а простой народ теперь страдает. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 203
|
(Separately) Posted: Wed Feb 12, 2025 14:14 Post subject: |
|
|
Orion9 wrote: | А я ничего не понял |
Вот мой скрипт переключения секций:
Code: |
Func SwitchIniSect(sIni, sSectSource, sSectTarget)
IniReadSection SwitchSect %"%sIni%" %"%sSectSource%"
IniWriteSection %"%sIni%" %"%sSectTarget%" %"%SwitchSect%"
EndFunc
|
А хотелось-бы:
Code: |
Func SwitchIniSect(sIni, sSectSource, sSectTarget)
Local SwitchSect = List()
IniReadSection SwitchSect.Text %"%sIni%" %"%sSectSource%"
IniWriteSection %"%sIni%" %"%sSectTarget%" %"%SwitchSect.Text%"
EndFunc
|
Но не работает так. Мне кажется, что при использовании массива длина секции намного увеличивается. Хотя может я и не прав.
Loopback
Можете прокомментировать мой вопрос? |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2684
|
(Separately) Posted: Wed Feb 12, 2025 14:27 Post subject: |
|
|
AkulaBig wrote: | А вы не подскажите, что это за команда? |
Первоначально на форуме здесь упоминалась... |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 203
|
(Separately) Posted: Wed Feb 12, 2025 15:13 Post subject: |
|
|
sa wrote: | Первоначально на форуме здесь упоминалась... |
Оттуда я ее и взял. Поиском нашел. Хотелось-бы узнать, что это за команда. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|