Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Autorun 
Author Message
Orion9



PostPosted: Fri Jan 17, 2025 00:25    Post subject: Reply with quote

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", где каждый может стать Творцом и Корректором косяков Гислера Mr. Green Потому и делать мы будем красиво ))
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
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group