NDemia Новости CashMatic Рубли Форум

Подключение прикладных клиентских расширений


При запуске 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
  1. создаёт объект класса CLSID
  2. запрашивает у этого объекта интерфейс ICashMaticPlugin
  3. вызывает метод ICashMaticPlugin::Init
  4. удаляет объект


на этом подключение расширения с точки зрения хост-приложения заканчивается.
Компонент расширения через метод 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.
тел. +7-(916)-129-26-84 (C)opyright: NDemia Ltd, Москва, 2006..2024 ndemia@ndemia.com