在現有的.net compact framework中,無論是1.0、2.0還是3.5版本,都沒有直接擷取使用者通話記錄的接口,那麼,我們隻能自己封裝底層API來實作了。
改接口在phone.dll中,調用PhoneGetCallLogEntry方法會傳回一個通話記錄結構,在該結構中,包含号碼、姓名、通話開始時間、通話結束時間等資訊。在我們調用此API之前,首先要PhoneOpenCallLog打開通話記錄句柄,同時在操作結束後,要調用 PhoneCloseCallLog關閉句柄,廢話少說,看代碼。
[StructLayout(LayoutKind.Sequential)]
public struct CALLLOGENTRY
{
public UInt32 cbSize;
public UInt64 ftStartTime;
public UInt64 ftEndTime;
public short iom;
public bool fOutgoing;
public bool fConnected;
public bool fEnded;
public bool fRoam;
public short cidt;
public IntPtr pszNumber;
public IntPtr pszName;
public IntPtr pszNameType;
public IntPtr pszNote;
};
[DllImport("phone.dll", EntryPoint = "PhoneOpenCallLog", SetLastError = true)]
private static extern int PhoneOpenCallLog(ref IntPtr pHandle);
[DllImport("phone.dll", EntryPoint = "PhoneCloseCallLog", SetLastError = true)]
private static extern int PhoneCloseCallLog(IntPtr pHandle);
[DllImport("phone.dll", EntryPoint = "PhoneGetCallLogEntry", SetLastError = true)]
private static extern int PhoneGetCallLogEntry(IntPtr pHandke, ref CALLLOGENTRY pEntry);
//下面是測試代碼
/// <summary>
/// 擷取通話記錄
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
try
Cursor.Current = Cursors.WaitCursor;
IntPtr handle = IntPtr.Zero;
CALLLOGENTRY entry = new CALLLOGENTRY();
PhoneOpenCallLog(ref handle);
entry.cbSize = (uint)Marshal.SizeOf(entry);
if (handle != IntPtr.Zero)
listView.Items.Clear();
listView.Columns[0].Width = this.Width;
while (PhoneGetCallLogEntry(handle, ref entry) == 0)
string phoneNumber = Marshal.PtrToStringUni(entry.pszNumber);
string name = Marshal.PtrToStringUni(entry.pszName);
if (name == null)
name = string.Empty;
}
ListViewItem item = new ListViewItem(phoneNumber.Trim());
item.SubItems.Add(name.Trim());
listView.Items.Add(item);
PhoneCloseCallLog(handle);
else
int error = Marshal.GetLastWin32Error();
catch (Exception ep)
MessageBox.Show(ep.Message);
finally
Cursor.Current = Cursors.Default;
在windows mobile5.0和windows mobile6.0上測試通過。
本文轉自xyz_lmn51CTO部落格,原文連結:http://blog.51cto.com/xyzlmn/819933,如需轉載請自行聯系原作者