Windows Script Host

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Fktrc
Это ты к чему? Или ссылку перепутал?
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Batya писал(а):Fktrc
Это ты к чему? Или ссылку перепутал?
Походу, он поисковик перепутал :P
Yandex дает ссылку только на саму эту фразу и ВСЕ :shock: . Вот тебе и поисковик. Google Forever :!:
Fktrc
Сообщения: 13
Зарегистрирован: Ср янв 26, 2005 08:12
Откуда: Кемерово

Сообщение Fktrc »

Ничего не попутал, просто забыл слово "лопата" в конец поста приписать :)
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение сделал, чтобы не постить скрипт в чужую тему

Сообщение Volniy »

Пишем VBS-файл вот с таким содержимым

Код: Выделить всё

'=========================[ Start of file ]===================
'  File:         Separators.vbs 
'  Description:  Производит переключение между 3-мя любыми
'                позициями разделителя панелей ТС
'  Installation: Создайте новую команду в меню Запуск TC 
'                Команда: "диск:\путь\к\файлу\Separators.vbs" 
'                Назначьте на нее горячую клавишу
'  Copyright:    (c) 2006, Volniy 

Option Explicit 
Dim TCS
Const Pos1=85, Pos2=15, Pos3=50

Set TCS = CreateObject("TCScript.Helper")

TCS.LockTC True 

If TCS.Separator < 0 Or TCS.Separator > 100 Then
   TCS.SendCommand "cm_50Percent", True
End If

Select Case CInt(TCS.Separator)
Case (Pos2 - 1), Pos2, (Pos2 + 1)
   TCS.Separator = Pos3
Case (Pos3 - 1), Pos3, (Pos3 + 1)
   TCS.Separator = Pos1
Case (Pos1 - 1), Pos1, (Pos1 + 1)
   TCS.Separator = Pos2
Case Else
   TCS.Separator = Pos3
End Select

TCS.LockTC False
Set TCS = Nothing
Wscript.Quit() 
'=========================[  End of file  ]===================
ставим на него комбинацию клавиш в меню Запуск и пользуемся ею для быстрого переключения между тремя произвольными позициями разделителя панелей TC (Pos1, Pos2, Pos3) (скрипт можно легко изменить, увеличив число позиций) при наличии установленного в системе Script Helper ActiveX for Total Commander [24 кб].

Из-за взаимодействия нажатой клавиатуры и действий скрипта по перемещению разделителя иногда может понадобиться повторное нажатие (разделитель уходит в 100%). И вообще кнопка на панели будет работать надежнее.
Uy
Сообщения: 4
Зарегистрирован: Вс сен 17, 2006 20:16

Сообщение Uy »

А исходники хелпера открыты?
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Uy писал(а):А исходники хелпера открыты?
Пока нет :oops:
Uy
Сообщения: 4
Зарегистрирован: Вс сен 17, 2006 20:16

Сообщение Uy »

А можно узнать хотя бы как работает функция SendCommand?
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Код: Выделить всё

SendMessage(TCMainHwnd, 1075, cmdnumber,  0)
Uy
Сообщения: 4
Зарегистрирован: Вс сен 17, 2006 20:16

Сообщение Uy »

Огромное спасибо! )) Жду с нетерпением новых версий и, конечно, раскрытие исходников. Удачи!
Аватара пользователя
Parcan
Сообщения: 399
Зарегистрирован: Ср дек 15, 2004 16:39
Откуда: Russian

Сообщение Parcan »

Вопрос может не совсем по теме:
заметил что после работы чистильщиков реестра в скриптах перестает работать конструкция "Set Query = New RegExp" типа такого объекта не существует.
сейчас реестр вообще не чищу, но если не изменяет память пользовался следующими: блин память изменяет, помоему WWW-расшифровку не помню, из NeoUtilities, RegCleaner который потом стал каким то там jtools или что то созвучное возможно еще чемто, вообще за свою жизнь пользовался 5ю чистильщиками реестра и после всех был один и тот же результат.
это как нибудь можно поправить? а то у меня в 1С один скрип из за этого не работает, который ну очень облегчает жизнь при конфигурировании.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Выполни в командной строке

Код: Выделить всё

regsvr32 vbscript.dll
находясь в системной папке винды.
Аватара пользователя
Parcan
Сообщения: 399
Зарегистрирован: Ср дек 15, 2004 16:39
Откуда: Russian

Сообщение Parcan »

спасибо дома попробую, но мне наверное потребуется regsvr32 jscript.dll
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Parcan писал(а):но мне наверное потребуется regsvr32 jscript.dll
Если у тебя скрипты написаны на JScript, то - да. В любом случае лучше при таких проблемах полностью переустановить WSH. Переустановка не создает никаких дополнительных проблем.
Uy
Сообщения: 4
Зарегистрирован: Вс сен 17, 2006 20:16

Сообщение Uy »

Хотелось бы узнать, появится ли возможность установки хуков на события в ТС? Или это невозможно выполнить посредством СОМ-сервера?
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Uy писал(а):Хотелось бы узнать, появится ли возможность установки хуков на события в ТС? Или это невозможно выполнить посредством СОМ-сервера?
Даже не знаю, что ответить :? . Трудно уложить рядом на одну полку хуки и COM-сервер, написанный на VB. Да и к чему это все нужно?
Ответить