Добавление своего пункта в контекстное меню.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Glyckmen
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 30.04.2006 (Вс) 15:32
Откуда: Санкт-Петербург

Добавление своего пункта в контекстное меню.

Сообщение Glyckmen » 30.04.2006 (Вс) 16:06

При написании своей программы столкнулся с проблемой. Суть такова я хочу что-бы моя программа добавляла свой пункт в контекстное меню самого Windows (то меню которое вызывается когда в проводнике на любом файле кликаешь правой кнопкой мышки) при этом желательно что-бы программа не висела в памяти процессом.
Подскажите как это можно сделать, (хоть в каком направлении думать над этим)

Vinechka
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 381
Зарегистрирован: 10.05.2005 (Вт) 4:07
Откуда: Москва

Сообщение Vinechka » 30.04.2006 (Вс) 16:12

HKEY_CLASSES_ROOT\*\shell\MD5 Hash\Command
MD5 Hash - то, что будет выведено в контекстном меню для файла.
В комманд ключ по умолчанию (default) - это коммандная строка чего вызываем. Например "C:\PROGRA~1\hasher\hasher.exe" "%1"

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.04.2006 (Вс) 16:16

Вопрос, ответ на который находится в FAQ, считается злостным оффтопиком. Замечание устное только на первый раз.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Glyckmen
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 30.04.2006 (Вс) 15:32
Откуда: Санкт-Петербург

Сообщение Glyckmen » 30.04.2006 (Вс) 21:32

GSerg Перед постом я читал FAQ и моего вопроса там нет.
Я не доконца выразился: мне не надо осоциировать свою программу с определенными файлами, мне надо что-бы программа могла работать с любым файлом и любым расширением, т.е просто передовать программе через контекстное меню Windows путь и имя этого файла, а про асоциацию своего расширения к программе я знаю, но в данном случае мне это не надо.

Vinechka
Спасибо попробую реализовать.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.04.2006 (Вс) 21:43

Glyckmen писал(а):мне надо что-бы программа могла работать с любым файлом и любым расширением

Такого не бывает, бывает ассоциация с файлами *. Именно эта запись и отвечает за конктекстные меню, вызываемые для любого файла.
Lasciate ogni speranza, voi ch'entrate.

Glyckmen
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 30.04.2006 (Вс) 15:32
Откуда: Санкт-Петербург

Сообщение Glyckmen » 30.04.2006 (Вс) 22:44

alibek Хорошо, если провести асоциацию по маске *.* то я тогда по идее (логике) должен затереть асоциации других программ к их файлам. Что-бы было понятней я хочу сделать так, как например сделано в "Антивирусе Касперского" по правому клику появляется контекстное меню где есть пункт "Проверить на вирусы" (этот пункт еще и выделен сепараторами с двух сторон) при этом не портятся другие асоциации. Я уже понял что это надо делать в реестре, записать данные в реестр для меня не проблема, здесь уже встает вопрос что и куда записать что-бы получить нужный результат. Буду искать на сайтах посвещеных реестру. Но если кто и здесь знает как:-то напишите пожалуйста.

PS:Для справки у меня XP SP2
В реестре есть:HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\ далее идут как раз те программы которые и прописались в контекстном меню и их значения приблизительно такие {dd230880-495a-11d1-b064-008048ec2fc5}

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.05.2006 (Пн) 5:49

Glyckmen
Если ты всё же прочитаешь ссылку из FAQ, ты там найдёшь мудрую мысль о том, что хэндлеры расширений добавляются, а не перезаписываются.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Glyckmen
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 30.04.2006 (Вс) 15:32
Откуда: Санкт-Петербург

Сообщение Glyckmen » 02.05.2006 (Вт) 12:14

Все спасибо разобрался, пункты добавляются и убираются как мне надо, но тут посмотрев на WinRAR и Касперского и их контекстные меню то тут я понял что я сильно им проигрываю, их контекстное меню выделено сепараторами и еще со своей иконкой, полазив по инету я нашел что это реализовывается через так называемые COM-сервера которые выполнены как библиотека DLL которая подключена к контекстному меню (даже понял как подключить-регистрировать библиотеку), есть пример этой библиотеки на DELPHI, но с дельфином я не дружу, а на VB6 можно это реализовать или нет.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.05.2006 (Вт) 12:41

Поиск по форуму - это замечательно.
Это хорошо и правильно.
Им надо пользоваться! Да.
http://bbs.vbstreets.ru/viewtopic.php?p=57055#57055
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 138

    TopList