C# получить номер телефона входящего звонка

Интеграция возможностей SpRecord в ваши приложения
Ответить
Coul92
Сообщения: 6
Зарегистрирован: 09 май 2018, 12:13

C# получить номер телефона входящего звонка

Сообщение Coul92 »

всем привет, есть стационарный телефон, подключенный через четырехканальный адаптер SpRecord AT4 к ПК по USB, как поймать момент входящего вызова и номер телефона входящего вызова? желательно на C#
Аватара пользователя
sannx
Администратор
Сообщения: 2306
Зарегистрирован: 02 ноя 2011, 14:00
Skype: sann-x
Контактная информация:

Re: C# получить номер телефона входящего звонка

Сообщение sannx »

Вам нужно использовать COM-объект. Документация и примеры (к сожалению, без С#) есть в SDK.
Coul92
Сообщения: 6
Зарегистрирован: 09 май 2018, 12:13

Re: C# получить номер телефона входящего звонка

Сообщение Coul92 »

я не нашел в SDK что-то, что может определить входящий номер телефона, может, этого функционала там вообще нет?
Аватара пользователя
sannx
Администратор
Сообщения: 2306
Зарегистрирован: 02 ноя 2011, 14:00
Skype: sann-x
Контактная информация:

Re: C# получить номер телефона входящего звонка

Сообщение sannx »

Есть событие о появлении АОНа: SPR_MSG_ANI_DETECT от интерфейса ISpRecordClientW и SPR_MSG_C_ANI_DETECT от ISpRecordChannelClientW.
Coul92
Сообщения: 6
Зарегистрирован: 09 май 2018, 12:13

Re: C# получить номер телефона входящего звонка

Сообщение Coul92 »

подскажите, пожалуйста, с чего начать? я нашел на Вашем форуме следующий код C#:

Код: Выделить всё

// get type of class SpRecordClientW
 Type SpRecordClientW = Type.GetTypeFromProgID("spsdksw.SpRecordClientW");

 // create instance of class SpRecordClientW
 object SpRecordClientWInstance = Activator.CreateInstance(SpRecordClientW);
Для того, чтобы данный код сработал, на машине должна быть запущена программа SpRecord?
И таким образом я получу экземпляр объекта, реализующего интерфейс SpRecordClientW?
Как подписаться на событие SPR_MSG_ANI_DETECT?
Аватара пользователя
sannx
Администратор
Сообщения: 2306
Зарегистрирован: 02 ноя 2011, 14:00
Skype: sann-x
Контактная информация:

Re: C# получить номер телефона входящего звонка

Сообщение sannx »

1) Программа SpRecord должна быть установлена на компе.
2) События можно мониторить в цикле через методы WaitMessage и PeekMessage
Coul92
Сообщения: 6
Зарегистрирован: 09 май 2018, 12:13

Re: C# получить номер телефона входящего звонка

Сообщение Coul92 »

Спасибо большое! Я так понимаю, мне нужно вызвать WaitMessage(-1), каким-то образом фильтровать все события и отлавливать только SPR_MSG_ANI_DETECT или SPR_MSG_C_ANI_DETECT, потом через PeekMessage вытаскивать информацию? И в этой информации я смогу получить номер входящего звонка?
Аватара пользователя
sannx
Администратор
Сообщения: 2306
Зарегистрирован: 02 ноя 2011, 14:00
Skype: sann-x
Контактная информация:

Re: C# получить номер телефона входящего звонка

Сообщение sannx »

Да, так.
Coul92
Сообщения: 6
Зарегистрирован: 09 май 2018, 12:13

Re: C# получить номер телефона входящего звонка

Сообщение Coul92 »

а в каком виде приходит информация? прошу прощения, я совсем не знаком с С++. как мне её обработать можно на C#? и еще, если у меня 4-канальный адаптер, то для того, чтобы получать уведомления от всех 4 каналов, мне лучше использовать событие SPR_MSG_C_ANI_DETECT?
Аватара пользователя
sannx
Администратор
Сообщения: 2306
Зарегистрирован: 02 ноя 2011, 14:00
Skype: sann-x
Контактная информация:

Re: C# получить номер телефона входящего звонка

Сообщение sannx »

В СДК вы найдете описание всех сообщений и их содержимое. Что вам лучше использовать - вам решать.
Coul92
Сообщения: 6
Зарегистрирован: 09 май 2018, 12:13

Re: C# получить номер телефона входящего звонка

Сообщение Coul92 »

spsdksw это библиотека spsdksw.dll? я пишу следующий код:

Код: Выделить всё

Type SpRecordClientW = Type.GetTypeFromProgID("spsdksw.ISpRecordChannelClientW");
и мой полученный объект SpRecordClientW равен null, т.е. пустой. На ПК запущена SpRecord Версия 3.100
Такое ощущение, будто эта библиотека spsdksw.dll не загружена в памяти
В редакторе реестра по пути HKEY_LOCAL_MACHINE\SOFTWARE\Classes есть такой ключ (на картинке)
Вложения
IMG_10052018_174221_0.jpg
IMG_10052018_174221_0.jpg (18.02 КБ) 9317 просмотров
Аватара пользователя
sannx
Администратор
Сообщения: 2306
Зарегистрирован: 02 ноя 2011, 14:00
Skype: sann-x
Контактная информация:

Re: C# получить номер телефона входящего звонка

Сообщение sannx »

Это обычный СОМ-объект. Для его инициализации смотрите общее описание по работе с СОМ-объектами на вашем языке. Более добавить не могу, т.к. нет опыта в C#
jurzer
Сообщения: 17
Зарегистрирован: 10 июл 2015, 10:11

Re: C# получить номер телефона входящего звонка

Сообщение jurzer »

Если еще актуально, напиши мне, у меня есть реализация на C#.
Аватара пользователя
sannx
Администратор
Сообщения: 2306
Зарегистрирован: 02 ноя 2011, 14:00
Skype: sann-x
Контактная информация:

Re: C# получить номер телефона входящего звонка

Сообщение sannx »

Это может понадобится другим. Выложите код здесь и/или на гитхабе, например.
Ответить