Orion9

|
Posted: Fri Jan 17, 2025 00:25 Post subject: |
|
|
AkulaBig wrote: | Не переключаюсь. просто к основной панели добавляю ПП |
Шутите? )
У вас обычная панель, которая переключается с главной. Единственное отличие - она похожа на главную (основную) панель, поскольку и была создана на её основе.
Кстати, для создания такой панели необязательно было использовать TCIMG, можно было просто скопировать основную панель и переименовать ее в User.bar (например в vbs-скрипте или bat-файле), а затем вызывать её пользовательской командой и накидывать кнопок. На Autorun можно сделать такое через ShellExec:
Code: | Func CopyFile(Source, Target, Delete = true)
If Delete Then
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%Target%"""
If FileExist(Target) Then
ShowDarkHint("Ошибка удаления " & Target, 0)
Return false
Endif
EndIf
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% '/c copy /y /v "%Source%" "%Target%"'
If Not FileExist(Target) Then
ShowDarkHint("Ошибка копирования " & Target, 0)
Return false
Endif
Return true
EndFunc |
Основная функция может выглядеть так:
Code: | # Shift + F12
SetHotkeyAction /K:S /H:F12 CopyMainBar
Func CopyMainBar()
Local main = %COMMANDER_PATH% & "\Bars\Main.bar"
Local user = "D:\Temp\User.bar"
If CopyFile(main, user) Then
CommandExec("em_open_bar_path", user)
ShowDarkHint("Панель пользователя загружена")
EndIf
EndFunc
|
Разумеется, функциональная клавиша здесь только для примера, а пути к файлам необходимо указывать или передавать согласно поставленной задаче.
Кроме этого, сейчас чтобы вернуться на главную панель (т.е. осуществить обратное переключение), вам приходится выходить из ТС, что, на мой взгляд, является еще одним лишним шагом (помимо того, что панель User.bar приходится выбирать вручную в каталоге).
В самом простом варианте можно просто создать две пользовательские команды и повесить их на горячие клавиши: одна для вызова главной панели, другая для вызова User.bar. Но оставим это простым пользователям. Мы с вами в теме "Autorun", где каждый может стать Творцом и Корректором косяков Гислера Потому и делать мы будем красиво ))
Code: | # F12
SetHotkeyAction /H:F12 MainUserBar
Global BarNum = 1
Func MainUserBar()
Local bar, pinned = false
BarNum += 1
If BarNum > 2 Then BarNum = 1
If BarNum = 1 Then
CommandExec("em_open_bar", "Main.bar")
Return
Else
bar = "D:\Temp\User.bar"
If Not FileExist(bar) Then
ShowHint("Не найден: " & bar)
BarNum -= 1
Return
EndIf
EndIf
CommandExec("em_open_bar_path", bar)
If BarNum = 1 Then Return
Sleep(750)
If IsPressed(0x11) Then
pinned = true
ShowDarkHint("Панель пользователя закреплена", 750)
Return
EndIf
Sleep(3000)
If BarNum = 2 Then RunThread MainUserBar
EndFunc
|
Цикличное переключение панелей по F12. Пользовательская панель открывается только на 3 секунды, потом сворачивается и дает вернуться главной (удобно, если нужно запустить что-то из личных кнопок всего один раз; интервал можно изменить). Если сразу после открытия пользовательской панели нажать Ctrl, панель закрепится на экране до конца сессии. Если нужно вернуться на главную панель, перезапускать ТС необязательно: достаточно просто еще нажать раз F12 - и всё пойдет по кругу ))
P.S. Это был лишь пример, но вы можете серьезно развить его и адаптировать в своих целях. Можете, например, более продвинутый поиск User.bar сделать по списку, или учесть то, что функция будет запускаться на "чужом" компьютере, где пользователю нужна будет другая панель, или вообще не будет нужна никакая. Вариантов много.
Добавлено спустя 5 минут:
Code: | [em_open_bar]
cmd=OPENBAR
param=%|COMMANDER_PATH|\Bars\%A0
[em_open_bar_path]
cmd=OPENBAR
param=%A0
|
|
|