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 

2 десктопа в одном
Goto page Previous  1, 2
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Aug 13, 2010 13:44    Post subject: Reply with quote

Volniy wrote:
Только это работать все равно не будет
Да я даже проверять не стал, повёлся на редакцию Tol'k. А жаль, было бы удобно. Smile
Volniy wrote:
Но ведь есть же иной способ, и он-то как раз нормально описан в ридми:
Это всё есть, но хотелось бы, чтобы TCS.SendCommand по функционалу не отличалась от поля "Команда", где можно прописывать помимо внутренних команд ещё и пути с параметрами. Idea

Batya wrote:
Всё бы хорошо, только виртуальную папку "Рабочий стол" так не откроешь
А это в новые условия задачи и не входило. Wink
Batya wrote:
А для обычной папки не нужны скрипты, достаточно кнопки:
Это точно. Ночью котелок слабо варит. Видимо, мне так запала в голову та конструкция, что не удержался. Smile

DoctorIkari wrote:
Что-то напортачил, в общем получилась такая белиберда:
Code:
Path = WScript.Arguments(d:\Users\winRoot\Desktop\!_KAKASHKA_!)
Я для чего написал в комментах Параметры: <PATH> ? Зачем путь(в кавычках) прописывать в самом скрипте, если нужно его прописывать в кнопке? Специально для удобства делается на случай появления не одной такой кнопки с разными путями. Вариант Batya с обычной кнопкой здесь куда уместнее:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TOTALCMD.EXE /S /O /T /L="%$DESKTOP%\!_KAKASHKA_!"

%COMMANDER_PATH%\TOTALCMD.EXE,6
Открыть Рабочий стол/NamePath в новой вкладке


-1
DoctorIkari wrote:
Если закрыть созданную копию, то мы переходим на следующую вкладку справа, а не на исходную с которой делали копию. ..
НО. .. курсор на новой вкладке оказывается на выбранном файле, а не вначале (хотя, кто знает.. может это и к лучшему)
Жаловаться на функционал ТС советую в отдельно отведённой для этого теме либо на оффоруме. Тут итак уже, ИМХО, оффтопа хватает. Создай кнопку и повесь её на сочетание клавиш >>
Code:
'Закрыть вкладку с переходом на предыдущую
'курсор в начало списка
Dim TCS
Set TCS = CreateObject("TCScript.Helper")
TCS.SendCommand "cm_CloseCurrentTab"
TCS.SendCommand "cm_SwitchToPreviousTab"
TCS.SendKeystroke "{HOME}"
Set TCS = Nothing
WScript.Quit


Last edited by Flasher on Fri Aug 13, 2010 13:58; edited 1 time in total
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Fri Aug 13, 2010 13:50    Post subject: Reply with quote

DoctorIkari wrote:
выбивает ошибку (...строка 5, символ 1...)
Пиши или
Code:
TCS.SendKeystroke "CD d:\Users\winRoot\Desktop\!_KAKASHKA_!"

или
Code:
TCS.SendKeystroke "CD " & Replace(WScript.Arguments(0), """", "")
и d:\Users\winRoot\Desktop\!_KAKASHKA_! в параметрах кнопки.
Но не всё разом.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2229
Location: Москва, Россия

Post (Separately) Posted: Fri Aug 13, 2010 15:19    Post subject: Reply with quote

Flasher wrote:
Видимо, мне так запала в голову та конструкция, что не удержался.

Здесь, кстати переменная FSO вообще не нужна. А от переменной WSH можно отказаться так:

Code:
'Открыть указанную папку в новой вкладке
'Параметры: "<PATH>"
Path = WScript.Arguments(0)
With CreateObject("WScript.Shell")
  TCPath  = .ExpandEnvironmentStrings("%Commander_Path%") & "\totalcmd.exe"
  .Run """" & TCPath & """ /S /O /T /L=""" & Path & """"'
End With
WScript.Quit

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Aug 13, 2010 15:39    Post subject: Reply with quote

Batya
Без объявления переменных и присваивания объектов вообще класс!
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Fri Aug 13, 2010 18:33    Post subject: Reply with quote

Tol!k wrote:
А чего ж не работает стандартная тоталовская команда?

А это не совсем и стандартная команда, а одна из команд с параметром.

В отличие от обычных команд, которые можно выполнять, посылая окну тотала специальное сообщение с номером команды, эти команды не имеют нормальных номеров (см. цитату далее), а отрицательные номера им присвоены только для нужд локализации.

Quote:
[________Commands with parameters_________]=0
;These negative numbers are just used for translation and cannot be used instead of the commands
CD <directory>=-2;Switch to the given directory
OPENTABS <filename>=-3;Open tabs from saved .tab file
APPENDTABS <filename>=-4;Append tabs to existing tabs
FTPOPEN <conf. ftp server>=-5;Open stored ftp connection
SYNCOPEN <sync operation>=-6;Open stored sync operation
LOADSEARCH <stored search>=-7;Open stored search operation
OPENBAR <filename>=-8;Load button bar from file
MULTIRENAME <operation name>=-9;Open stored multi-rename operation
OPENCUSTOMVIEW <view name>=-10;Switch to custom columns view

Всего одна возможность передать команду с параметром была предоставлена Гислером и эта команда позволяет напрямую установить пути в открытых панелях. Именно эта команда и реализована в вызове методов SetSrcPath и SetTrgPath хелпера. Методы как методы, очень даже неплохо работают и даже позволяют не только сменить директорию, но еще можно и установить в ней указатель на нужный файл, а еще и при желании сделать все это в новой вкладке.
Не пойму я, чего вы боитесь ими пользоваться-то? На кой вообще нужен этот весьма глючный вариант TCS.SendKeystroke "CD d:\Users\winRoot\Desktop\!_KAKASHKA_!"

Flasher, а вот если все одной строкой, так может оно еще круче, а? Wink
Code:
With CreateObject("WScript.Shell") .Run """" & .ExpandEnvironmentStrings("%Commander_Path%") & "\totalcmd.exe"" /S /O /T /L=""" & WScript.Arguments(0) & """" End With
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Aug 13, 2010 19:07    Post subject: Reply with quote

Volniy wrote:
Flasher, а вот если все одной строкой, так может оно еще круче, а? Wink
Ну да, переменные Path и ТСPath убрать неплохо было'б. Кол-во строк - дело десятое. А выход WScript.Quit тут не обязателен? Smile
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Fri Aug 13, 2010 20:33    Post subject: Reply with quote

Flasher wrote:
А выход WScript.Quit тут не обязателен? Smile

Если это последняя команда скрипта - вообще не нужен.
Quote:
If the Quit method is the final instruction in your script (and you have no need to return a non-zero value), you can leave it out, and your script will end normally.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Aug 13, 2010 20:56    Post subject: Reply with quote

Volniy
Ну, если посмотреть на большинство скриптов на форуме, то эта строка как раз последней и идёт. Её только в циклах имеет смысл использовать?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2229
Location: Москва, Россия

Post (Separately) Posted: Fri Aug 13, 2010 22:58    Post subject: Reply with quote

Volniy wrote:
а вот если все одной строкой, так может оно еще круче, а?

Был соблазн ещё такой вариант записать, но удержался Very Happy
IMHO, использовать переменные не только нормально, но и желательно. Так код более читабельный.
А в последнем моём варианте я убрал WSH, т.к. не люблю лишний раз без необходимости объекты объявлять.

Flasher wrote:
Ну, если посмотреть на большинство скриптов на форуме, то эта строка как раз последней и идёт. Её только в циклах имеет смысл использовать?

Некоторые конструкции и приёмы программирования хоть и необязательны, но опять же делают код более читабельным и структурированным - например, комментарии, оформление и т.д. "WScript.Quit" в конце скрипта не нужен, но как-то с ним "красивше" Smile Смысл имеет использовать не в циклах , а в конструкциях ветвления таких, как If ... Else ... End If.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Fri Aug 13, 2010 23:40    Post subject: Reply with quote

Flasher wrote:
Её только в циклах имеет смысл использовать?

1) В любом месте скрипта, в котором по логике его работы требуется немедленная остановка работы скрипта;
2) Тогда, когда нужно при выходе из скрипта передавать в процесс, вызвавший скрипт, код возврата, отличный от 0-вого (например, код ошибки).
Code:
WScript.Quit (1);


P.S. Ребята, а мы тему, случаем, не перепутали? Wink
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Aug 14, 2010 00:36    Post subject: Reply with quote

Batya wrote:
Смысл имеет использовать не в циклах , а в конструкциях ветвления таких, как If ... Else ... End If
Ну они и в циклах присутствовать могут, я об этом подумал.

Volniy
1) Это было понятно.
2) Понял. Коды потом посмотрю. Спасибо.

Volniy wrote:
P.S. Ребята, а мы тему, случаем, не перепутали?
Так уж случилось, что усовершенствования одного скрипта привели к тематическому ликбезу. Вроде бы разобрались, возникнут вопросы - напишу сюда. Wink
Back to top
View user's profile Send private message
DoctorIkari



Joined: 28 Feb 2010
Posts: 53
Location: Nihon

Post (Separately) Posted: Sat Aug 14, 2010 02:01    Post subject: Reply with quote

Всем спасибо! Ответ более чем полный Smile
_________________
The right man in the wrong place can make all the difference in the world... (hl2)
Back to top
View user's profile Send private message Yahoo Messenger
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group