实现WM下删除最后一条匹配的通话记录

代码很简单就是操作EDB数据库,先按开始时间降序排序,然后删除第一条匹配的记录。

 

 1 bool DeleteLastCallLogByNumber(LPCTSTR lpszNumber)
 2 {
 3     typedef enum
 4     {
 5         CT_Reserved=0,
 6         CT_Outgoing=1,
 7         CT_Connected=2,
 8         CT_Ended=4,
 9         CT_Voice_Data=8,
10         CT_Roam=16
11     }CallType;
12 
13     DebugMsg(_T("DeleteLastCallLogByNumber Enter"));
14     bool bRetn=false;
15     CEGUID ceguid;
16     if(CeMountDBVolEx(&ceguid, _T("\\pim.vol"), NULL , OPEN_EXISTING))
17     {
18         DebugMsg(_T("DeleteLastCallLogByNumber!CeMountDBVolEx Pass"));
19         CEOID ceoid=0;
20         SORTORDERSPECEX pSort={CEOIDINFOEX_VERSION,1,0};
21         pSort.rgPropID[0]=0x20040//按StartTime排序
22         pSort.rgdwFlags[0]=CEDB_SORT_DESCENDING;
23         HANDLE hndDb = CeOpenDatabaseInSession(NULL,&ceguid,&ceoid,_T("clog.db"),&pSort,CEDB_AUTOINCREMENT,NULL);
24         if(hndDb != INVALID_HANDLE_VALUE)
25         {
26             DebugMsg(_T("DeleteLastCallLogByNumber!CeOpenDatabaseInSession Pass"));
27             if(0!=CeSeekDatabase(hndDb,CEDB_SEEK_BEGINNING,0,NULL))
28             {
29                 DebugMsg(_T("DeleteLastCallLogByNumber!CeSeekDatabase Pass"));
30                 CEOID ceOid;
31                 WORD propID=0;
32                 PCEPROPVAL lpBuffer=NULL;
33                 DWORD lpcbBuffer;
34                 PCEPROPVAL propVal;
35                 while(0!=(ceOid=CeReadRecordProps(hndDb,CEDB_ALLOWREALLOC,&propID,NULL,(LPBYTE*)&lpBuffer,&lpcbBuffer)))
36                 {
37                     int CallType;
38                     LPWSTR Number;
39                     for(int i=0;i<propID;++i)
40                     {
41                         propVal=lpBuffer+i;
42                         switch(HIWORD(propVal->propid))
43                         {
44                         case 6:
45                             Number = propVal->val.lpwstr;
46                             break;
47                         case 4:
48                             CallType = propVal->val.lVal;
49                             break;
50                         }
51                     }
52                     
53                     if((CallType&CT_Outgoing) && _tcscmp(Number,lpszNumber)==0)
54                     {
55                         if(CeDeleteRecord(hndDb,ceOid))
56                         {
57                             DebugMsg(_T("DeleteLastCallLogByNumber!CeDeleteRecord Pass"));
58                             bRetn=true;
59                         }
60                         else
61                         {
62                             DebugMsg(_T("DeleteLastCallLogByNumber!CeDeleteRecord Fail"));
63                         }
64                         break;
65                     }
66                 }
67                 if(lpBuffer)LocalFree((LPBYTE)lpBuffer);
68             }
69             CloseHandle(hndDb);
70         }
71         CeFlushDBVol(&ceguid);
72         CeUnmountDBVol(&ceguid);
73     }
74     
75     return bRetn;
76 }

 

 

另附转载的一篇pim.vol数据库内部信息的文章

以下是本人从pim.vol中读取的数据库信息,由此可以对数据库有更深入的了解。
********************
12 databases found!
PIM.VOL GUID: 3306647807
********************
[0] Appointments Database
 

OID: 1077960704
    Version: 2
    2 RECS,
    Type: 25
    Size: 0
    Flags: 0x17
    5 sort orders:
    ==========
    Sort 0 has 1 props:
    [wVersion ]=  2
    [wKeyFlags]=0x1200
      PID[0]=0x10000066
       (Pr=0x1000,Ty=102)
      PFL[0]=0x0
    ==========
    Sort 1 has 1 props:
    [wVersion ]=  2
    [wKeyFlags]=0x0
      PID[0]=0x10420040
       (Pr=0x1042,Ty=64)
      PFL[0]=0x0
    ==========
    Sort 2 has 1 props:
    [wVersion ]=  2
    [wKeyFlags]=0x0
      PID[0]=0x22000b
       (Pr=0x22,Ty=11)
      PFL[0]=0x0
    ==========
    Sort 3 has 1 props:
    [wVersion ]=  2
    [wKeyFlags]=0x0
      PID[0]=0x10400013
       (Pr=0x1040,Ty=19)
      PFL[0]=0x0
    ==========
    Sort 4 has 1 props:
    [wVersion ]=  2
    [wKeyFlags]=0x0
      PID[0]=0x1b0013
       (Pr=0x1b,Ty=19)
      PFL[0]=0x0
    ==========
-------------------
[1] CategoryAssocDB
    OID: 1078239245
    Version: 2
    0 RECS,
    Type: 83
    Size: 0
    Flags: 0x17
    2 sort orders:
    ==========
    Sort 0 has 2 props:
    [wVersion ]=  2
    [wKeyFlags]=0x200
      PID[0]=0x10013
       (Pr=0x1,Ty=19)
      PFL[0]=0x0
      PID[1]=0x20003
       (Pr=0x2,Ty=3)
      PFL[1]=0x0
    ==========
    Sort 1 has 2 props:
    [wVersion ]=  2
    [wKeyFlags]=0x200
      PID[0]=0x20003
       (Pr=0x2,Ty=3)
      PFL[0]=0x0
      PID[1]=0x10013
       (Pr=0x1,Ty=19)
  

转载于:https://www.cnblogs.com/mondol/archive/2010/03/24/1693844.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

std::string中的反向迭代器rbegin()和rend()

在std::string中&#xff0c;有个接口是rbegin()和rend()&#xff0c;分别表示string字符串的倒数第一个字符和正数第一个字符&#xff1b; rbegin()&#xff1a;表示string字符串的倒数第一个字符 rend()&#xff1a;表示string字符串的正数第一个字符 分为普通的iterator和…

【转】[教程] CSS入门3:如何插入CSS样式

http://bbs.blueidea.com/forum.php?modviewthread&tid2524742 转载于:https://www.cnblogs.com/lzhitian/archive/2012/11/25/2787164.html

5.spiders(文件夹)

一、基础知识 1. Spiders 文件夹 用于编写爬虫规则&#xff0c;可以在已有的___init__.py文件中编写具体的爬虫规则但是实际开发中可能有多个爬虫规则&#xff0c;所以建议一个爬虫规则用一个文件表示&#xff0c;这样便于维护和管理 2. 代码 # -*- coding: utf-8 -*- import s…

unlink(file_name)

官方描述&#xff1a; unlink的文档是这样描述的: unlink() deletes a name from the filesystem. If that name was the last link to a file and no processes have the file open the file is deleted and the space it was using is made available for reuse. …

sql server行级锁,排它锁,共享锁的使用

一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读 A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修…

日常学习笔记(1)

2019/03/19 21:12 1.函数&#xff1a;numpy.linspace(start,stop,num50,endpointTrue,retstepFalse,dtypeNone)参数&#xff1a; start&#xff1a;scalar类型&#xff08;个人理解是标量的意思&#xff0c;这不是一个具体的数据类型&#xff0c;而是指某一些数据类型&#xff…

淘宝开发平台知识点一,入门指南

App Key&#xff1a;12038991 App Secret&#xff1a;bb6e1d29db744ed023bfed6a3af6f4f3 1,测试环境下&#xff0c;获取授权码&#xff0c;只有十分钟 http://open.taobao.com/isv/authorize.php?appkey12038991 2&#xff0c;http://container.api.tbsandbox.com/container?…

【转】Linux 下修改Tomcat使用的JVM内存大小

转自 &#xff1a;http://blog.csdn.net/sully2008/article/details/6457570 我的服务器的配置&#xff1a;# OS specific support. $var _must_ be set to either true or false.JAVA_OPTS"-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize512m -XX:MaxPermSize2048m"…

OpenSSL 创建自签名证书

1、生成服务器私钥openssl genrsa -out client.key 40962、生成证书签名请求&#xff08;CSR&#xff09;openssl req -new -key client.key -out client.csr3、使用上一步的证书签名请求签发证书openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.…

C++ functor 仿函数

在C中&#xff0c;仿函数不是一个函数&#xff0c;是一个类&#xff0c;这个类实现了函数的功能。 如果我想实现一个求和的功能&#xff1a;定义一个Sum类&#xff0c;让其中的()函数实现这个功能&#xff0c;代码如下&#xff1a; class Sum { public:Sum() default;virtua…

C#中实现鼠标拖动窗体的方法

用C#实现鼠标拖动窗体&#xff0c;方法可能有很多&#xff0c;不过我想最好多还应该是直接记录鼠标的位置&#xff0c;进而完成操作&#xff1a; private void AddList_MouseDown(object sender, MouseEventArgs e){// Gets the x-coordinate and y-coordinate of …

Sql Server 2008将数据库导出sql脚本并导出数据

1.使用Sql Server Management Studio 2008 连接数据库。 2.选中要导出数据的数据库节点&#xff0c;点鼠标右键&#xff0c;在菜单中选择“任务”->“生成脚本”&#xff0c;如图&#xff1a; 3。在弹出的界面中&#xff0c;点2次“下一步”进入如图界面中&#xff0c;把“编…

SQL SERVER 查询表的行数

SELECT OBJECT_NAME(ii.id) TableName ,rows FROM sysindexes ii INNER JOIN sysobjects oo ON ( oo.id ii.idAND oo.xtype U ) WHERE ii.indid < 2 ORDER BY rows desc ; 转载于:https://www.cnblogs.com/JinweiChang/p/10592680.html

C/C++中的占位符

在C、c语言中增加了占位符&#xff0c;目的是为了减少内存的使用&#xff0c;但是现在内存已经不是瓶颈了&#xff0c;进而很少用占位符了 union V {struct X {unsigned char s1:2;unsigned char s2:3;unsigned char s3:3;} x;unsigned char c; } v; v.c 100; printf("%d…

Book

Folksonomies: Indexing and Retrieval in the Web 2.0 202转载于:https://www.cnblogs.com/kuiyuan/archive/2010/04/06/1705811.html

男性早孕-从软件与程序的区别说起

引言 今日新闻《如此医院太荒唐大小伙子被查出“早孕”》&#xff0c;百度搜索结果如下&#xff1a; 看到这结果&#xff0c;大家啥感想&#xff1f; 按常理&#xff0c;医院粗心、医疗机构忽视患者权益、经济利益的恶性驱动等等言论&#xff0c;唾沫星子基本足以把肇事医院来个…

spring-boot+swagger实现WebApi文档

1、引用依赖包 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.5.0</version> </dependency <dependency><groupId>io.springfox</groupId><artifact…

如何使用单线程处理高并发

单线程相当于一个队列&#xff0c;只能按照顺序执行&#xff0c;如果要实现高并发&#xff0c;可以借助下面的方式&#xff1a; (1)、IO多路复用技术 (2)、采用事件驱动模型&#xff0c;基于异步回调来处理事件来

Sql优化文档

sql 优化 目的 数据库参数进行优化所获得的性能提升全部加起来只占数据库应用系统性能提升的40%左右&#xff0c;其余60%的系统性能提升全部来自对应用程序的优化。许多优化专家甚至认为对应用程序的优化可以得到80%的系统性能提升。因此可以肯定&#xff0c;通过优化应用程序来…

为什么在中国“公有云”落地那么难?

【编者按】本文是在美国和中国的互联网和云服务领域有近10年经验的专业人士Lillian Shao应PingWest邀请撰写的文章。从专业的角度解析了为什么在美国和世界很多地区已经大范围普及、对创业者帮助甚大的“公有云”服务&#xff0c;在中国却很难落地的各个维度原因。大家可以直接…