Проблема: Дублируется пункт контекстного меню для ярлыков
От: Oleg_Krq  
Дата: 15.12.05 11:11
Оценка:
Написав расширение оболочки Windows (ContextMenuHandler), и зарегистрировав его в

HKCR\*\shellex\ContextMenuHandlers\MyExtension,

я обнаружил, что при щелчке правой кнопки мыши на ярлыке, моему расширению передается не имя ярлыка, а имя объекта, на который этот ярлык ссылается, хотя хотелось бы, чтобы просто передавалось имя ярлыка.

Попробовал зарегистрировать расширение так:

HKCR\*\shellex\ContextMenuHandlers\MyExtension
HKCR\lnkfile\shellex\ContextMenuHandlers\MyExtension.

Вроде сработало, для ярлыка стал передавать его имя (в Windows XP). Однако обнаружилось, что в Windows 98 при щелчке правой конпкой на ярлыке в контекстном меню появляется аж два одинаковых пункта меню. Судя по всему, проводник инициализирует расширение два раза — один раз для объекта *, а второй — для lnkfile, так как при выборе одного пункта передается имя ярлыка, а при выборе второго — имя объекта, на который ярлык ссылается.

Уже долго ищу как решить эту проблему, буду благодарен, если кто-нибудь подскажет способ.



17.02.06 15:31: Перенесено модератором из 'Прочее' — Hacker_Delphi
Re: Проблема: Дублируется пункт контекстного меню для ярлыко
От: Hacker_Delphi Россия  
Дата: 17.02.06 12:32
Оценка:
Здравствуйте, Oleg_Krq, Вы писали:

так не регистрируйся на *


O_K>
17.02.06 15:31: Перенесено модератором из 'Прочее' — Hacker_Delphi
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[2]: Проблема: Дублируется пункт контекстного меню для ярл
От: Аноним  
Дата: 20.02.06 05:32
Оценка: -1
Здравствуйте, Hacker_Delphi, Вы писали:

H_D>Здравствуйте, Oleg_Krq, Вы писали:


H_D>так не регистрируйся на *



O_K>>


Большое спасибо за совет, правда я не понимаю смысла в таких советах. Если вам нечего сказать, лучше просто ничего не пишите
Re[3]: Проблема: Дублируется пункт контекстного меню для ярл
От: Hacker_Delphi Россия  
Дата: 20.02.06 08:22
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Большое спасибо за совет, правда я не понимаю смысла в таких советах. Если вам нечего сказать, лучше просто ничего не пишите


А попробовать сперва реализовать совет не пробовал?
цитата:

HKCR\*\shellex\ContextMenuHandlers\MyExtension
HKCR\lnkfile\shellex\ContextMenuHandlers\MyExtension.

Вроде сработало, для ярлыка стал передавать его имя (в Windows XP). Однако обнаружилось, что в Windows 98 при щелчке правой конпкой на ярлыке в контекстном меню появляется аж два одинаковых пункта меню. Судя по всему, проводник инициализирует расширение два раза — один раз для объекта *, а второй — для lnkfile, так как при выборе одного пункта передается имя ярлыка, а при выборе второго — имя объекта, на который ярлык ссылается.

Имелось в виду — не регистрируйся в ключ, который выделен жирным шрифтом.
Наверняка от этого не перестанет работать под XP, а под 98 перестанет дублировать...
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re[4]: Проблема: Дублируется пункт контекстного меню для ярл
От: Аноним  
Дата: 20.02.06 10:21
Оценка:
Здравствуйте, Hacker_Delphi, Вы писали:

H_D>Здравствуйте, <Аноним>, Вы писали:


А>>Большое спасибо за совет, правда я не понимаю смысла в таких советах. Если вам нечего сказать, лучше просто ничего не пишите


H_D>А попробовать сперва реализовать совет не пробовал?

H_D>цитата:
H_D>

H_D>HKCR\*\shellex\ContextMenuHandlers\MyExtension
H_D>HKCR\lnkfile\shellex\ContextMenuHandlers\MyExtension.

H_D>Вроде сработало, для ярлыка стал передавать его имя (в Windows XP). Однако обнаружилось, что в Windows 98 при щелчке правой конпкой на ярлыке в контекстном меню появляется аж два одинаковых пункта меню. Судя по всему, проводник инициализирует расширение два раза — один раз для объекта *, а второй — для lnkfile, так как при выборе одного пункта передается имя ярлыка, а при выборе второго — имя объекта, на который ярлык ссылается.

H_D>Имелось в виду — не регистрируйся в ключ, который выделен жирным шрифтом.
H_D>Наверняка от этого не перестанет работать под XP, а под 98 перестанет дублировать...

Прошу прощения, не так понял. Дело в том, что здесь * убрать нельзя. Расширение должно быть зарегистрировано для всех файлов/директорий, в том числе и для ярлыков. Проблема в том, что без lnkfile передается не имя ярлыка, а имя файла, на который ярлык ссылается. Я искал способ, чтобы именно имя ярлыка передавалось.
Re[5]: Проблема: Дублируется пункт контекстного меню для ярл
От: Hacker_Delphi Россия  
Дата: 20.02.06 12:22
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Прошу прощения, не так понял. Дело в том, что здесь * убрать нельзя. Расширение должно быть зарегистрировано для всех файлов/директорий, в том числе и для ярлыков. Проблема в том, что без lnkfile передается не имя ярлыка, а имя файла, на который ярлык ссылается. Я искал способ, чтобы именно имя ярлыка передавалось.


Тогда надо динамически как-то разобраться, для кого тебя вызывают...
Я когда-то писал расширения для меню, но уже почти все забыл и не уверен, что можно как-то это разрулить...
Проверяй... а каким образом — непонятно ... может перебирать меню и если пункт уже есть — не добавлять его?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.