BoxedApp

BoxedApp: примеры использования, советы, приемы

Как внедрить Flash Player ActiveX с помощью BoxedApp SDK


Начнем.

Одна из важнейших фич SDK - это возможность внедрения ActiveX в приложение. BoxedAppSDK_RegisterCOMLibraryInVirtualRegistry регистрирует виртуальный файл в виртуальном реестре. Более точно, эта функция загружает указанный файл (LoadLibrary) и вызывает DllRegisterServer (экспортируемый из этой DLL). Все изменения, сделанные этой функцией, сохраняются в виртуальном реестре. . Системный реестр остается нетронутым.

После этого CoCreateInstance (и прочие функции такого рода) будут получать корректную информацию из системного реестра — такую, будто бы ActiveX действительно зарегистрирован в системе!

Внедрение Flash ActiveX:

1. Инициализация BoxedApp SDK:

BoxedAppSDK_Init();

2. Создаем виртуальный файл с Flash.ocx:

LPVOID pBuffer;
DWORD dwSize;

// LoadResourceHelper получает указатель на начало ресурса и его размер
LoadResourceHelper(
   MAKEINTRESOURCE(IDR_BIN_FLASH_OCX), 
   _T("BIN"), 
   pBuffer, 
   dwSize);

HANDLE hVirtualFile1 = 
   BoxedAppSDK_CreateVirtualFile(
      _T("C:\\Flash9e.ocx"), 
      GENERIC_READ, 
      FILE_SHARE_READ, 
      NULL, 
      CREATE_NEW, 
      0, 
      NULL);  

DWORD dwTemp; 
WriteFile(hVirtualFile1, pBuffer, dwSize, &dwTemp, NULL);

CloseHandle(hVirtualFile1);

3. Регистрируем COM библиотеку в виртуальном реестре:

BoxedAppSDK_RegisterCOMLibraryInVirtualRegistry(_T("C:\\Flash9e.ocx"));

Теперь, когда бы вы не создавали экземпляр Flash ActiveX, подсистема COM (CoCreateInstance) будет читать информацию из виртуального реестра и создавать ActiveX, используя виртуальную DLL.

В частности, используя этот метод вы можете создавать приложения, которые готовы работать без инсталляции (т.н. “portable applications”), даже если они используют ActiveX-ы или другие COM-объекты. Просто создавайте виртуальный файл с DLL-кой и вызывайте BoxedAppSDK_RegisterCOMLibraryInVirtualRegistry.


Related links:

  1. Загрузка примеров BoxedApp SDK
  2. Лучшее решение для работы с Flash ActiveX (внедрение также поддерживается)
  3. Функция BoxedAppSDK_RegisterCOMLibraryInVirtualRegistry






Написать комментарий

Вы должны залогиниться чтобы комментировать. Залогиниться