2011-05-12 54 views
1

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

要做这个转换,我必须使用C++函数lineTranslateAddress,但是从C#中。有没有人使用托管代码的这个功能,并可以提供一些样本或至少解释。

也许一些迹象表明如何马歇尔/ nmarshall最后一个字段

LPLINETRANSLATEOUTPUT lpTranslateOutput

我还要提到的是,应用程序是智能设备。

感谢,

回答

2

我用这个代码示例,它的工作原理

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

我已经与TAPI曾在C#几次,我会强烈建议使用一个运行时可调用包装(RCW),而不是使用平台调用。 C:\windows\system32\tapi3.dll可以作为项目引用添加,VS会自动生成一个互操作程序集,您可以使用它来处理类和函数。

这样,您就可以很轻松地调用lineTranslateAddress函数;通过ITAddressTranslation接口。

注意:即使你的TSP只与TAPI 2.X的规定,您还可以使用tapi3.dll功能(提供你只调用功能的TAPI 2支持的子集)

+0

这个工作也适用于智能设备?可能不像我从dll路径中看到的那样。 (我忘了在原文中提到它) – 2011-05-12 08:28:39

+0

不幸的是,类型库不能用于智能设备。 – 2011-05-12 08:37:30

+0

无论如何,感谢您的帮助和兴趣。 – 2011-05-12 08:41:46