Главная страница
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.016 c
2-1195630538
Neket
2007-11-21 10:35
2007.12.16
Округление


15-1195152050
TUser
2007-11-15 21:40
2007.12.16
Процессоры


4-1179613962
ILUT
2007-05-20 02:32
2007.12.16
Запись на диск


2-1195632186
Шмелъ
2007-11-21 11:03
2007.12.16
HTML SELECT Object


15-1195046851
vasIZmax
2007-11-14 16:27
2007.12.16
Оптимизация по Парето (имхо, неэффективно решается)