lineTranslateAddress c на управляемый c#

#c# #c #pinvoke #telephony #tapi

#c# #c #pinvoke #телефония #tapi

Вопрос:

У меня есть приложение, которое программно выполняет вызовы на разные номера. Приложение написано на c # (управляемом), и я использую PInvoke для функций c TAPI. Все работает нормально, за исключением того факта, что мне нужно преобразовать номер телефона в формат, доступный для набора номера.

Чтобы выполнить это преобразование, я должен использовать функцию C lineTranslateAddress, но из C #. Кто-нибудь использовал эту функцию из управляемого кода и может предоставить мне несколько примеров или хотя бы объяснений.

Может быть, какие-то указания на то, как маршалировать / nmarshall последнее поле

LPLINETRANSLATEOUTPUT lpTranslateOutput

Я должен также упомянуть, что приложение предназначено для интеллектуального устройства.

Спасибо,

Ответ №1:

Я использовал этот пример кода, и он работает

 [DllImport("coredll", SetLastError = true)]
extern public static int lineTranslateAddress(
    IntPtr hLineApp,
    int dwDeviceID,
    int dwAPIVersion,
    string lpszAddressIn,
    int dwCard,
    int dwTranslateOptions,
    byte[] lpTranslateOutput
    );
  

Ответ №2:

Я несколько раз работал с TAPI в C #, и я бы настоятельно рекомендовал использовать вызываемую оболочку во время выполнения (RCW) вместо использования Platform Invoke. C:windowssystem32tapi3.dll может быть добавлен в качестве ссылки на проект, и VS автоматически сгенерирует сборку взаимодействия, которую вы можете использовать для работы с классами и функциями.

Таким образом, вы сможете вызывать lineTranslateAddress функцию с большой легкостью; через ITAddressTranslation интерфейс.

Примечание: Даже если ваш TSP соответствует только TAPI 2.x, вы все равно можете использовать функциональность в tapi3.dll (при условии, что вы вызываете только подмножество функций, поддерживаемых TAPI 2)

Комментарии:

1. работает ли это также для интеллектуальных устройств? вероятно, нет, как я могу видеть из пути к dll. (Я забыл упомянуть об этом в исходном сообщении)

2. К сожалению, библиотека типов не может использоваться с интеллектуальными устройствами.