Ну вот. Под конец второго рабочего дня я таки закончил двухдневную эпопею по изучению того, как создавать контекстное меню для проводника в Borland C++ Builder. Руководством к действию стала статья на АнтиЧате. В ней используется Си Билдер 7-й версии, а я пользуюсь до сих пор 6-й. То что этой IDE 9 лет, меня, честно говоря, мало смущает. Кристиан Гислер свой Total Commander пишет вообще во второй дельфе и ничего. Но это было лирическое отступление.
Начались мои проблемы с того, что в моём проекте не было файлов Main.h и Main.cpp о которых шла речь. Но, немного подумав, я решил править как сказано в статье файлы MyFirstContextMenuImpl.h и MyFirstContextMenuImpl.cpp. ВНЕЗАПНО я оказался прав =). По-вставляв код куда надо, я попытался собрать проект, но не тут-то было! Компилятор ругнулся на строку #include "ComServ.hpp", что, мол, файл не найден. Непродолжительное гугление показало, что я могу подключить к своему проекту паскалевский файл от делфи ComServ.pas. Найти его оказалось относительно просто. Подключив его к проекту, компилятор мне ругнулся, на строку {$I ComServ.inc}. Типа не могу найти такой файл. Исключение этой строки из файла порождало целый ворох ошибок. Поспрашивав в чате и у гугла я его не нашёл. Логичным выходом из ситуёвины было бы сразу скачать C++Builder 2007 и не париться, но раз уж я уже работал с паскалевскими файлами вместо изначально требуемого ComServ.hpp я решил скачать Делфи 2007. Когда я его скачал, выяснилось, что в ней нет такого файла. Окей, думаю, где наша не пропадала! И скачал с торрентов Codegear RAD Studio 2007 которая весит 1,5 ГБ. Всё бы ничего, но на работе у меня интернет не быстрый (порядка 2 мбит) да и канал занимать весь тоже нельзя. Скачав, я увидел не то, что ожидал и от того заподозрил что мне подкинули протрояненный дистрибутив. А именно увидел я инсталлер и кучу запароленных файлов *.7zip. Несмотря на это я запустил устаногвку в режиме Windows XP Mode, но потом прервал её. И наконец я сделал самый логичный шаг: скачал C++ Builder 2007. За сегодняшнее утро он скачался и я нашёл треклятый файл ComServ.hpp заинклудив его я откомпилил проект. Надо сказать, что в процессе переноса под Си Билдер 6 у меня возникла одна проблема: в куске кода который отвечает за регистрацию COM-сервера есть место где нужно указать GUID, и надо сказать, если бы я сейчас об этом не написал, то не подумал бы ещё раз проверить написанное в статье и, только что выполнив как там сказано, я получил другой GUID нежели я вводил в прошлый раз. Как ни печально, ничего не вышло. Я ввёл другой GUID, но основная проблема осталась таже: после регистрации полученной библиотеки в системе. Контекстное меню так и не появилось.
Продолжение следует…