Michael Dunn. Руководство полного идиота ... Часть I
От: Odi$$ey (перевод) Россия http://malgarr.blogspot.com/
Дата: 25.06.03 14:53
Оценка: 121 (7) +1
Статья :
Руководство полного идиота по написанию расширений оболочки — Часть I
Автор(ы): Michael Dunn
Дата: 17.04.2001


Авторы :
Odi$$ey (перевод)

Аннотация :
Первая статья из цикла. Общие сведения о расширениях оболочки Windows. Создание расширения, добавляющего свой пункт в контекстное меню для txt файлов, общие вопросы отладки и регистрации расширений.
Re: Michael Dunn. Руководство полного идиота ... Часть I
От: Аноним  
Дата: 13.05.04 16:49
Оценка:
А не подскажите как все это сделать в VS.NET
А то у меня не получается
в частности не могу понять куда он GUID переменную определил
Re[2]: Michael Dunn. Руководство полного идиота ... Часть I
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 14.05.04 02:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А не подскажите как все это сделать в VS.NET


точно также

А>А то у меня не получается


что именно?

А>в частности не могу понять куда он GUID переменную определил


может это — http://www.rsdn.ru/Forum/Message.aspx?mid=627319
Автор:
Дата: 04.05.04
поможет?
Re[3]: Michael Dunn. Руководство полного идиота ... Часть I
От: Аноним  
Дата: 15.05.04 18:46
Оценка:
Здравствуйте, Odi$$ey,
Нет я конечно только начинаю подходить к вопросам по ATL
но VS ругается типа переменные CLSID_SimpleShlExt,IIDISimpleShlExt,LIBID_SimpleExt не определены и
вообще после добавления Simple ATL Object в хедере не было

public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CSimpleShlExt, &CLSID_SimpleShlExt>,
public IDispatchImpl<ISimpleShlExt, &IID_ISimpleShlExt, &LIBID_SIMPLEEXTLib>


А в VS6 они есть
толи глюк то ли я объект не так добавляю???
Re[4]: Michael Dunn. Руководство полного идиота ... Часть I
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 16.05.04 06:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>толи глюк то ли я объект не так добавляю???


что ты вообще-то пытаешься сделать? какая версия студии? на каком шаге и какой дословно облом?
Re[5]: Michael Dunn. Руководство полного идиота ... Часть I
От: Аноним  
Дата: 17.05.04 11:41
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

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


А>>толи глюк то ли я объект не так добавляю???


OE>что ты вообще-то пытаешься сделать? какая версия студии? на каком шаге и какой дословно облом?


В данный момент в командировке и неимею возможности доступа к исходникам не имею
но по памяти VS7.0
строки не добавляет при подключении Simple ATL object
если добавить руками то облом происходит при компиляции
Re[6]: Michael Dunn. Руководство полного идиота ... Часть I
От: falcon8 Россия  
Дата: 31.05.04 19:00
Оценка:
Я вернулся с командировки но ответа не вижу а жаль проблема таже
Re[7]: Michael Dunn. Руководство полного идиота ... Часть I
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 01.06.04 02:49
Оценка:
Здравствуйте, falcon8, Вы писали:

F>Я вернулся с командировки но ответа не вижу а жаль проблема таже


>что ты вообще-то пытаешься сделать _по_шагам_? какая версия студии? на каком шаге и какой _дословно_ облом?
Re[8]: Michael Dunn. Руководство полного идиота ... Часть I
От: falcon8 Россия  
Дата: 01.06.04 20:24
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

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


F>>Я вернулся с командировки но ответа не вижу а жаль проблема таже


>>что ты вообще-то пытаешься сделать _по_шагам_? какая версия студии? на каком шаге и какой _дословно_ облом?

Ответ нашел я не тот проект выбирал при создании спасибо за внимание
Re: Michael Dunn. Руководство полного идиота ... Часть I
От: Аноним  
Дата: 02.06.04 06:09
Оценка:
OEП>Первая статья из цикла. Общие сведения о расширениях оболочки Windows. Создание расширения, добавляющего свой пункт в контекстное меню для txt файлов, общие вопросы отладки и регистрации расширений.

А добавить закладку на страницу свойств как?
Re[2]: Michael Dunn. Руководство полного идиота ... Часть I
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 02.06.04 06:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А добавить закладку на страницу свойств как?


http://www.rsdn.ru/article/winshell/shlext5.xml
Автор(ы): Michael Dunn
Дата: 15.08.2001
Re[9]: Michael Dunn. Руководство полного идиота ... Часть I
От: falcon8 Россия  
Дата: 02.06.04 10:24
Оценка:
появилась новая непонятка
error C2787: 'IContextMenu' : no GUID has been associated with this object
error C2440: 'initializing' : cannot convert from 'DWORD_PTR' to 'const IID *'
error C2078: too many initializers

Подскажите!
Re[10]: Michael Dunn. Руководство полного идиота ... Часть I
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 02.06.04 10:54
Оценка:
Здравствуйте, falcon8, Вы писали:

F>появилась новая непонятка

F> error C2787: 'IContextMenu' : no GUID has been associated with this object
F> error C2440: 'initializing' : cannot convert from 'DWORD_PTR' to 'const IID *'
F> error C2078: too many initializers

F>Подскажите!


http://www.rsdn.ru/search/?q='IContextMenu'%20:%20no%20GUID%20has%20been%20associated%20with%20this%20object&amp;mode=rank
Re[3]: Michael Dunn. Руководство полного идиота ... Часть I
От: Аноним  
Дата: 07.06.04 17:39
Оценка:
А>>А добавить закладку на страницу свойств как?

OE>http://www.rsdn.ru/article/winshell/shlext5.xml
Автор(ы): Michael Dunn
Дата: 15.08.2001


А можно ли туда прикрутить WTL? В частности, не делать страницу "вручную", за запихнуть ее в CPropertyPageImpl-derived класс? У меня что-то не получается...
Re[4]: Michael Dunn. Руководство полного идиота ... Часть I
От: Аноним  
Дата: 08.06.04 09:06
Оценка:
А>А можно ли туда прикрутить WTL? В частности, не делать страницу "вручную", за запихнуть ее в CPropertyPageImpl-derived класс? У меня что-то не получается...

Все получилось, сам дурак... Теперь другой вопрос: не работает счетчик ссылок. Если открыть два окна свойств, а потом одно закрыть, то второе тоже падает вместе с проводником. Самое печальное, что я не догадался проверить, работает ли это в исходном примере (без WTL)
Re: Michael Dunn. Руководство полного идиота ... Часть I
От: kensin  
Дата: 06.05.05 16:21
Оценка:
Пытаюсь создать то же самое на VS.NET 2003:
Всё сделал(по шагам), всё закомпилилось(не сразу , но не работает.
В реестр всё добавлено, dll'ка зарегистрирована, но не появляется доп пункт в контекстное меню меню.
При дебаге ни в какой метод ни заходит.
Проект из статьи компилится и работает ок(в дебаге тоже всё ок).

Быть может я не то создал(а то визарды с VS6 поменялись)?
VC++ projects -> ATL Project(убираю галку attributed)
Add Class -> ATL Simple Object -> Ввожу имя и ничего не меняю.
Далее делаю все как в статье (IShellExtInit, IContextMenu), вообщем 2 пальцевый метод программирования(ctrl + C, ctrl + V), только соответственно заменяя переменные.

Отличия от исходника с статьи:
— создается 2 rgs файла
(в 1 всё ок определяется(CLSID..) + плюс добавляю к нему то что должно быть в txtfile, в другом:
... val AppID = s '%APPID%' ... — по дефалту создается ещё перед добавления ATL Simple OBject)
— Методы DllMain, DllRegisterServer... содержат по паре строчек типа
HRESULT hr = _AtlModule.DllRegisterServer();
return hr;
(Для DllregisterServer)

DllMain... — руками пишутся, или так создаются?

Если кто писал это на VS.NET 2003, не могли бы подсказать .
Re: Michael Dunn. Руководство полного идиота ... Часть I
От: Kiros  
Дата: 20.11.06 15:20
Оценка:
А как заставить контекстное меню отрабатывать при щелчке не на файле, а на папке?
Re[2]: Michael Dunn. Руководство полного идиота ... Часть I
От: Shasoft Россия http://shasoft.com
Дата: 16.09.08 15:47
Оценка:
Делал расширение оболочки на IContextMenu.
Пример из статьи сразу скомпилировался. Однако при создании своего COM объекта (VS2005) два дня не получалось повторить эффект демо-проекта.
Долго сравнивал код свой и из демки. В конце концов нашел различия.
У меня в созданном rgs файле отсутствовала строка, выделенная жирным шрифтом. Только после её добавления всё заработало.
            InprocServer32 = s '%MODULE%'
            {
                val ThreadingModel = s 'Apartment'
            }


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