如何區分當前設備是 Protect PC 還是 Protect PC Phone

        這兩天寫一個程序,其中想判斷當前PPC 是否 Protect PC Phone, 在MSDN 上找到一篇文章,應該有所幫助,只是尚未測試,先記下

如何維護用於 Pocket PC 和 Smartphone 的單一二進制文件 

      上面這片文章揭示的是如何通過程序來區分當前的系統是Protect PC 還是 SmartPhone, 如果是Protect PC ,那想進一步區分是普通的PPC 還是 Protect PC Phone 呢?

      在 Mobile 5.0 Protect PC SDK 中有個 "GetPhoneNumber" 的 sample, 在Protect PC模擬器,取出的號碼是空,在 Protect PC Phone模擬器上取出了號碼,原以爲可以把這個函數照搬拿來用,但在我的多普達P800上竟然也取出個空號,實在有點出乎意料。

       反覆跟蹤以後(只能不停的彈 MessageBox 在我的P800上),sample裏取號碼的那段代碼兼容性肯定有問題,他是判斷 LINEADDRESSCAPS.dwAddressSize 是否是0,不是0 就 (WCHAR*)(((BYTE*)placAddressCaps)+placAddressCaps->dwAddressOffset 就以這個爲PhoneNumber 了,但是在P800 上 LINEADDRESSCAPS.dwAddressSize 就是 0 !同樣 dwAddressOffset 也是 0 ,究竟怎樣才能取的號碼這個只能以後再研究了。

       其實只要 sample的前半段代碼就足夠用來判斷Protect PC 是否帶 Phone 了,只要判斷 LINEADDRESSCAPS+pLineDevCaps->dwLineNameOffset 是否是 CELLTSP_LINENAME_STRING ,是的話那就應該是有Phone 了 。 CELLTSP_LINENAME_STRING 在 tsp.h 中定義

#define CELLTSP_LINENAME_STRING (L"Cellular Line")

 代碼如下:

 

bool IsSupportPhone()
...

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章