Программа "Hello World" в виде ActiveX. Шаблон для создания ActiveX на C++ без ATL и MFC.

Обычно программа "Hello World" пишется одной из первых, при освоении языка программирования. В данном случае первым был разработан "движок" для создания элементов ActiveX в виде DLL (дополнительно поддерживающий интерфейс утилиты regsvr32.exe). Специальные пакеты типа ATL и MFC не используются.

Для демонстрации возможностей "движка", был создан ActiveX с ProgID "Hello.World".

Раскладка файлов по директориям:
HelloWorld (actvex.cpp, activex.dll, activex.bat)
  |                                              
  +-- common (classes.h, spisok.h, functions.h)
  |
  +-- objects (classfactory.h, object.h, methods.h, connect.h)
  |
  +-- Test (test.js)

Как сделать новый ActvieX?

  1. Вы должны изменить GUID и ProgID в файле activex.cpp:
    DEFINE_GUID( CLSID_obj, 0x9ACBF10A, 0xECE2, 0x4F01, 0x90, 
                 0x5B, 0x13, 0x84, 0xEC, 0x0F, 0x82, 0x06);
    const char *pDescription = "This is Hello World in ActiveX";
    const char *PROGID = "Hello.World";
  2. Вы должны написать собственные функции, реализующие методы и свойства объекта, в файле methods.h. Для примера:
    // HelloWorld(S,I)
    HRESULT HelloWorld(VARIANTARG* pArg, 
                       VARIANT FAR* pRes, WORD wFlags, HRESULT hr) 
    { if (FAILED(hr)) return hr;
    
      UINT uType = (UINT)pArg[0].n1.n2.n3.lVal;
      BSTRtoCHAR* pA = new BSTRtoCHAR(pArg[1].n1.n2.n3.bstrVal);
    
      pRes->n1.n2.vt = VT_I4; // The return value
      /* The MessageBox function creates, displays, and operates 
         a message box. The message box contains an 
         application-defined message and title, plus any 
         combination of predefined icons 
         and push buttons. */
    
      pRes->n1.n2.n3.lVal = MessageBox(NULL, pA->sz, 
                            "Hello World as ActiveX", uType);
      delete pA;
    
      return S_OK;}
  3. Установите соответствие между написанными Вами функциями и именами свойств и методов нового ActiveX в файле connect.h.
       pObj->AddItem("HelloWorld", "SI", HelloWorld);
       // ... next
    
    • "HelloWorld" - "Внешнее" имя метода (свойства) объекта
    • "SI" - маска типов для аргументов (S-строка, I-целое, B-булево) - проверяется при вызове метода объекта (может быть пустой)
    • HelloWorld - указатель на Вашу функцию (ее имя)
  4. Это все - можно компилировать Ваш ActiveX

Как зарегистрировать новый ActiveX на Вашем компьютере?

Перед использованием Вашего ActiveX, информация о нем должна быть внесена в реестр. Вы можете воспользоваться автоматически генерируемым интерфейсом для утилиты Regsvr32 (Regsvr32.exe).
Командная строка для регистрации ActiveX:
regsvr32.exe activex.dll
Удалить информацию из реестра:
regsvr32.exe /u activex.dll

Как проверить работу ActvieX?

Вы можете воспользоваьтся подсистемой Windows - WSH. Утилита wscript.exe в системном каталоге %System32% является интерпретатором скриптов JScript:
wscript.exe test.js
// JScript (javascript) test.js
var activex = new ActiveXObject("Hello.World");
var answer = activex.HelloWorld("Hello World !!!!", 50);
    WScript.Echo(answer);

Я использовал компилятор "Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland". Вы будете использвать мой шаблон? Да (Закачать)
canegor@rambler.ru..
ActiveX and JScript are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.