C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 34 - Регистрация компонент RegSrv32 / ActiveX по шагам / Приложение

Шаг 34 - Регистрация компонент RegSrv32

Создавая элементы ActiveX рано или поздно станет вопрос о том как переносить эти компоненты на другой компьютер. Действительно собрав и скомпилировав элемент на своем компьютере мы автоматически его регистрируем. Есть два варианта. Первый - это создать REG файл и при переносе компонента вносить данные в реестр используя этот файл. Второй способ основан на том, что элемент ActiveX умеет сам себя регистрировать используя утилиту RegSrv32.exe. С ее помощью регистрируется элемент и удаляются сведения о регистрации очень просто.

Регистрация:

	
regsrv32 путь\имя_файла_елемента

Отмена регистрации:

regsrv32 /u  путь\имя_файла_елемента

Как это происходит ??? В элементе есть функция DllRegisterServer, которая и умеет регистрировать Ваш элемент. RegSrv32 вызывает эту функцию. Вы можете сами написать процедуру регистрации элемента. Алгоритм такой:

  1. используйте LoadLibrary API Windows, чтобы загрузить DLL
  2. используйте GetProcAddress, чтобы получить адрес функции DllRegisterServer
  3. вызовите функцию DllRegisterServer

А вот пример кода без обработок ошибок.

HINSTANCE hLib = LoadLibrary("My.Dll");
(FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, _T("DllRegisterServer"));
(*lpDllEntryPoint)();

Что представляет функция DllRegisterServer в элементе ActiveX ? Вот она:

////////////////////////////////////////////////
// DllRegisterServer - Adds entries to the system registry

STDAPI DllRegisterServer(void)
{
	AFX_MANAGE_STATE(_afxModuleAddrThis);

	if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
		return ResultFromScode(SELFREG_E_TYPELIB);

	if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
		return ResultFromScode(SELFREG_E_CLASS);

	return NOERROR;
}

//////////////////////////////////////////////////
// DllUnregisterServer - Removes entries from the system registry

STDAPI DllUnregisterServer(void)
{
	AFX_MANAGE_STATE(_afxModuleAddrThis);

	if (!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor))
		return ResultFromScode(SELFREG_E_TYPELIB);

	if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))
		return ResultFromScode(SELFREG_E_CLASS);

	return NOERROR;
}

За Вас ее пишет AppWizard.


| |
Автор Каев Артем.
[AD]