При запуске
NDemia CashMatic KioskBrowser программа открывает раздел системного реестра
Windows
HKEY_LOCAL_MACHINE\SOFTWARE\NDemia\CashMatic\Plugins
и перебирает все его подразделы.
В каждом подразделе ищется значение типа
REG_SZ с именем
CLSID
Если такое значение задано, то оно воспринимается как идентификатор COM-класса компонента расширения.
Например:
[HKEY_LOCAL_MACHINE\Software\NDemia\CashMatic\Control Plugins\My Plugin]
"CLSID"="{06D4C323-931E-4279-9C9F-E493A2834328}"
CLSID - это единственное зарезервированное имя для подраздела расширения, разработчик расширения может создавать в этом подразделе другие значения и подразделы.
Если значение
CLSID существует, то
NDemia CashMatic KioskBrowser
- создаёт объект класса CLSID
- запрашивает у этого объекта интерфейс ICashMaticPlugin
- вызывает метод ICashMaticPlugin::Init
- удаляет объект
на этом подключение расширения с точки зрения хост-приложения заканчивается.
Компонент расширения через метод Init получает ссылку
IDispatch-интерфейса объекта
CashMatic, и далее через неё может установить свои расширители в
CashMatic.Session и
CashMatic.Terminal. Эти расширители будут получать оповещения о различных предопределённых событиях, а также о пользовательских событиях, инициируемых веб-контентом.
В синтаксисе C++ интерфейс
ICashMaticPlugin определяется так:
class ICashMaticPlugin : public IDispatch
{
public:
virtual void CALLBACK Init(IDispatch* pCashMatic) = 0;
};
// {01288B75-B4EA-4d76-8322-8B5AC4E89995}
static const IID IID_ICashMaticPlugin = { 0x1288b75, 0xb4ea, 0x4d76,
{ 0x83, 0x22, 0x8b, 0x5a, 0xc4, 0xe8, 0x99, 0x95 } };
Интерфейсы
ICashMaticSession,
ICashMaticSessionExtender,
ICashMaticSessionExtender2 рассмотрены в описании объекта
CashMaticSession.
Интерфейсы
ICashMaticTerminal,
ICashMaticTerminalExtender,
ICashMaticTerminalExtender2 рассмотрены в описании объекта
CashMaticTerminal.