1

我有一个以编程方式调用不同号码的应用程序。该应用程序是用 c#(托管)编写的,我将 pInvoke 用于 c++ TAPI 函数。一切正常,除了我需要将电话号码转换为可拨号格式。

要进行此转换,我必须使用 C++ 函数lineTranslateAddress,但来自 C#。有没有人从托管代码中使用过这个功能,可以给我一些示例或至少解释。

也许一些迹象表明如何编组/ nmarshall最后一个字段

LPLINETRANSLATEOUTPUT lpTranslateOutput

我还应该提到该应用程序适用于智能设备。

谢谢,

4

2 回答 2

2

我使用了这个代码示例,它可以工作

[DllImport("coredll", SetLastError = true)]
extern public static int lineTranslateAddress(
    IntPtr hLineApp,
    int dwDeviceID,
    int dwAPIVersion,
    string lpszAddressIn,
    int dwCard,
    int dwTranslateOptions,
    byte[] lpTranslateOutput
    );
于 2011-05-24T12:43:47.050 回答
0

我曾多次在 C# 中使用 TAPI,我强烈建议使用 Runtime Callable Wrapper (RCW) 而不是使用 Platform Invoke。C:\windows\system32\tapi3.dll可以添加为项目引用,VS 将自动生成一个互操作程序集,您可以使用它来处理类和函数。

这样,您将能够lineTranslateAddress非常轻松地调用该函数;通过ITAddressTranslation界面。

注意:即使您的 TSP 仅符合 TAPI 2.x,您仍然可以使用其中的功能tapi3.dll(前提是您只调用 TAPI 2 支持的功能子集)

于 2011-05-12T08:26:36.750 回答