forum.bitel.ru
http://forum.bitel.ru/

Как получить данные (структура) из COM-объекта
http://forum.bitel.ru/viewtopic.php?f=19&t=9729
Страница 1 из 1

Автор:  Lesto [ 18 сен 2014, 11:01 ]
Заголовок сообщения:  Как получить данные (структура) из COM-объекта

Доброго времени суток.
Проблема не связана с биллингом, скорее вопрос по Яве.
Писал на форумах, друзьям, коллегам - никто не может помочь, Вы последняя надежда :)
Суть:
Есть у COMа метод:
Код:
// код С++
long PeekMessage(VARIANT* Msg);

Описание из документации:
Цитата:
Параметры
Msg
Указатель на структуру VARIANT, в которую будет помещено сообщение. Эта структура будет иметь тип массива байт (VT_ARRAY|VT_UI1).

мне нужно поймать сообщение: SPR_MSG_C_ANI_DETECT, и структуру: CHANNELMSGPHONENUMBER
код структуры из документации:
Код:
// код С++
typedef struct _CHANNELMSGPHONENUMBER {
  MSGHEADER mh;
  wchar_t cbPhoneNumber[MAX_PHONE_NUMBER_CHARS];
  wchar_t cbSubPhoneNumber[MAX_SUBPHONE_NUMBER_CHARS];
} CHANNELMSGPHONENUMBER, *PCHANNELMSGPHONENUMBER, *LPCHANNELMSGPHONENUMBER;

еще немного документации:
Цитата:
Для чтения сообщений используйте метод PeekMessage интерфейсов ISpRecordClientW и ISpRecordChannelClientW. Сообщение возвращается в структуре VARIANT, данные которой записаны в виде массива байт (VT_ARRAY|VT_UI1). Чтобы получить доступ к сообщению получите указатель на данные сохраненные в массиве с помощью функции VarArrayLock в Delphi и C++ Builder или функции SafeArrayAccessData в Microsoft Visual C++, предавая ей в качестве первого параметра поле Msg.parray. Этот указатель и будет являться указателем на структуру сообщения. Любое сообщение начинается с заголовка имеющего структуру MSGHEADER.

для подключения к COM использую JACOB.
Попытался сделать так:
Код:
if ( Dispatch.call(aXChannel, "WaitMessage", 10000) == (int)SPR_S_OK )
{
    Variant v = new Variant(new Object(), true);
    Dispatch.call(aXChannel, "PeekMessage", v) ;
}

не стрельнуло.

сейчас копаю в сторону JNK...

Автор:  dimOn [ 18 сен 2014, 13:00 ]
Заголовок сообщения:  Re: Как получить данные (структура) из COM-объекта

а почему не стрельнуло? не вызывается вообще или что?
я с помощью JACOB делал что-то подобное, вроде работало всё

Автор:  Lesto [ 19 сен 2014, 10:05 ]
Заголовок сообщения:  Re: Как получить данные (структура) из COM-объекта

просто я получил структуру в виде класса Объект. и не понял что дальше с ним делать... :)

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/