Вообще-то, наоборот, я сказал убрать пробел, чтобы кнопка, которая сейчас не работает начала работать.Если убрать пробел, кнопка перестает работать.
[util] TC Menu: вопросы, ответы, предложения
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Вот кнопка о которой мы говорим:
TOTALCMD#BAR#DATA
"C:\Program Files\WinRAR\WinRAR.exe"
x "%P%N" "%P%O\"
C:\wincmd\WCMICONS.DLL,31
Извлечь в папку с именем архива
Вы сказали:
Если пробел здесь убрать, то кнопка не работает.
p.s.
Поясните пожалуйста подробней.
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".
Последний раз редактировалось borisin Вс мар 25, 2007 23:33, всего редактировалось 1 раз.
А-а-а. "В конце команды" я имел в виду в конце того, что является командой (чтобы отличить от того, что является параметрами команды). Команда здесь - это "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
-----------------------------------
Вот моя кнопка, работает и в ТС и в TCMenu.
--------------------------
TOTALCMD#BAR#DATA
"D:\Program Files\WinRAR\WinRAR.exe"
x "%P%N" "%P%O\"
D:\wincmd\WCMICONS.DLL,31
Извлечь в папку с именем архива
-1
-----------------------------------
Ну и чем Ваша кнопка отличается от той о которой писал я, кроме того, что WinRar у меня находиться на диске С, а у Вас на D.
Видимо у меня с виндой что-то не в порядке, или с руками. Интересно, что скажут другие, кому эта программа интересна, работают ли у них эти кнопки о которых идет речь.
Странно все это.VadiMGP писал(а):Странно, у меня все заработало. Я же не просто так отписался, я проверил перед тем как писать.
Видимо у меня с виндой что-то не в порядке, или с руками. Интересно, что скажут другие, кому эта программа интересна, работают ли у них эти кнопки о которых идет речь.
Пробел есть, в конце. Посмотри внимательно в .bar файл или через диалог редактирования команды. В .bar файле есть строкаИ где я должен убрать пробел? в команде: "C:\Program Files\WinRAR\WinRAR.exe"
Код: Выделить всё
cmd3=""C:\Program Files\WinRAR\WinRAR.exe" "Внешне - да, разницу в один пробел заметить трудно.Ну и чем Ваша кнопка отличается от той о которой писал я,
Вот 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'
[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'
Эта кнопка заработала:
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
Что касается этой кнопки - виноваты кривые руки, был не внимателен.
Остальные кнопки не работают.
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
Что касается этой кнопки - виноваты кривые руки, был не внимателен.
Остальные кнопки не работают.
Конкретно этими кнопками не пользуюсь, другие "наворочанные" работают отлично. Если что-то сходу не запускается, в 100% случаев это руки,выясняется на свежую голову через день.
Что касается "архивы не найдены" - проверить особо внимательно написание -Буква и %Буква с большой или маленькой буквы. Это определяет применение короткого или длинного имени.
Что касается "архивы не найдены" - проверить особо внимательно написание -Буква и %Буква с большой или маленькой буквы. Это определяет применение короткого или длинного имени.
педофилия, каннибализм, бетономешалка !!!
Черт, тут действительно с кавычками проблемка из-за того, что ТС некоторые параметры (%Р, %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"
------------------------------------------------
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
- Контактная информация:
VadiMGP
Есть предложение по TCmenu.
Одна из самых раздражающих "фич": при активной работе, когда мышь двигается быстро, меню появляется не там, где должно. Собственно, предложение разбивается на два:
1. Если после щелчка по кнопке, активирующей TCmenu, я быстро увожу мышь куда-нибудь, меню появляется очень далеко как от изначального положения щелчка, так и от текущего положения курсора мыши. Если первое я ещё могу понять (пока программа загрузится и сможет получить положение указателя, мышь уже успевает сдвинуться), то второе выглядит совсем странно. Чаще всего в этой ситуации меню появляется где-то внизу экрана. Хорошо бы это пофиксить.
2. Более удачной мне кажется следующая идея: запоминать положение кнопки на панели инструментов и показывать меню всегда около неё, независимо от того, куда успела убежать мышь. К сожалению, идеального способа предложить не могу. Вот придуманные мной варианты:
а) Если при щелчке по кнопке нажата какая-нибудь клавиша-модификатор (Shift, скажем, или Ctrl, или просто ScrollLock включён), TCmenu использует текущее положение указателя мыши, чтобы запомнить расположение своей кнопки относительно окна Тотала (пользователь должен гарантировать, что мышь в этой ситуации, действительно, находится там, где кнопка - иначе пусть пеняет на себя). При дальнейших вызовах (без клавиши-модификатора) TCmenu просто отображается в той позиции, что была сохранена ранее. Надо только более чётко продумать поведение, когда в панели Тотала несколько TCmenu-шных кнопок.
б) Гораздо более сложный вариант, но, возможно, более точный: анализировать BAR-файл, открытый Тоталом в данный момент, и на основе его содержимого, а также на основе настроек, считанных из wincmd.ini (таких как размер кнопок) вычислять текущее положение кнопки независимо от положения курсора мыши. Для ускорения работы результаты можно кэшировать, а обновлять их либо при вызове с тем же модификатором (Shift/Ctrl/ScrollLock), либо при изменении даты/времени BAR-файла (считаем, что размеры панелей меняются не так уж и часто: обычно пользователь выбирает самый удобный размер и пользуется только им).
Есть предложение по TCmenu.
Одна из самых раздражающих "фич": при активной работе, когда мышь двигается быстро, меню появляется не там, где должно. Собственно, предложение разбивается на два:
1. Если после щелчка по кнопке, активирующей TCmenu, я быстро увожу мышь куда-нибудь, меню появляется очень далеко как от изначального положения щелчка, так и от текущего положения курсора мыши. Если первое я ещё могу понять (пока программа загрузится и сможет получить положение указателя, мышь уже успевает сдвинуться), то второе выглядит совсем странно. Чаще всего в этой ситуации меню появляется где-то внизу экрана. Хорошо бы это пофиксить.
2. Более удачной мне кажется следующая идея: запоминать положение кнопки на панели инструментов и показывать меню всегда около неё, независимо от того, куда успела убежать мышь. К сожалению, идеального способа предложить не могу. Вот придуманные мной варианты:
а) Если при щелчке по кнопке нажата какая-нибудь клавиша-модификатор (Shift, скажем, или Ctrl, или просто ScrollLock включён), TCmenu использует текущее положение указателя мыши, чтобы запомнить расположение своей кнопки относительно окна Тотала (пользователь должен гарантировать, что мышь в этой ситуации, действительно, находится там, где кнопка - иначе пусть пеняет на себя). При дальнейших вызовах (без клавиши-модификатора) TCmenu просто отображается в той позиции, что была сохранена ранее. Надо только более чётко продумать поведение, когда в панели Тотала несколько TCmenu-шных кнопок.
б) Гораздо более сложный вариант, но, возможно, более точный: анализировать BAR-файл, открытый Тоталом в данный момент, и на основе его содержимого, а также на основе настроек, считанных из wincmd.ini (таких как размер кнопок) вычислять текущее положение кнопки независимо от положения курсора мыши. Для ускорения работы результаты можно кэшировать, а обновлять их либо при вызове с тем же модификатором (Shift/Ctrl/ScrollLock), либо при изменении даты/времени BAR-файла (считаем, что размеры панелей меняются не так уж и часто: обычно пользователь выбирает самый удобный размер и пользуется только им).
Почему же, ё-моё, ты нигде не пишешь "ё"?
CaptainFlint
По первому пункту.
Такое может происходить в двух случаях. Первый - ты щелкнул мышью и быстро отвел ее в сторону. Когда TCMenu запрашивает положение курсора то вполне вероятно, что она может получить некоторое промежуточное положение между позицией клика и конечной позицией мыши. В этом случае я ничего не могу сделать - какую позицию мне дали - с той и работаю.
Но возможна и другая ситуация - ты подвел курсор слишком близко к краю экрана. А тутуже вмешивается Windows!
Если курсор находится близко к краю экрана, и винда считает, что меню таких размеров тут показать нельзя, то меню может появиться где угодно (хоть в ботинке, как неразменный пятак). У винды есть свои, никому неведомые соображения насчет того, где в таких случаях показывать меню. Во всяком случае, в таких ситуациях она (винда) плюет на параметры TrackPopupMenu с высокой колокольни.
Я, вообще-то, пытаюсь это учитывать, но возможно где-то просчитался. Чтобы сказать наверняка мне нужен полный скриншот экрана (с мышиным курсором), резолюция экрана, а также фонт (имя, скрипт и размер), которым рисуется меню.
По второму пункту. Эх, не сыпь мне соль... Меня самого это раздражает, только сделать я ничего не могу.
Запоминать положение кнопки на пенели - хотя и муторно, но можно. Проблема в другом - в нескольких менюшных кнопках на панели. Чтобы правильно позиционировать меню, мне надо знать по какой кнопке меня запустили. Единственный индикатор - мышь, а она удрала (не дай бог, еще и в окно другой копии TC).
Возьмем даже твой более сложный вариант. Хорошо, прочитал я, например, default.bar и теперь знаю, что в нем три кнопки c TCMenu. Одна, допустим, крайняя слева, другая - четвертая по счету, третья - крайняя справа. Как я узнаю, по какой именно кнопке меня запустили? Где позиционировать меню?
ЗЫ. Из всех способов, которые приходили мне в голову, мне представляется только один может решить эту проблему. Надо сделать "плагин", заменяющий в ТС панель инструментов, на новую, которая сама будет поддерживать выпадающие меню из своих кнопок.
Есть, разумеется, еще мизерный шанс, что Гислер сам реализует это, но, по прошествии более чем десяти лет, мне уже не верится в это.
По первому пункту.
Такое может происходить в двух случаях. Первый - ты щелкнул мышью и быстро отвел ее в сторону. Когда TCMenu запрашивает положение курсора то вполне вероятно, что она может получить некоторое промежуточное положение между позицией клика и конечной позицией мыши. В этом случае я ничего не могу сделать - какую позицию мне дали - с той и работаю.
Но возможна и другая ситуация - ты подвел курсор слишком близко к краю экрана. А тутуже вмешивается Windows!
Если курсор находится близко к краю экрана, и винда считает, что меню таких размеров тут показать нельзя, то меню может появиться где угодно (хоть в ботинке, как неразменный пятак). У винды есть свои, никому неведомые соображения насчет того, где в таких случаях показывать меню. Во всяком случае, в таких ситуациях она (винда) плюет на параметры TrackPopupMenu с высокой колокольни.
Я, вообще-то, пытаюсь это учитывать, но возможно где-то просчитался. Чтобы сказать наверняка мне нужен полный скриншот экрана (с мышиным курсором), резолюция экрана, а также фонт (имя, скрипт и размер), которым рисуется меню.
По второму пункту. Эх, не сыпь мне соль... Меня самого это раздражает, только сделать я ничего не могу.
Запоминать положение кнопки на пенели - хотя и муторно, но можно. Проблема в другом - в нескольких менюшных кнопках на панели. Чтобы правильно позиционировать меню, мне надо знать по какой кнопке меня запустили. Единственный индикатор - мышь, а она удрала (не дай бог, еще и в окно другой копии TC).
Возьмем даже твой более сложный вариант. Хорошо, прочитал я, например, default.bar и теперь знаю, что в нем три кнопки c TCMenu. Одна, допустим, крайняя слева, другая - четвертая по счету, третья - крайняя справа. Как я узнаю, по какой именно кнопке меня запустили? Где позиционировать меню?
ЗЫ. Из всех способов, которые приходили мне в голову, мне представляется только один может решить эту проблему. Надо сделать "плагин", заменяющий в ТС панель инструментов, на новую, которая сама будет поддерживать выпадающие меню из своих кнопок.
Есть, разумеется, еще мизерный шанс, что Гислер сам реализует это, но, по прошествии более чем десяти лет, мне уже не верится в это.