Orion9

|
Posted: Wed Jan 15, 2025 00:20 Post subject: |
|
|
AkulaBig wrote: | Я только что перевод DirMenu закончил. Следующий этап колонки пользователя. Может пригодиться. |
В смысле? Если Гислер сделает такую переменную? Конечно пригодится!
А еще бы очень пригодилось, если бы он сделал раскрытие переменных окружения в сплывающих подсказках. Тогда не пришлось бы прыгать с бубном и определять индекс нужной кнопки для дальнейших манипуляций. Хотя всех проблем бы это не решило, но помогло бы во многом.
А пока приходится выходить из положения вот такими функциями
 Hidden text Code: | # поиск индекса кнопки на панели
# примеры вызова:
#{
BarsPath = %COMMANDER_PATH% & "\Bars\"
idx = FindButtonIdx(BarsPath & "Main.bar", "cmd", "61007")
idx = FindButtonIdx(BarsPath & "Main.bar", "menu", "Auto_bars")
idx = FindButtonIdx(BarsPath & "Main.bar", "button", "WCMICONS.dll,72")
MsgBox(FindButtonIdx(BarsPath & "Main.bar", "param", '/ef "tcm(60011,1)"'))
#}
Func FindButtonIdx(ButtonBar, ButtonKey, ButtonVal)
Local txt, pos, len, sub, idx = 0
If Not FileExist(ButtonBar) Then
ShowDarkHint("Панель не найдена " & ButtonBar, 0)
Return 0
EndIf
len = StrLen(ButtonKey)
ProcessExecGetOutput txt %COMSPEC% '/c type "%ButtonBar%"'
pos = StrPos(txt, "=" & ButtonVal)
If pos = 0 Then Return 0
For i = 0 To 3
sub = StrMid(txt, pos-len-i, len)
#OutputDebugString("Autorun: " & sub)
If sub = ButtonKey Then
idx = StrMid(txt, pos-i, i)
#OutputDebugString("Autorun: idx = " & idx)
If IsInt(idx) Then Break
Endif
Next
# перепроверка индекса
If idx > 0 Then
IniRead txt %ButtonBar% "Buttonbar" %"%ButtonKey% & %idx%"
#OutputDebugString("Autorun: Key = " & txt)
If StrPos(txt, ButtonVal) > 0 Then Return idx
#OutputDebugString("Autorun: Idx = " & idx)
EndIf
Return 0
EndFunc |
|
|