Total Commander Knowledge Base

Есть вопрос?

Поищите ответ в самой большой русскоязычной базе знаний по Total Commander!

Перенос кнопки с тулбара в меню

Q: Все вы прекрасно знаете как быстро и мгновенно можно создать кнопку в иконбаре, и как долго и мучительно пункт в меню "запуск". По этому случаю у меня просьба к скриптописателям - напишите скрипт, который копирует кнопку и вставляет её в меню "Запуск".
A: vbs-скрипт, использующий Script Helper:

'========================================================
' Копирование кнопки из панели TC в меню "Запуск"
' Предварительно на кнопке надо выполнить "Копировать"
'========================================================
Option Explicit
Dim TCS, IniFile, i, ClipB, Data, Name, Cmd, Params, ExecPath, Iconic, MenuLimit, FindMenu
Set TCS = CreateObject("TCScript.Helper")
ClipB   = TCS.GetTextFromClip
Data    = Split(TCS.GetTextFromClip(), vbCrLf)
' Если первая строка соответствует синтаксису кнопки
if StrComp(Data(0), "TOTALCMD#BAR#DATA", 1) = 0 then
  ' Получаем пути ини-файлов TC
  TCS.GetIniFiles
  IniFile   = TCS.MainINI
  MenuLimit = 200
  FindMenu  = 0
  ' Ищем следующий номер для пункта меню
  For i = 1 To MenuLimit
    If Len(TCS.INIRead(IniFile, "user", "menu" & i, "")) = 0 Then
      FindMenu = 1
      Exit For
    End If
  Next
  ' Добавляем меню, только если есть номера до MenuLimit включительно
  If FindMenu = 1 Then
    Cmd      = Data(1)
    Params   = Data(2)
    Name     = Data(4)
    ExecPath = Data(5)
    Iconic   = Data(6)
    If Cmd <> "" Then
      If Name <> "" Then
        TCS.INIWrite IniFile, "user", "menu" & i, Name
      Else
        TCS.INIWrite IniFile, "user", "menu" & i, Cmd
      End If
      TCS.INIWrite IniFile, "user", "cmd"    & i, Cmd
      TCS.INIWrite IniFile, "user", "param"  & i, Params
      TCS.INIWrite IniFile, "user", "path"   & i, ExecPath
      TCS.INIWrite IniFile, "user", "iconic" & i, Iconic
      ' Перечитаем меню
      TCS.SendCommand "cm_ChangeStartMenu"
      TCS.SendKeystroke "{Enter}"
    End If
  End If
End If
Set TCS = Nothing
Wscript.Quit

Batya