2011-05-12 55 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