Страница 4 из 23

Добавлено: Вс мар 25, 2007 21:54
VadiMGP
Если убрать пробел, кнопка перестает работать.
Вообще-то, наоборот, я сказал убрать пробел, чтобы кнопка, которая сейчас не работает начала работать.

Добавлено: Вс мар 25, 2007 22:38
borisin
Если убрать пробел, то кнопка перестает работать и на обычной панели. Через TCMenu ни с каким из вариантов не работает.

Добавлено: Вс мар 25, 2007 22:53
VadiMGP
Если убрать пробел, то кнопка перестает работать и на обычной панели
Речь шла о кнопке с командой "C:\Program Files\WinRAR\WinRAR.exe" с пробелом после кавычек, так? Если убрать пробел, то остается только "C:\Program Files\WinRAR\WinRAR.exe".
Ты хочешь сказать, что это из ТС не запускается???

Добавлено: Вс мар 25, 2007 23:20
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: Поясните пожалуйста подробней.

Добавлено: Вс мар 25, 2007 23:31
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
-----------------------------------

Добавлено: Вс мар 25, 2007 23:37
borisin
И где я должен убрать пробел? в команде: "C:\Program Files\WinRAR\WinRAR.exe" после кавычек ни какого пробела у меня не было. C чего вы взяли?

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

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

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

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

Добавлено: Пн мар 26, 2007 00:30
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'

Добавлено: Пн мар 26, 2007 01:04
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:

Добавлено: Пн мар 26, 2007 01:18
borisin
Если в имени архива есть пробел, то выскакивает окно: "Архивы не найдены" :cry:

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

Что касается "архивы не найдены" - проверить особо внимательно написание -Буква и %Буква с большой или маленькой буквы. Это определяет применение короткого или длинного имени.

Добавлено: Пн мар 26, 2007 13:53
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
Подставляешь временно его вместо запускаемой программы и сразу видишь с какими параметрами она вызывается.

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

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

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

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

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

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