Компоненты расширения могут обращаться к объекту
CashMaticTerminal через интерфейс ICashMaticTerminal (компонент расширения при инциализации получает
IDispatch* на
CashMatic, из него можно получить свойство
Terminal (
dispid 104) как
IDispatch*, а его значение уже преобразовать в ICashMaticTerminal*).
В синтаксисе C++ интерфейс
ICashMaticTerminal определяется так:
class ICashMaticTerminal : public IDispatch
{
public:
virtual HRESULT CALLBACK Name(BSTR* pRetVal) = 0;
virtual HRESULT CALLBACK
ServiceVersionString(BSTR* pRetVal) = 0;
virtual void CALLBACK Event(BSTR EventName) = 0;
virtual HRESULT CALLBACK Failure(BOOL* pRetVal) = 0;
virtual void CALLBACK SetFailState(
BSTR FailName,
BOOL State
) = 0;
virtual unsigned CALLBACK SetExtender(
ICashMaticTerminalExtender* pTerminalExtender
) = 0;
virtual BOOL CALLBACK RemoveExtender(unsigned) = 0;
};
// {01F1C52B-B434-4c9c-AFC9-3474EFF712E7}
static const IID IID_ICashMaticTerminal = { 0x1f1c52b, 0xb434, 0x4c9c,
{ 0xaf, 0xc9, 0x34, 0x74, 0xef, 0xf7, 0x12, 0xe7 } };
Методы
Name,
ServiceVersionString,
Event,
Failure,
SetFailState - см. описание объекта
CashMaticTerminal.
- Метод
unsigned CALLBACK SetExtender(ICashMaticTerminalExtender*);
- устанавливает компонент расширения для CashMatic.Terminal (возвращается ненулевой идентификатор компонента, который впоследствии может использоваться для его удаления через метод RemoveExtender). Компонент расширения остаётся установленным до завершения работы программы NDemia CashMatic KioskBrowser или до явного вызова RemoveExtender.
Совместимость: в версиях NDemia CashMatic ранее 2.6.0 может возвращаться нулевой идентификатор в штатных условиях, т.е. нулевой идентификатор не должен рассматриваться как признак ошибки.
- После вызова вызывающий код может освободить ссылку на интерфейс ICashMaticTerminalExtender.
Совместимость: в версиях NDemia CashMatic ранее 2.7.0 объект CashMaticTerminal не добавляет собственную ссылку на компонент расширения, поэтому нельзя освобождать ссылку после вызова SetExtender.
- Метод
BOOL CALLBACK RemoveExtender(unsigned);
- удаляет компонент расширения (в параметре нужно указать идентификатор компонента, возвращённый методом SetExtender)
- Возвращает TRUE в случае успеха, FALSE в случае, если компонент расширения с таким идентификатором не установлен.
Совместимость: не рекомендуется использовать в версиях NDemia CashMatic ранее 2.7.2 при одновременной работе нескольких компонентов расширения (во многих случаях может приводить к аварийному завершению программы).