Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.16;
Скачать: CL | DM;

Вниз

Интеграция в Shell context-menu.   Найти похожие ветки 

 
TheEd   (2005-12-03 00:20) [0]

Господа мастера. Может не в ту тему попал, но вопрос по subj:
Писал прогу года 2 назад, всё работало чудно, в контекстном меню папок и дисков появлялись мои строчки (WinXP). Счас запускаю - на одних системах работает, на других - нет. Изменились API или что там ещё?

Подскажите плиз.

ps: желательно кратко и лаконично, т.е. с рабочим примером.


 
TheEd   (2006-03-08 01:47) [1]

Ну по другому спрошу:
Как интегрироваться в Shell?


 
YurikGL ©   (2006-03-08 15:58) [2]

http://offline.burik.ru/delphi/dw/add_ie_menu_item.html
http://delphimaster.net/view/10-1127095897/

Если более подробно, то яндекс+"контекстное меню delphi windows"


 
TheEd   (2006-03-09 17:51) [3]

спасибо, справился с глюками. Только непонятным отсался момент:
когда DLL оформляем с юнитом:
library SomeShellExtLib;
uses
 ComServ,
 SomeUnit; // Unit with all code to register shell ext menu
exports
 DllGetClassObject,
 DllCanUnloadNow,
 DllRegisterServer,
 DllUnregisterServer;
Begin
End.


всё работает, а когда так:

library SomeShellExtLib;
uses
 ComServ;
type
 TFolderContextMenu = class(TComObject, IContextMenu, IShellExtInit)
...
 end;
 TFolderContextMenuFactory = class(TComObjectFactory)
 public
   procedure UpdateRegistry(Register: Boolean); override;
 end;
//-----------------------------------------------------
procedure DLLEntryPoint(dwReason: DWORD); stdcall;
begin
 case dwReason of
   DLL_PROCESS_ATTACH:
   begin
     if not Initialized
       then DoInitialize; // This procedure with all code to register shell ext menu
   end;
   DLL_PROCESS_DETACH:
   begin
     if Initialized
       then DoFinalize;
   end;
 end;
end;
//-----------------------------------------------------
exports
 DllGetClassObject,
 DllCanUnloadNow,
 DllRegisterServer,
 DllUnregisterServer;
//-----------------------------------------------------
Begin
 if not assigned(DLLProc)
   then DLLProc := @DLLEntryPoint;
 DLLEntryPoint(DLL_PROCESS_ATTACH); // ***
End.


при регистрации DLL и попытке вызвать контекстное меню, секунд через 5 выскакивает ошибка (попытка чтения из памяти, которая не может быть Read).
Добавлю лишь что код одинаков и в 1 и во 2 примере, только вход инициируется в первом примере в initialization-секции юнита, а во втором - в ***;
Кто сталкивался, подскажите пожалуйста...



Страницы: 1 вся ветка

Текущий архив: 2007.12.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
15-1195090718
Riply
2007-11-15 04:38
2007.12.16
Разделы на CD/DVD - диске.


15-1195110077
БарЛог
2007-11-15 10:01
2007.12.16
Почему "ПУСК"?


2-1195715338
Parus
2007-11-22 10:08
2007.12.16
DNS cepвep


15-1195087762
СетьЕть
2007-11-15 03:49
2007.12.16
Как узнать русская у пользователя Виндос или нет?


2-1193993327
r.o.o.t
2007-11-02 11:48
2007.12.16
Почему такое бывает