![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
com без регистрации в реестре [Delphi, Windows]
Oleg_ © (2005-07-25 17:27:00)Подскажите, реально ли задействовать com без реесстра. У меня есть dll и clsid. А вот доступа к соответствующим ветвям реестра нет.
Спасибо
Opuhshii (2005-08-12 11:33:00) [1]"А вот доступа к соответствующим ветвям реестра нет"
isasa (2005-08-12 11:31:00) [2]зачем так извращаться. Или COM, или обычные библиотеки.
А если вызвать
ADllGetClassObject:=GetProcAddress(DllHandle,'DllRegisterServer');
OleCheck(ADllGetClassObject(...));
то получим, те-же яйца, только вид сбоку.
Opuhshii (2005-08-12 00:47:00) [3]ещё как можно!
реестр нужен для того чтоб определить местонахождение сервера,
а зная его нахождение можно руками его загрузить, получить нужную фабрику и наплодить объектов.
типа так,..
procedure TForm1.Button1Click(Sender: TObject);
var
ClassFactory:IClassFactory2;
DllHandle:THandle;
ADllGetClassObject:TDllGetClassObject;
AObject:INoRegister;
begin
DllHandle:=LoadLibrary('C:\Program Files\Borland\Delphi6\Projects\DelphiMaster\ComHelo2\noregister.dll');
ADllGetClassObject:=GetProcAddress(DllHandle,'DllGetClassObject');
OleCheck(ADllGetClassObject(CLASS_NoRegister_,IClassFactory2,ClassFactory));
ClassFactory.CreateInstance(nil,INoRegister,AObject);
OleCheck(AObject.Method1);
end;
+ нужно добавить выгрузку DllHandle в нужный момент,..
DllCanUnloadNow
сервер создавался Internal т.е. без регистрации в реестре.
initialization
TTypedComObjectFactory.Create(ComServer, TNoRegister, Class_NoRegister,
ciInternal, tmApartment);
итог:доступ к соответствующим ветвям реестра ваще нафиг никому на локальной машине не нужен 8)
just_me (2005-07-25 19:06:00) [4]"без реесстра" не реально, исполняющей среде СОМ нужно из него извлечь необходимые для загрузки СОМ-сервера данные.
Что же касается "доступа к соответствующим ветвям реестра", то они нужны не вам, среде СОМ