[util] TC Menu: вопросы, ответы, предложения

Обсуждение только плагинов и утилит для Total Commander.

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

VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Если убрать пробел, кнопка перестает работать.
Вообще-то, наоборот, я сказал убрать пробел, чтобы кнопка, которая сейчас не работает начала работать.
borisin
Сообщения: 26
Зарегистрирован: Пт ноя 03, 2006 16:25

Сообщение borisin »

Если убрать пробел, то кнопка перестает работать и на обычной панели. Через TCMenu ни с каким из вариантов не работает.
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Если убрать пробел, то кнопка перестает работать и на обычной панели
Речь шла о кнопке с командой "C:\Program Files\WinRAR\WinRAR.exe" с пробелом после кавычек, так? Если убрать пробел, то остается только "C:\Program Files\WinRAR\WinRAR.exe".
Ты хочешь сказать, что это из ТС не запускается???
borisin
Сообщения: 26
Зарегистрирован: Пт ноя 03, 2006 16:25

Сообщение borisin »

Вот кнопка о которой мы говорим:

TOTALCMD#BAR#DATA
"C:\Program Files\WinRAR\WinRAR.exe"
x "%P%N" "%P%O\"
C:\wincmd\WCMICONS.DLL,31
Извлечь в папку с именем архива

Вы сказали:
Во-первых, в конце команды, после кавычек, есть пробелы. Я могу в следующей версии их скипнуть, конечно, но пока - убери.
в конце команды, после кавычек, т.е. я так понимаю, что пробел надо убрать в этой строке: x "%P%N" "%P%O\"
Если пробел здесь убрать, то кнопка не работает.

p.s.
Речь шла о кнопке с командой "C:\Program Files\WinRAR\WinRAR.exe" с пробелом после кавычек, так? Если убрать пробел, то остается только
"C:\Program Files\WinRAR\WinRAR.exe".
:roll: Поясните пожалуйста подробней.
Последний раз редактировалось borisin Вс мар 25, 2007 23:33, всего редактировалось 1 раз.
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

А-а-а. "В конце команды" я имел в виду в конце того, что является командой (чтобы отличить от того, что является параметрами команды). Команда здесь - это "C:\Program Files\WinRAR\WinRAR.exe" , а остальное - ее параметры. Так же как в диалоге редактирования кнопки есть поле "Команда", а есть поле "Параметры".

Вот моя кнопка, работает и в ТС и в TCMenu.
--------------------------
TOTALCMD#BAR#DATA
"D:\Program Files\WinRAR\WinRAR.exe"
x "%P%N" "%P%O\"
D:\wincmd\WCMICONS.DLL,31
Извлечь в папку с именем архива


-1
-----------------------------------
borisin
Сообщения: 26
Зарегистрирован: Пт ноя 03, 2006 16:25

Сообщение borisin »

И где я должен убрать пробел? в команде: "C:\Program Files\WinRAR\WinRAR.exe" после кавычек ни какого пробела у меня не было. C чего вы взяли?
borisin
Сообщения: 26
Зарегистрирован: Пт ноя 03, 2006 16:25

Сообщение borisin »

Ну и чем Ваша кнопка отличается от той о которой писал я, кроме того, что WinRar у меня находиться на диске С, а у Вас на D.
VadiMGP писал(а):Странно, у меня все заработало. Я же не просто так отписался, я проверил перед тем как писать.
Странно все это. :roll: :wink:
Видимо у меня с виндой что-то не в порядке, или с руками. Интересно, что скажут другие, кому эта программа интересна, работают ли у них эти кнопки о которых идет речь.
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

И где я должен убрать пробел? в команде: "C:\Program Files\WinRAR\WinRAR.exe"
Пробел есть, в конце. Посмотри внимательно в .bar файл или через диалог редактирования команды. В .bar файле есть строка

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

cmd3=""C:\Program Files\WinRAR\WinRAR.exe" "
Она заключена в две пары кавычек, внешняя пара при чтении из .bar файла отбрасывается. Теперь видишь, о каком пробеле я говорил?
Ну и чем Ваша кнопка отличается от той о которой писал я,
Внешне - да, разницу в один пробел заметить трудно. :) А при втавке из клипборда - практически невозможно. Именно поэтому я решил не копировать ее из клипборда, а написать, что в ней надо сделать.
borisin
Сообщения: 26
Зарегистрирован: Пт ноя 03, 2006 16:25

Сообщение borisin »

Вот bar-файл. Ни каких пробелов нет.

[Buttonbar]
Buttoncount=2
button1=wcmicons.dll,15
cmd1=C:\Program Files\wincmd\default.bar
button2=C:\Program Files\WinRAR\WinRAR.exe
cmd2=""C:\Program Files\WinRAR\WinRAR.exe""
param2=x "%P%N" "%P%O\"
menu2=Извлечь в папку с именем архива

ошибка: Missing parameter '%P'
borisin
Сообщения: 26
Зарегистрирован: Пт ноя 03, 2006 16:25

Сообщение borisin »

Эта кнопка заработала: :D

TOTALCMD#BAR#DATA
"D:\Program Files\WinRAR\WinRAR.exe"
x "%P%N" "%P%O\"
D:\wincmd\WCMICONS.DLL,31
Извлечь в папку с именем архива

Ошибка у меня была в этом пути:
У меня было прописано, то что Вы рекомендовали первый раз:
C:\wincmd\TCMenu\bar.bar -N %N -T %T -O %O

А надо было - Ваша вторая рекомендация:
C:\wincmd\TCMenu\bar.bar -N %N -T %T -O %O -P %P -F %F
Что касается этой кнопки - виноваты кривые руки, был не внимателен.

Остальные кнопки не работают. :cry:
borisin
Сообщения: 26
Зарегистрирован: Пт ноя 03, 2006 16:25

Сообщение borisin »

Если в имени архива есть пробел, то выскакивает окно: "Архивы не найдены" :cry:
Worros
Сообщения: 1123
Зарегистрирован: Пт янв 19, 2007 18:46

Сообщение Worros »

Конкретно этими кнопками не пользуюсь, другие "наворочанные" работают отлично. Если что-то сходу не запускается, в 100% случаев это руки,выясняется на свежую голову через день.

Что касается "архивы не найдены" - проверить особо внимательно написание -Буква и %Буква с большой или маленькой буквы. Это определяет применение короткого или длинного имени.
педофилия, каннибализм, бетономешалка !!!
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Если в имени архива есть пробел,
Черт, тут действительно с кавычками проблемка из-за того, что ТС некоторые параметры (%Р, %N) сам заключает в кавычки, если в них есть пробел, а некоторые (%О) - нет.
Есть несколько вариантов обойти это.

1. Как сказал Worros, если некритично, то использовать строчные, а не прописные буквы (%р, %о и т.п.)

2. Поменять в параметрах запуска TCmenu -O %O на -O "%O", а в кнопке запуска Winrar прописать параметры x %P%N %P%O\.
Должно получиться так
------------------------------------------------
TOTALCMD#BAR#DATA
D:\Program Files\WinRAR\WinRAR.exe
x %P%N %P%O\
D:\wincmd\WCMICONS.DLL,31
Извлечь в папку с именем архива


-1
------------------------------------------------

3. Для крутых. :) Вводить собственные параметры. В ридми есть пример с параметром %А

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

Тот же результат дает другое определение. Файл MyEditors.bar содержит команду
"Notepad.exe %A" , а параметры для TCmenu: "C:\Wincmd\MyEditors.bar -A %p%n"
При этом способе кнопка запуска TCMenu будет содержать также -A %P%N -B "%P%O"\. А кнопка запуска Winrar будет такой
------------------------------------------------
TOTALCMD#BAR#DATA
D:\Program Files\WinRAR\WinRAR.exe
x %A %B
D:\wincmd\WCMICONS.DLL,31
Извлечь в папку с именем архива 2


-1
-----------------------------------------
Понятно, что в случае способов 2 или 3 такая кнопка, уже не будет работать в панели самого ТС.

PS. Вообще, подстановка и передача параметров проходит кучу этапов. ТС ->Windows -> TCMenu -> Windows -> <запускаемая программа> На каждом шаге могут быть свои заморочки. В таких случаях, когда натыкаешься на сообщение запускаемой программы (типа "архив не найден") очень помогает простенький .bat файл

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

echo %1
echo %2
echo %3
echo %4
echo %5
echo %6
echo %7
echo %8
echo %9
pause
Подставляешь временно его вместо запускаемой программы и сразу видишь с какими параметрами она вызывается.
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

VadiMGP
Есть предложение по TCmenu.
Одна из самых раздражающих "фич": при активной работе, когда мышь двигается быстро, меню появляется не там, где должно. Собственно, предложение разбивается на два:

1. Если после щелчка по кнопке, активирующей TCmenu, я быстро увожу мышь куда-нибудь, меню появляется очень далеко как от изначального положения щелчка, так и от текущего положения курсора мыши. Если первое я ещё могу понять (пока программа загрузится и сможет получить положение указателя, мышь уже успевает сдвинуться), то второе выглядит совсем странно. Чаще всего в этой ситуации меню появляется где-то внизу экрана. Хорошо бы это пофиксить.

2. Более удачной мне кажется следующая идея: запоминать положение кнопки на панели инструментов и показывать меню всегда около неё, независимо от того, куда успела убежать мышь. К сожалению, идеального способа предложить не могу. Вот придуманные мной варианты:
а) Если при щелчке по кнопке нажата какая-нибудь клавиша-модификатор (Shift, скажем, или Ctrl, или просто ScrollLock включён), TCmenu использует текущее положение указателя мыши, чтобы запомнить расположение своей кнопки относительно окна Тотала (пользователь должен гарантировать, что мышь в этой ситуации, действительно, находится там, где кнопка - иначе пусть пеняет на себя). При дальнейших вызовах (без клавиши-модификатора) TCmenu просто отображается в той позиции, что была сохранена ранее. Надо только более чётко продумать поведение, когда в панели Тотала несколько TCmenu-шных кнопок.
б) Гораздо более сложный вариант, но, возможно, более точный: анализировать BAR-файл, открытый Тоталом в данный момент, и на основе его содержимого, а также на основе настроек, считанных из wincmd.ini (таких как размер кнопок) вычислять текущее положение кнопки независимо от положения курсора мыши. Для ускорения работы результаты можно кэшировать, а обновлять их либо при вызове с тем же модификатором (Shift/Ctrl/ScrollLock), либо при изменении даты/времени BAR-файла (считаем, что размеры панелей меняются не так уж и часто: обычно пользователь выбирает самый удобный размер и пользуется только им).
Почему же, ё-моё, ты нигде не пишешь "ё"?
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

CaptainFlint
По первому пункту.
Такое может происходить в двух случаях. Первый - ты щелкнул мышью и быстро отвел ее в сторону. Когда TCMenu запрашивает положение курсора то вполне вероятно, что она может получить некоторое промежуточное положение между позицией клика и конечной позицией мыши. В этом случае я ничего не могу сделать - какую позицию мне дали - с той и работаю.
Но возможна и другая ситуация - ты подвел курсор слишком близко к краю экрана. А тутуже вмешивается Windows!
Если курсор находится близко к краю экрана, и винда считает, что меню таких размеров тут показать нельзя, то меню может появиться где угодно (хоть в ботинке, как неразменный пятак). У винды есть свои, никому неведомые соображения насчет того, где в таких случаях показывать меню. Во всяком случае, в таких ситуациях она (винда) плюет на параметры TrackPopupMenu с высокой колокольни.
Я, вообще-то, пытаюсь это учитывать, но возможно где-то просчитался. Чтобы сказать наверняка мне нужен полный скриншот экрана (с мышиным курсором), резолюция экрана, а также фонт (имя, скрипт и размер), которым рисуется меню.

По второму пункту. Эх, не сыпь мне соль... Меня самого это раздражает, только сделать я ничего не могу.
Запоминать положение кнопки на пенели - хотя и муторно, но можно. Проблема в другом - в нескольких менюшных кнопках на панели. Чтобы правильно позиционировать меню, мне надо знать по какой кнопке меня запустили. Единственный индикатор - мышь, а она удрала (не дай бог, еще и в окно другой копии TC).
Возьмем даже твой более сложный вариант. Хорошо, прочитал я, например, default.bar и теперь знаю, что в нем три кнопки c TCMenu. Одна, допустим, крайняя слева, другая - четвертая по счету, третья - крайняя справа. Как я узнаю, по какой именно кнопке меня запустили? Где позиционировать меню?

ЗЫ. Из всех способов, которые приходили мне в голову, мне представляется только один может решить эту проблему. Надо сделать "плагин", заменяющий в ТС панель инструментов, на новую, которая сама будет поддерживать выпадающие меню из своих кнопок.
Есть, разумеется, еще мизерный шанс, что Гислер сам реализует это, но, по прошествии более чем десяти лет, мне уже не верится в это. :wink:
Ответить