В C ++ вы можете использовать CTelephony
из etel3rdparty
. Используйте NotifyChange()
, чтобы подписаться на EVoiceLineStatusChange
события. В случае события EStatusRinging
вы можете позвонить по номеру GetCallInfo()
, чтобы получить информацию об удаленной стороне, включая номер телефона, а затем решить, отклонить ли вызов или позволить ему продолжать звонить.
Насколько я знаю, API CTelephony
не имеет прямого метода отклонения вызова, но вы можете достичь почти того же с помощью AnswerIncomingCall()
, за которым следует HangUp()
. Вашему исполняемому файлу потребуется возможность NetworkServices
.
Более хакерским способом отклонения вызова может быть использование RWsSession
для имитации нажатия красной клавиши (клавиша завершения): вызов SimulateRawEvent()
для отправки TRawEvent::EKeyDown
и EKeyUp
событий на EStdKeyNo
, с некоторыми задержка между событиями. В этом случае вашему исполняемому файлу также понадобится возможность SwEvent
.