Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Расширение контекстного меню проводника Windows (https://forum.antichat.xyz/showthread.php?t=112344)

Dobby007 21.03.2009 19:22

Расширение контекстного меню проводника Windows
 
Сразу скажу, что работаю в c++ builder (хотя уже и сам жалею об этом) :)
Нужно добавить свой новый пункт(ы) в конт. меню проводника. WinRar, допустим, делает такую тему...
Прочитал в инете что для этого нужно использовать COM-объекты. Но я честно говоря ни разу с ними нече не пробывал делать и следовательно здесь тоже не знаю в какую сторону копать. Вообщем, может кто кинет ссылку на статейку (желательно по данной теме, а не обобщенный материал по COM или ACtiveX) или примерчик какой-нить? Нагуглил ссылку: http://www.rsdn.ru/article/winshell/shlext1.xml , но там, во-первых, нужен VCC, во-вторых, насколько я смог понять, материал немного подустарел...
P.S. Видел еще в инете, что можно проделать что-то подобное просто добавляя несколько записей в реестре. Но там сильно не раскрутишься т.е. submenu, иконки сделать не получится, плюс "слишком просто" че-то это для меня :D Что-то уже новое узнать хотелось бы...
Вообщем, помогите кто чем может. :rolleyes:

Algol 21.03.2009 21:21

Цитата:

Сообщение от Dobby007
P.S. Видел еще в инете, что можно проделать что-то подобное просто добавляя несколько записей в реестре. Но там сильно не раскрутишься т.е. submenu, иконки сделать не получится, плюс "слишком просто" че-то это для меня :D Что-то уже новое узнать хотелось бы...
Вообщем, помогите кто чем может. :rolleyes:

Именно через реестр это и делается, и иконки там сделать можно.

slesh 22.03.2009 00:35

Вообще есть очень хороший пример этого для Delphi
От дельфы до билдера не далеко, так что быстро сможешь переписать.
Описано всё тут:
http://delphiworld.narod.ru/base/add_ie_menu_item.html
или как вариант - запроса в поисковик: "Пример добавления пункта в контекстное меню Windows Explorer"

Dobby007 22.03.2009 16:46

Цитата:

Сообщение от slesh
Вообще есть очень хороший пример этого для Delphi
От дельфы до билдера не далеко, так что быстро сможешь переписать.
Описано всё тут:
http://delphiworld.narod.ru/base/add_ie_menu_item.html
или как вариант - запроса в поисковик: "Пример добавления пункта в контекстное меню Windows Explorer"

Спс за линк. +1...
Тут начал уже переводить код. Не так уж и просто оказалось заниматься этим. Три функции пока только портанул... Вообщем такой вопросец. Никто не подскажет как такое можно "перевести" в c++?
Код:

type
  TContextMenuFactory = class(TComObjectFactory)
  public
  .................
  override;
  end;

  TContextMenu = class(TComObject, IShellExtInit, IContextMenu)
  ..................
  end;

Пытался сделать как-то так:
Код:

class TContextMenuFactory : public TComObjectFactory
{
        public:
        void recount();
};

Но компилятор ругается: [BCC32 Error] Main.cpp(16): E2029 'TComObjectFactory' must be a previously defined class or struct

slesh 22.03.2009 21:13

точно не помню, но по аналогии форма в билдере делается. вот и смотри как описывается класс формы, так и опиши этот )

Dobby007 22.03.2009 23:18

Цитата:

Сообщение от slesh
точно не помню, но по аналогии форма в билдере делается. вот и смотри как описывается класс формы, так и опиши этот )

Ну так я по аналогии как раз с формой и описывал:
Цитата:

class TContextMenuFactory : public TComObjectFactory
{
public:
void recount();
};

Но компилятор ругается: [BCC32 Error] Main.cpp(16): E2029 'TComObjectFactory' must be a previously defined class or struct
:(

slesh 23.03.2009 00:08

В том примере юниты поключались, ты их подключи и в своём коде

slesh 23.03.2009 00:10

TComObjectFactory описан в ComObj

Dobby007 23.03.2009 20:21

Цитата:

Сообщение от slesh
В том примере юниты поключались, ты их подключи и в своём коде

Да я в принципе практически сразу, как начал портировать, подключил все модули, которые были в том коде.
Код:

#include <vcl.h>
#include <windows.h>
#include <ComServ.hpp>

#include <ComObj.hpp>

#include <ActiveX.hpp>
#include <ShlObj.h>
#include <ShlObj.hpp>
#include <Menus.hpp>
#include <ShellAPI.hpp>
#include <SysUtils.hpp>
#include <registry.hpp>
#pragma hdrstop

Цитата:

Сообщение от slesh
TComObjectFactory описан в ComObj

Это в дельфях, а билдере инклуд ComObj.h как видно не к чему не ведет... :confused: :confused: :confused:

Dobby007 24.03.2009 16:21

это всеж-таки случилось... =))
 
Все. Разобрался. Все работает безотказно.
P.S. Как будет время напишу ФАК или статейку по этому делу... Т.к. думаю, что не у одного меня была такая проблема...

Добавлено через 4 дня :) :
Ну вот... Как обещал: ;)
http://forum.antichat.ru/showthread.php?p=1194736#post1194736


Время: 14:01