Главная страница
    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.01 c
1-1145425737
K_VAL
2006-04-19 09:48
2006.05.28
Восстановить иконку проекта


15-1146420362
Meson_
2006-04-30 22:06
2006.05.28
Вопрос по железу. Принтер HP 2610: ошибка при включении


4-1141714583
Новичоккк
2006-03-07 09:56
2006.05.28
Перехватить вызов функции из DLL


15-1146634114
fast2
2006-05-03 09:28
2006.05.28
Как избавится от постоянно всплывающих окон?


2-1147179928
tigra
2006-05-09 17:05
2006.05.28
if.... then exit;





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский