Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];

Вниз

Интеграция в 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 вся ветка

Форум: "Corba";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.043 c
4-1180166777
Ganda
2007-05-26 12:06
2007.12.16
Подключить 32 битную библиотеку к 16 битному приложению.


15-1194872068
XRMiPO
2007-11-12 15:54
2007.12.16
Копирование самого себя


8-1171049042
Pa5ha
2007-02-09 22:24
2007.12.16
Скины


15-1195221671
antonn
2007-11-16 17:01
2007.12.16
мануалы по regexp в mysql


2-1195297585
Kolan
2007-11-17 14:06
2007.12.16
Как разобраться как работает механизм ShortCut у TAction?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский