ActiveX регистрация, метод обхода

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 18.10.2005 (Вт) 14:21

Код: Выделить всё
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;




Дельфийский код, который позваляет использовать ActiveX DLL без регистрации в реестре.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 18.10.2005 (Вт) 17:57

Не любая ActiveX DLL сможет работать без регистрации в реестре.
VB-шная - не сможет в том случае, если между классами есть зависимости (т.е. практически любая ActiveX DLL с >1 классом).
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 18.10.2005 (Вт) 18:01

GM писал(а):Вот у меня небольшой вопрос, восстановлять права доступа после каждого изменения в памяти, или это не имеет значения?

Не имеет значения. Можно вообще не восстанавливать.
После первой разблокировки, все остальные вызовы VirtualProtect уже, по сути, ничего в памяти не меняют.
Изображение

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 19.10.2005 (Ср) 11:03

Не любая ActiveX DLL сможет работать без регистрации в реестре.
VB-шная - не сможет в том случае, если между классами есть зависимости (т.е. практически любая ActiveX DLL с >1 классом).


А разве нельзя сразу несколько классов в память загрузить? СOM это ведь только "интерфейс" взаимодействия...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.10.2005 (Ср) 13:03

jangle писал(а):
Не любая ActiveX DLL сможет работать без регистрации в реестре.
VB-шная - не сможет в том случае, если между классами есть зависимости (т.е. практически любая ActiveX DLL с >1 классом).


А разве нельзя сразу несколько классов в память загрузить? СOM это ведь только "интерфейс" взаимодействия...

VB-классы друг с другом, как ни странно, взаимодействуют тоже через COM.
И если эти классы не зарегистрированы, то взаимодействие срывается.
Изображение

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 19.10.2005 (Ср) 14:16

Вроде бы поставил хук на реестр. Теперь вопрос, что нужно перенаправлять и куда? Как понимаю, с HKCR\* в HKCU\Software\Classes.
الفيجوال بيسك الرابح

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.10.2005 (Ср) 17:55

Угу, точно.
Изображение

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList