zoukankan      html  css  js  c++  java
  • Windows Mobile获取通话记录 C#

    Windows Mobile获取通话记录 C# 文章作者:alalmn文章作者:[E.S.T] alalmn 信息来源:邪恶八进制信息安全团队(www.eviloctal.com)飞龙 QQ316118740 飞龙 BLOG http://hi.baidu.com/alalmn 在现有的.net compact framework中,无论是1.0、2.0还是3.5版本,都没有直接获取用户通话记录的接口,那么,我们只能自己封装底层API来实现了。该接口在phone.dll中,调用PhoneGetCallLogEntry方法会返回一个通话记录结构,在该结构中,包含号码、姓名、通话开始时间、通话结束时间等信息。在我们调用此API之前,首先要PhoneOpenCallLog打开通话记录句柄,同时在操作结束后,要调用PhoneCloseCallLog关闭句柄,废话少说,看代码。

    代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;


    using System.Runtime.InteropServices;
    using Microsoft.WindowsMobile.PocketOutlook;

    namespace _234
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }


    [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)] //首先要PhoneOpenCallLog打开通话记录句柄
    private static extern int PhoneOpenCallLog(ref IntPtr pHandle);


    [DllImport(
    "phone.dll", EntryPoint = "PhoneCloseCallLog", SetLastError = true)] //要调用PhoneCloseCallLog关闭句柄
    private static extern int PhoneCloseCallLog(IntPtr pHandle);


    [DllImport(
    "phone.dll", EntryPoint = "PhoneGetCallLogEntry", SetLastError = true)]
    private static extern int PhoneGetCallLogEntry(IntPtr pHandke, ref CALLLOGENTRY pEntry);
    //用PhoneGetCallLogEntry方法会返回一个通话记录结构,在该结构中,包含号码、姓名、通话开始时间、通话结束时间等信息。


    private void button1_Click(object sender, EventArgs e)
    {
    string CallInfo = "";

    try
    {
    IntPtr handle
    = IntPtr.Zero; //句柄

    CALLLOGENTRY entry
    = new CALLLOGENTRY();
    PhoneOpenCallLog(
    ref handle); //首先要PhoneOpenCallLog打开通话记录句柄
    entry.cbSize = (uint)Marshal.SizeOf(entry); //返回类的非托管大小

    if (handle != IntPtr.Zero)
    {
    while (PhoneGetCallLogEntry(handle, ref entry) == 0) //获取通话记录
    { //Marshal.PtrToStringUni 复制指定数目的字符
    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);
    //MessageBox.Show("1111111");
    //MessageBox.Show(CallInfo.Substring(0, 140));
    textBox1.Text = CallInfo;
    MessageBox.Show(
    "字符数:"+CallInfo.Length );
    //Microsoft.WindowsMobile.PocketOutlook.SmsMessage sms = new SmsMessage("151608XXXXXX", CallInfo.Substring(0, 140));
    //sms.Send();
    }
    else
    {
    int error = Marshal.GetLastWin32Error();
    }
    }
    catch (Exception ep)
    {
    }
    finally
    {
    }
    }

    private void button2_Click(object sender, EventArgs e)
    {
    Microsoft.WindowsMobile.PocketOutlook.SmsMessage sms
    = new SmsMessage(textBox3.Text, textBox2.Text); //号码 内容
    sms.Send();
    }

    //private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
    //{
    //}
    }
    }

    在windows mobile5.0和windows mobile6.0上测试通过。

    转载自:http://hi.baidu.com/alalmn/blog/item/58188dd398367439970a1659.html

  • 相关阅读:
    Windows JScript 在 游览器 中运行 调试 Shell 文件系统
    autohotkey 符号链接 软连接 symbolink
    软链接 硬链接 测试
    SolidWorks 修改 基准面 标准坐标系
    手机 路径 WebDAV 映射 驱动器
    Win10上手机路径
    explorer 命令行
    单位公司 网络 封锁 屏蔽 深信 AC
    cobbler自动化部署原理篇
    Docker四种网络模式
  • 原文地址:https://www.cnblogs.com/Wolves/p/1893568.html
Copyright © 2011-2022 走看看