WSH + TCScript = мощное средство автоматизации TC!

Форум о самом популярном файловом менеджере Total Commander

Сообщение SAM » Вт май 25, 2004 12:28 pm

Дядя Билли снабдил всех нас изумительным средством для создания мощных и эффективных скриптов.
<span style='color:red'>Windows Script Host</span> (WSH) - имя этому чуду. И если ваши шаловливые ручки не снесли "Сервер сценариев Windows" (именно так по-русски называется это средство, присутствующее в ЛЮБОЙ версии виндов (только в Win95 его нет) то ваш скрипт, созданный на скорую руку прямо в Блокноте обязательно запустится! Никаких дополнительных программм вам для этого ставить не придется!
Попробуйте, например, <a href='http://mozers.da.ru/tc/wsh/sample.zip' target='_blank'>вот это</a> - вам понравится!
Если вы немножко знаете Visual Basic или Java Script, то написание таких скриптов не составит особого труда. Просто и понятно об этом написано <a href='http://www.networkdoc.ru/insop/whs.html' target='_blank'>вот тут</a>.
Применительно к ТС данные скрипты можно использовать для автоматизации тех функций, которые Гислер еще не успел (или не хочет) автоматизировать.
Благо наконец-то появился СОМ-компонент <span style='color:blue'>TCSript</span> с помощью которого можно получить доступ к свойствам и методам Total Commander как из других программ, так и из наших скриптов.

<a href='http://mozers.da.ru/tc/wsh/beta3bis_tcscript.zip' target='_blank'>TCScript</a> версия beta3bis
COM-компонент, с помощью которого вы получите возможность управлять активной копией Total Commander из своих программ и макросов, написанных на любом объектно-ориентированном языке. Наиболее простое и доступное решение - использовать для этой цели WSH скрипты.

Для затравки выкладываю пару своих скриптов (как с использованием TCSript, так и без него).

<a href='http://mozers.da.ru/tc/wsh/TC_Restart.zip' target='_blank'>Total Commander Restarter</a> (требуется TCScript) v.1.2
Утила для перезапуска активной копии ТС. Пригодится для любителей устанавливать плагины. Сравните с аналогичными утилитами (их на wincmd.ru аж 4 штуки) и выберите лучшее.

<a href='http://mozers.da.ru/tc/wsh/TCDirMemuCreator.zip' target='_blank'>Total Commander DirMenu Creator</a> v.1.1 Beta
Добавляет в меню "Быстрых каталогов" пункты вызова различных системных папок "MyDocuments", "StartMemu", "Desktop", и др. (список можно изменить). После чего добраться до них можно будет одним кликом. Удобно. (Только однопрофильные пользователи Win98/Me будут разочарованы. У них многие каталоги отсутствют как класс)

Не буду утверждать что представленные скрипты идеальны и не содержат ошибок. Это - лишь примеры для изучения и дальнейшей доработки.
Очень надеюсь, что пытливые читатели смогут создать более полезные и интересные вещи и эта тема станет самой активной на этом форуме!
Последний раз редактировалось SAM Чт май 27, 2004 9:19 am, всего редактировалось 1 раз.
SAM
Старшина
 
Сообщений: 45
Зарегистрирован: Пн май 24, 2004 5:33 am
Пункты репутации: 0

Сообщение StayAtHome » Вт май 25, 2004 9:50 pm

Браво! Наконец-то кто-то занялся WSH+TC!
Неплохие идеи! Но, ссялка на TCSript ведет на <a href='http://mozers.da.ru/tc/wsh/TC_Restart.zip' target='_blank'>http://mozers.da.ru/tc/wsh/TC_Restart.zip</a> :-( Не он.
Кто автор этого СОМ-компонента? Я пользуюсь утилиткой TCSCript от Aezay Productions -- это то, что ты имеешь ввиду?
<span style='color:gray'>Жизнь -- это песня!</span>
<span style='font-family:Courier'>Life.exe /?</span>
StayAtHome
Подполковник
 
Сообщений: 710
Зарегистрирован: Вс фев 09, 2003 11:30 pm
Откуда: Украина
Пункты репутации: 0

Сообщение SAM » Ср май 26, 2004 12:31 pm

2StayAtHome
Автор TCScript называет себя Volniy. Выставил я его произведение на ваш суд против его воли. (Просто считаю что прятать, пусть еще сырую, но ОЧЕНЬ НУЖНУЮ вещь - преступление перед человечеством :)

TCSCript от Aezay - это совсе не то. (У Aezay свой командный интерпритатор, свой язык, неприменимый больше нигде).
WSH - на порядок более мощное оружие нежели все самодельные приблудки типа PowerPro.
SAM
Старшина
 
Сообщений: 45
Зарегистрирован: Пн май 24, 2004 5:33 am
Пункты репутации: 0

Сообщение StayAtHome » Ср май 26, 2004 9:22 pm

2SAM
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->WSH - на порядок более мощное оружие нежели все самодельные приблудки типа PowerPro.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Согласен. Сам пользую WSH, правда больше на работе чам вдома. Где взять TCScript? -- по вышеприведенным ссылкам -- не то. :-(
<span style='color:gray'>Жизнь -- это песня!</span>
<span style='font-family:Courier'>Life.exe /?</span>
StayAtHome
Подполковник
 
Сообщений: 710
Зарегистрирован: Вс фев 09, 2003 11:30 pm
Откуда: Украина
Пункты репутации: 0

Сообщение SAM » Чт май 27, 2004 4:59 am

2StayAtHome
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Где взять TCScript? -- по вышеприведенным ссылкам -- не то. :-(<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Посыпаю голову пеплом :( ТАК лажануться :(((
Правильная ссылка:

<a href='http://mozers.da.ru/tc/wsh/beta3bis_tcscript.zip' target='_blank'>TCScript</a> версия beta3bis
COM-компонент, с помощью которого вы получите возможность управлять активной копией Total Commander из своих программ и макросов, написанных на любом объектно-ориентированном языке. Наиболее простое и доступное решение - использовать для этой цели WSH скрипты.
SAM
Старшина
 
Сообщений: 45
Зарегистрирован: Пн май 24, 2004 5:33 am
Пункты репутации: 0

Сообщение StayAtHome » Чт май 27, 2004 9:45 pm

Стянул, спасибо. Неплохо. Наконец-то можно писать скрипты на нормальном языке. Я когда-то писал заметку в один из компьютерных журналов о создании диалогов в WSH. Ее так и не опубликовали. :-) Может здесь она кому пригодится.
Добавлено:
<span style='font-size:12pt;line-height:100%'><div align="center">Использование web-страниц для создания диалогов в Windows Scripting Host</div></span>
Общеизвестно, что операционные системы семейства Windows обладают таким довольно мощным средством автоматизации как сервер сценариев – Windows Scripting Host. Создав текстовый файл-сценарий на языке Visual Basic Script или Java Script, пользователь может запускать на исполнение такой файл двойным щелчком мыши как обычное приложение. Возможности WSH можно существенно расширить, используя Internet Explorer. Создав web-страницу с формой, наполненной нужными элементами управления, можно использовать ее как диалоговое окно, которое будет вызываться из WSH-скрипта. Рассмотрим такой "симбиоз" на примере языка VBScript.

Создадим простую HTML страничку (Листинг 1), содержащую форму с элементами управления (в нашем случае – выпадающий список Select1 и кнопка OKButton). Глобальная переменная ExitCode служит «флажком» сигнализирующим, что пользователь нажал кнопку «OK». В основном скрипте (Листинг 2) мы создаем COM-объект "InternetExplorer.Application", благодаря которому можно загрузить программу Internet Explorer и манипулировать ее окном (задать размер окна, спрятать панели инструментов, адресную строку, полосы прокрутки). Далее метод Navigate() загружает web-страницу, после чего скрипт ожидает действий пользователя, периодически проверяя значение «флажка» ExitCode. При нажатии кнопки "ОК" на web-страничке исполняется процедура OkButtonClick (см. Листинг 1), в которой глобальной переменной ExitCode присваивается значение «1». Выполнение цикла ожидания в скрипте заканчивается, окно Internet Explorer’а можно спрятать, и начать считывать состояние элементов управления на нашей форме, а именно — узнать, какой пункт выбрал пользователь из выпадающего списка Select1. Результат в виде сообщения выводится на экран.

Используя разнообразные элементы управления на web-страницах, можно создавать практически любые диалоговые окна для последующего их использования в сценариях WSH.

Листинг 1. HTML-страница, служащая диалоговым окном. (Demo.html)
Код: выделить все
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
 <title> WSH Demo </title>
 <script language="VBScript">
 <!-- Public ExitCode
      ExitCode = 0
      Sub OkButtonClick
      ExitCode = 1
      End Sub  //-->
 </script>
</head>
<body scroll = "no">
 <div align = "center">
 <form name = TestForm style = "background-color:menu; width:150;height:60;
                                padding:10;margin:-15 -15">
 <fieldset>
 <legend> Месяц: </legend>
 <select name = "Select1">
   <option value = "Январь">Январь</option>
   <option value = "Февраль">Февраль</option>
   <option value = "Март">Март</option>
 </select>
 <br> 
 </fieldset>
 <br>
 <input type = "button" name = "OkButton" value = "   OK   "
   onclick = "OkButtonClick">
 </form>
 </div>
</body>
</html>

Листинг 2. Текст VB-скрипта.
Код: выделить все
Option Explicit
Dim IEObject, Path, Month
'Определяем путь к web-странице с формой
Path = WScript.ScriptFullName
Path = Left(Path, InStrRev(Path, "\")) & "Demo.html"
'Загружаем Internet Explorer
Set IEObject = WScript.CreateObject("InternetExplorer.Application")
With IEObject
'Прячем меню, панели инструментов и строку состояния
 .MenuBar = 0
 .ToolBar = 0
 .StatusBar = 0
 .Width = 160
 .Height = 155
 .Left = 320
 .Top = 240
End With
'Открываем страничку с формой и ждем, пока она загрузится
IEObject.Navigate(Path)
Do While (IEObject.Busy)
 WScript.Sleep(200)
Loop
'Отображаем окно IE
IEObject.Visible = 1
'Ждем нажатия кнопки 'OK'
Do
 WScript.Sleep(200)
Loop Until (IEObject.Document.Script.ExitCode <> 0)
'Прячем окно IE
IEObject.Visible = 0
' Определяем выбранный пункт
Month=IEObject.Document.TestForm.Select1.Value
'Закрываем Internet Explorer
IEObject.Quit            
MsgBox "Выбран месяц " & Month

Примечание 1. При написании совета были использованы исходные тексты программы Dir2Htm Дмитрия Михеева (http://dir2htm.by.ru/).
Примечание 2. Я никогда не писал статей, поэтому не судите строго. Все замечания, пожелания, броски камнями в голову приветствуются. :-)
Последний раз редактировалось StayAtHome Чт май 27, 2004 11:17 pm, всего редактировалось 1 раз.
<span style='color:gray'>Жизнь -- это песня!</span>
<span style='font-family:Courier'>Life.exe /?</span>
StayAtHome
Подполковник
 
Сообщений: 710
Зарегистрирован: Вс фев 09, 2003 11:30 pm
Откуда: Украина
Пункты репутации: 0

Сообщение Magister » Пт май 28, 2004 3:32 am

Да, WSH - удобная штука. Как-то раз понадобилось сделать прогу для бэкапирования. Сначала хотел на билдере зафигачить. А потом случайно почитал про WSH и в результате файлик получился в тыщи раз меньше. Да и сам код оказался проще. Буквально строчек 10 понадобилось.
<!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><!--coloro:red--><span style="color:red"><!--/coloro-->все беды - от недостатка информации<!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc-->
Magister
Генерал-майор
 
Сообщений: 2501
Зарегистрирован: Вт авг 06, 2002 4:22 am
Пункты репутации: 0

Сообщение SAM » Пт май 28, 2004 10:40 am

2StayAtHome
Пару дней назад я бы тебя расцеловал :) (Столько сил и времени было отдано безуспешным эксперементам по созданию WSH форм...)
Попытку создания таких форм предпринял и автор TCScript (если поковырять его компонент поглубже, то там найдутся и недокументированные параметры ;)
Почему, "пару дней назад" ?
Просто вчера скачал замечательную книжку Гюнтера Борна <a href='http://faland-s.narod.ru/faq/WinScriptHost2.0.chm' target='_blank'>"Windows Script Host 2.0 Developer's Guide"</a> - там ВСЕ есть. Очень рекомендую :)

Изучая матчасть, не забываем о цели пребывания ЗДЕСЬ!
В планах:
- переписать DirMenuCreator с тем чтобы он предварительно выдавал список добавляемых каталогов с чекбоксами. Тогда пользователь смог бы отметить какие конкретно каталоги из списка добавлять в меню.
- написать скрипт для быстрой установки плагинов в ТС
- написать скрипт для обычного сравнения 2-х панелей ТС по критериям (дата, размер, атрибуты, содержимое - чекбоксы).
Ждать, когда все это будет у Гислера можно вечность...

Был бы очень рад, если бы кто то написал лучше меня. (И побыстрее, т.к. мои сроки выполнения уходят в бесконечность...)
SAM
Старшина
 
Сообщений: 45
Зарегистрирован: Пн май 24, 2004 5:33 am
Пункты репутации: 0

Сообщение StayAtHome » Пт май 28, 2004 11:15 pm

2SAM
Потрясная дока! Спасибо за линк! Жаль, что на аглицком, но, все-же, -- это лучшее, что я читал по WSH. Кстати, ты в чем пишешь скрипты (в каком редакторе)?
<span style='color:gray'>Жизнь -- это песня!</span>
<span style='font-family:Courier'>Life.exe /?</span>
StayAtHome
Подполковник
 
Сообщений: 710
Зарегистрирован: Вс фев 09, 2003 11:30 pm
Откуда: Украина
Пункты репутации: 0

Сообщение Evgenych » Сб май 29, 2004 12:56 pm

<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->
... если поковырять его компонент поглубже, то там найдутся и недокументированные параметры ;)<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
А как это делать, ковырять? :)
Evgenych
Прапор
 
Сообщений: 66
Зарегистрирован: Пт июл 11, 2003 3:38 pm
Пункты репутации: 0

Сообщение SAM » Пн май 31, 2004 9:13 am

Скрипты я пишу (во как сказал! как будто я их сотни понаделал ;) в чем попало (практически у каждого текстового редактора есть и подсветка синтаксиса, и возможность запуска скрипта прямо из редактора) - EditPlus, EmEditor,... Иногда удобнее писать в редакторе VBA от Excel или Word (форматирует как положено, синтаксис проверяет, подскажет если что...). Но все таки, если дело серьезное, воспользоваться специализированными редакторами. Вот, пожалуй, один из лучших - <a href='http://www.vbsedit.com/' target='_blank'>VbsEdit / JsEdit 2.0</a> (а судя по доступности заветных цифир - один из самых популярных ;)

Ковырять можно по разному... Частенько я пользую <a href='http://www.oberonplace.com/products/tlbtools/' target='_blank'>вот эту</a> тулзу. Натравляешь ее на какую нибудь DLL-ку (EXE, OCX), а она выдает все доступные свойства и методы объекта.
SAM
Старшина
 
Сообщений: 45
Зарегистрирован: Пн май 24, 2004 5:33 am
Пункты репутации: 0

Сообщение Ergo » Пн май 31, 2004 3:20 pm

У WSH на сколько я понимаю есть одно очень серьезное ограничение. Он не работает с буфером обмена. Или просто нужен дополнительный COM-компонент?
<!--coloro:purple--><span style="color:purple"><!--/coloro--><!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo-->I can't stop using<a href="http://wincmd.ru" target="_blank">Total Commander</a> <!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc-->
Ergo
Полковник
 
Сообщений: 1357
Зарегистрирован: Чт мар 28, 2002 12:42 pm
Откуда: Brest Fortress
Пункты репутации: 0

Сообщение SAM » Вт июн 01, 2004 6:18 am

2Ergo
Все абсолютно верно :(
Только в нашем случае (Тотал - автоматизации) - без TCScript не обойтись. А в TCScript есть функции работы с буфером обмена :)
SAM
Старшина
 
Сообщений: 45
Зарегистрирован: Пн май 24, 2004 5:33 am
Пункты репутации: 0

Сообщение gera_serg » Вт июн 01, 2004 11:51 am

2Ergo

Легко обходится

<a href='http://www.promsoft.ru/index.php?action=topics&topic_id=20&page_id=22' target='_blank'>http://www.promsoft.ru/index.php?action=to...d=20&page_id=22</a>


Регистрируем строкой
regsvr32 ClipboardHelper.dll

И пользуемся как родным VB Clipboard:

Set C=CreateObject("ClipboardHelper.cClipboard")
С.SetText "mother was wash up the frame"
msgbox С.GetText
С.Сlear
gera_serg
Призывник
 
Сообщений: 1
Зарегистрирован: Вт июн 01, 2004 11:47 am
Пункты репутации: 0

Сообщение Василич » Ср июн 02, 2004 1:35 pm

<!--QuoteBegin-SAM+May 31 2004, 10:13--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата (SAM @ May 31 2004, 10:13)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Вот,  пожалуй, один из лучших - <a href='http://www.vbsedit.com/' target='_blank'>VbsEdit / JsEdit 2.0</a> (а судя по доступности заветных цифир - один из самых популярных Изображение
<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
что-то я только одну цифирьку нашёл, и та нерабочая. не наведёшь на нужные? (лучше приватом). Спасиб заранее!
Василич
Ст. сержант
 
Сообщений: 36
Зарегистрирован: Вт фев 11, 2003 12:04 pm
Откуда: Seeheim
Пункты репутации: 0

След.

Вернуться в Total Commander

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron