Главная страница
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.026 c
15-1195307639
@!!ex
2007-11-17 16:53
2007.12.16
Как настроить "локальный" интернет?


15-1195260333
Pain
2007-11-17 03:45
2007.12.16
Никто не пробовал работать с gmail.com через Аутлук Экспресс?


2-1195626418
Неместная
2007-11-21 09:26
2007.12.16
фукнкция обратная Chr


11-1181588619
=BuckLr=
2007-06-11 23:03
2007.12.16
Font background color


15-1195383515
@!!ex
2007-11-18 13:58
2007.12.16
Бесплатные аналоги FrutyLoops