日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

从MS .NET CF版访问电话API(完整版) (转载)

發(fā)布時(shí)間:2023/12/19 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从MS .NET CF版访问电话API(完整版) (转载) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

以前查找了好些在.net CF框架上調(diào)用設(shè)備本地API函數(shù)讀取手機(jī)SIM卡的資料,但各種資料都少了些描述,特別是少了一些引用的結(jié)構(gòu)(struct),造成了資料中的原代碼不能直接運(yùn)行,讓很多學(xué)習(xí)的朋友遇到很多麻煩,花費(fèi)了多余的時(shí)間,走了一些彎路。 我也遇到了類似的問(wèn)題,通過(guò)補(bǔ)充了一些缺失的代碼后,使程序可以正常的讀取SIM卡了。      SIM 卡   Pocket PC Phone 的內(nèi)置電話功能使它成為移動(dòng)電話家族的重要成員,在創(chuàng)建新的連接應(yīng)用程序時(shí),可以利用該功能。與所有移動(dòng)電話一樣,Pocket PC 電話也需要用戶身份模塊 (SIM) 卡才能撥打電話(緊急電話除外,撥打緊急電話時(shí)無(wú)需 SIM 卡)。例如,連接應(yīng)用程序可以通過(guò)在啟動(dòng)連接之前檢查用戶的個(gè)人識(shí)別碼 (PIN) 代碼來(lái)利用 SIM 卡的安全功能。   SIM 卡可以存儲(chǔ)移動(dòng)電話的電話號(hào)碼以及提供此號(hào)碼的操作員的身份標(biāo)識(shí)。另外,它還可以存儲(chǔ)附加有姓名的電話號(hào)碼以及多條短消息服務(wù)的消息。SIM 卡不僅具有存儲(chǔ)器,還具有使卡可以進(jìn)行安全和加密處理的中央處理器。通常情況下,您需要使用 PIN 代碼“登錄”到 SIM 卡。   SIM 管理器 API   在 Pocket PC Phone 中,您可以使用一系列 Windows CE API 調(diào)用(統(tǒng)稱為 SIM 管理器)來(lái)訪問(wèn) SIM 卡上的信息。   會(huì)話以調(diào)用 SimInitialize 開(kāi)始,這將返回一個(gè) SIM 句柄,此后,在調(diào)用 SIM 管理器 API 函數(shù)時(shí)均需要此句柄。通過(guò)將此句柄傳遞給 SimDeinitialize 來(lái)終止會(huì)話。   使用 Compact Framework 調(diào)用 Windows API   使用 SDE (Smart Device Extensions) 和 Compact Framework,可以進(jìn)行 Microsoft? Windows? API 調(diào)用,例如使用 Interop(erability) 服務(wù)訪問(wèn) SIM 管理器 API。   SIM Anyplace 示例   該示例是使用 Microsoft Visual Studio? .NET、C#、SDE 和 .NET CF 創(chuàng)建的 Pocket PC Phone 的示例應(yīng)用程序。它展示了如何使用 SIM 管理器 API 訪問(wèn) SIM 卡。該應(yīng)用程序包含一個(gè)窗體:   此示例的用途僅限于通過(guò)敲擊“獲取 SIM 信息”按鈕從 SIM 卡獲取一般信息。但是,通過(guò)使用此示例的結(jié)構(gòu)可以將其用途擴(kuò)展至包含更多的 SIM 管理器 API 功能。   代碼演練   要使用 Compact Framework 的 Interop 服務(wù),需要添加以下代碼: using System.Runtime.InteropServices; 創(chuàng)建類 SIMWrap 來(lái)存儲(chǔ) Windows API 的原型,該示例需要以下原型: 、

?

代碼 public const int SIM_CAPSTYPE_ALL = 0x3F; // 所有聯(lián)系人
public const int SIM_PBSTORAGE_SIM = 0x10; //
public const int SIM_SMSSTORAGE_SIM = 0x2; //

[DllImport(
"cellcore.dll")]
public static extern int SimInitialize(uint dwFlags,
int lpfnCallBack, uint dwParam, ref int lphSim);

[DllImport(
"cellcore.dll")]
public static extern int SimGetPhonebookStatus(int hSim,
uint dwLocation, ref uint lpdwUsed, ref uint lpdwTotal);

[DllImport(
"cellcore.dll")]
public static extern int SimGetDevCaps(int hSim,
uint dwCapsType, ref SimCaps lpSimCaps);

[DllImport(
"cellcore.dll")]
public static extern int SimGetSmsStorageStatus(int hSim,
uint dwStorage, ref uint lpdwUsed, ref uint lpdwTotal);

[DllImport(
"cellcore.dll")]
public static extern int SimDeinitialize(int hSim);

[DllImport(
"cellcore.dll")]
public static extern int SimReadPhonebookEntry(int hSim, uint dwLocation, uint dwIndex, ref SIMPHONEBOOKENTRY entry);


[StructLayout(LayoutKind.Sequential)]
public struct SimCaps
{
public uint cbSize;
public uint dwParams;
public uint dwPBStorages;
public uint dwMinPBIndex;
public uint dwMaxPBIndex;
public uint dwMaxPBEAddressLength;
public uint dwMaxPBETextLength;
public uint dwLockFacilities;
public uint dwReadMsgStorages;
public uint dwWriteMsgStorages;
public uint dwNumLockingPwdLengths;
public SimLockingPwdLength rgLockingPwdLengths0;
public SimLockingPwdLength rgLockingPwdLengths1;
public SimLockingPwdLength rgLockingPwdLengths2;
public SimLockingPwdLength rgLockingPwdLengths3;
public SimLockingPwdLength rgLockingPwdLengths4;
public SimLockingPwdLength rgLockingPwdLengths5;
public SimLockingPwdLength rgLockingPwdLengths6;
public SimLockingPwdLength rgLockingPwdLengths7;
public SimLockingPwdLength rgLockingPwdLengths8;
public SimLockingPwdLength rgLockingPwdLengths9;
}



//很多文章都缺失的結(jié)構(gòu)

[StructLayout(LayoutKind.Sequential)]
public struct SimLockingPwdLength
{
public uint dwFacility;
public uint dwPasswordLength;
}



//很多文章都缺失的結(jié)構(gòu)

[StructLayout(LayoutKind.Sequential)]
public struct SIMPHONEBOOKENTRY
{
public uint cbSize; //
public uint dwParams; //
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string lpszAddress; // 聯(lián)系人電話
public uint dwAddressType; //
public uint dwNumPlan; //
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string lpszText; // 聯(lián)系人姓名
}





/// <summary>
/// 獲取SIM卡聯(lián)系人信息
/// </summary>
/// <returns></returns>
public static List<string[]> GetSIMContactList()
{
int hSim = 0;
List
<string[]> list = new List<string[]>();
try
{
int result = SimInitialize(0, 0, 0, ref hSim);
if (result != 0)
throw new Exception("SIM打卡失敗,請(qǐng)檢測(cè)SIM是否安裝!");
uint uiUsed = 0;
uint uiTotal = 0;
result
= SimGetPhonebookStatus(hSim, SIM_PBSTORAGE_SIM, ref uiUsed, ref uiTotal);


for (int i = 1; i <= uiUsed; i++)
{
SIMPHONEBOOKENTRY entry
= new SIMPHONEBOOKENTRY();
entry.cbSize
= (uint)Marshal.SizeOf(typeof(SIMPHONEBOOKENTRY));
result
= SimReadPhonebookEntry(hSim, SIM_PBSTORAGE_SIM, (uint)i, ref entry);
list.Add(
new string[2] { entry.lpszText.Trim(), entry.lpszAddress.Trim() });
}
return list;

}
catch
{
throw;
}
finally
{
SimDeinitialize(hSim);

}
}

?

?

聲明適當(dāng)時(shí),“獲取 SIM 信息”按鈕所表示的代碼如下所示: dataGrid1為列表控件

?

代碼 List<string[]> list = SIMWrap.GetSIMContactList();
DataTable dt
= new DataTable();
dt.Columns.Add(
new DataColumn("姓名", typeof(string)));
dt.Columns.Add(
new DataColumn("號(hào)碼", typeof(string)));


string[] str;
for(int i = 0; i < list.Count; i++)
{
str
= list[i];
DataRow dr
= dt.NewRow();
dr[
0] = str[0].ToString();
dr[
1] = str[1].ToString();
dt.Rows.Add(dr);

}


dataGrid1.DataSource
= dt;

?

?

小結(jié)   由于 Pocket PC Phone 是移動(dòng)電話家族的重要成員,因此在創(chuàng)建大型的連接應(yīng)用程序時(shí)可以利用其功能,例如 SIM 卡。使用 SIM 管理器 API、Compact Framework 的 Interop 服務(wù)以及 .NET 開(kāi)發(fā)環(huán)境,可以獲得實(shí)現(xiàn)這一功能的工具。

轉(zhuǎn)載于:https://www.cnblogs.com/Wolves/archive/2010/12/03/1895533.html

總結(jié)

以上是生活随笔為你收集整理的从MS .NET CF版访问电话API(完整版) (转载)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产又粗又长又黄的视频 | 久久久国产精品黄毛片 | 天堂av官网 | 久久精品日韩无码 | 日本三级欧美三级 | 在线不卡毛片 | 国产人人射 | 超碰97人人草 | 亚洲精品日本 | 干骚视频| av最新天| 国产网站免费在线观看 | 九九激情网| 国产av自拍一区 | 插插插干干干 | 欧美美女一区二区 | 蜜桃成人免费视频 | 麻豆精品久久久 | 综合久久av | 夜夜爽夜夜操 | 中文字幕第23页 | 名人明星三级videos | 国产一级大片在线观看 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 狠狠操狠狠摸 | 久热国产精品 | 午夜特级毛片 | 亚洲精品久久久久中文字幕二区 | 97在线观视频免费观看 | 免费av毛片 | 极品少妇xxxx | 五十路中出 | 欧美另类极品videosbest使用方法 | 665566综合网| 色偷偷亚洲 | 亚洲一区二区不卡视频 | 天天爽天天色 | 天天操综合 | 亚洲网站一区 | 成人精品视频一区二区三区尤物 | 精品国产一区二区在线 | 久操这里只有精品 | 影音先锋三级 | 日本xxxxxxxxx69 | 国产精久久久 | 国产又粗又猛又黄又爽无遮挡 | 午夜免费网址 | 四虎永久地址 | 日本狠狠爱 | 毛片9 | 亚洲国产成人精品久久 | 一区二区三区黄色录像 | 91九色视频| 国产丝袜一区二区三区 | 国产一二区视频 | 国产日韩片 | julia在线播放88mav | 成人欧美性 | 激情第四色 | 午夜免费视频观看 | 亚洲欧美一区二区视频 | 国产性70yerg老太 | 日日夜夜撸撸 | 黑人操亚洲女人 | 亚洲不卡中文字幕 | www.狠狠插 | 欧美aaa级片 | 奇米影视在线观看 | 九色91popny蝌蚪新疆 | 国产熟妇乱xxxxx大屁股网 | 日韩毛片在线观看 | 国产亲伦免费视频播放 | 91捆绑91紧缚调教91 | 久久久久久无码午夜精品直播 | 精品国产aⅴ一区二区三区东京热 | 日本欧美一级片 | 欧美大浪妇猛交饥渴大叫 | 国产乱淫av片 | 视频一区二区三区在线观看 | 18视频在线观看男男 | 麻豆成人精品国产免费 | 亚洲熟妇av日韩熟妇在线 | 少妇无套高潮一二三区 | 欧美黄色大片在线观看 | 日本美女一级片 | 国产精品视频自拍 | 精品一区二区久久久 | 欧美性猛交xxx乱大交3蜜桃 | 亚洲av毛片成人精品 | 亚洲国产剧情在线观看 | 在线播放波多野结衣 | 超能一家人电影免费喜剧在线观看 | 亚洲性色视频 | h毛片| 夜夜操夜夜爽 | 欧美成人a∨高清免费观看 国产精品999视频 | 拍摄av现场失控高潮数次 | 欧美一区二区日韩 | 九色视频在线观看 |