Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];

Вниз

Добавление пункта меню   Найти похожие ветки 

 
Tristania ©   (2006-03-09 21:29) [0]

Здраствуйте!
У меня простой вопрос. Как можно добавить свой пункт к системному попап-меню, которое появляется при щелчке правой кнопкой мыши на файле?
Также к новому пункту меню нужно прикрутить и обработчик(заглушку).


 
tesseract ©   (2006-03-09 21:45) [1]

Люблю такое через реестр делать:
HKEY_CLASSES_ROOT
раздел - с именем ".расширение"  - в разделе default стоит "описатель"
раздел "описатель " - подраздел DefaultIcon - по умолчанию стоит ссылка на иконку файла.
подраздел "Shel"l, у него подразделы  "Open" и "command" - в command  прописана команда для запуска твоего приложения.

Если для всех файлов см

HKEY_CLASSES_ROOT\* - тут прописаны handler для всех типов файлов. раздел OpenWith для  WinXP+.


 
Tristania ©   (2006-03-09 21:50) [2]

Спасибо, но не мог бы ты это кодом проиллюстрировать?
Просто еще один пункт в меню и МессаджБокс какой-нибудь при на нажатии на него.

Буду крайне благодарен!


 
tesseract ©   (2006-03-09 21:55) [3]

Запусти regedit. и почитай про TRegistry.


 
Tristania ©   (2006-03-09 21:57) [4]

Как работать с реестром я знаю. Основная непонятка с обработчиком. Где он должен находиться?
И последнее: в каких виндах будет работать твой принцип?


 
Tristania ©   (2006-03-09 22:08) [5]

Все, разобрался. Спасибо большое.


 
Tristania ©   (2006-03-09 22:30) [6]

Пардон, за беспокойство. А могу ли я каким-нибудь образом задать индекс своего пункта в этом меню? Ну скажем, чтоб он был самым первым?
И можно ли добавлять сепараторы? Если да, то как?


 
tesseract ©   (2006-03-09 22:40) [7]


> Пардон, за беспокойство. А могу ли я каким-нибудь образом
> задать индекс своего пункта в этом меню? Ну скажем, чтоб
> он был самым первым?И можно ли добавлять сепараторы? Если
> да, то как?

Скорее нет чем да. Возможно придётся писать Com-handler. По этой теме лучший источник - msdn.microsoft.com


 
Piter ©   (2006-03-09 22:44) [8]

Ну, способ описанный tesseract - не есть корректный.

Если целью является перенять обработку данного типа файла на свою программу - то оно, конечно, да. Меняй  "описатель" у нужного типа файла и вуаля.

Но если тебе нужно просто добавить свой пункт меню и не уничтожать дефолтную обработку сторонней программой - то тут сложности. Нужно писать свою DLL COM-сервер.

Все таки программы, которые могут обработать любой тип файла - редки.

Tristania ©   (09.03.06 22:30) [6]
А могу ли я каким-нибудь образом задать индекс своего пункта в этом меню?


Tristania ©   (09.03.06 22:30) [6]
И можно ли добавлять сепараторы?


используя реестр - видимо, нет.

Только если писать свой COM-сервер.


 
Tristania ©   (2006-03-09 22:45) [9]

Жаль....



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
15-1146112390
Карелин Артем
2006-04-27 08:33
2006.05.28
Нужны программисты в Самаре на полный день.


3-1143990847
так себе
2006-04-02 19:14
2006.05.28
Создать отчет в FastReport2.x


1-1145272894
trank
2006-04-17 15:21
2006.05.28
Метод TCanvas.Draw меняет хэндлы


15-1146826028
<B>balepa1</B>
2006-05-05 14:47
2006.05.28
Проверка "Модераторы сори больше не буду"


15-1146575726
asdqwer
2006-05-02 17:15
2006.05.28
Интернет в России и на Украине





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский