青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Benjamin

靜以修身,儉以養德,非澹薄無以明志,非寧靜無以致遠。
隨筆 - 398, 文章 - 0, 評論 - 196, 引用 - 0
數據加載中……

WINCE通過clog.db表來讀取和刪除通話記錄

  1 void ReadLog()
  2 {
  3     CEGUID ceguid;
  4     ////////////////////////int MAX_PATH = 1280;
  5     TCHAR szVolName[128];
  6     CREATE_INVALIDGUID(&ceguid);
  7     while(::CeEnumDBVolumes(&ceguid,szVolName,MAX_PATH))
  8     {
  9         if(wcsnicmp(L"SystemHeap",szVolName,10)==0)
 10         {
 11             /////將當前數據庫卷定位到SystemHeap上
 12             break;
 13         }
 14     }
 15     
 16     CEOID ceoid;
 17     ceoid = 0;
 18     
 19     CENOTIFYREQUEST *pRequest = (CENOTIFYREQUEST *) LocalAlloc(LPTR,sizeof(CENOTIFYREQUEST));
 20     pRequest->dwSize = sizeof(CENOTIFYREQUEST);
 21     pRequest->hwnd = NULL;
 22     pRequest->hHeap = NULL; 
 23     pRequest->dwFlags = CEDB_EXNOTIFICATION;
 24     
 25     ////////////////////////////打開聯系人數據庫,并注冊事件
 26     HANDLE hdDB;
 27     hdDB = ::CeOpenDatabaseEx(&ceguid,&ceoid,L"clog.db",0,0,pRequest);
 28     
 29     if(hdDB == INVALID_HANDLE_VALUE)
 30     {
 31 
 32         return;
 33     }
 34 
 35     int iCount;
 36     CEOIDINFO    oldinfo;
 37     CEOID CEoid =0;
 38     if(!CeOidGetInfoEx(&ceguid,ceoid,&oldinfo))
 39     {;}
 40 
 41 
 42     iCount = oldinfo.infDatabase.wNumRecords;
 43     DWORD dwIndex;
 44     if(!iCount)
 45         return;
 46     
 47     PBYTE pBuff;
 48     WORD wProps;
 49     DWORD dwRecSize;
 50     PCEPROPVAL pRecord;
 51     if(iCount >0)
 52     {
 53         for(int i = 0; i < iCount; ++ i)
 54         {
 55             ////////////////////////移動記錄指針
 56             CEoid = CeSeekDatabase(hdDB,CEDB_SEEK_BEGINNING,i,&dwIndex);
 57             //ASSERT(CEoid !=0);
 58             pBuff = 0;    
 59             ////////////////////////讀取所有字段值
 60             CEoid = CeReadRecordProps(hdDB,CEDB_ALLOWREALLOC,&wProps,NULL,&(LPBYTE)pBuff,&dwRecSize);
 61             //ASSERT(CEoid !=0);
 62             
 63             pRecord = (PCEPROPVAL)pBuff;
 64             FILETIME StartTime;
 65             FILETIME EndTime;
 66             int CallType;
 67             LPWSTR NumType;
 68             LPWSTR AllTime;
 69             LPWSTR Number;
 70             for(int i = 0; i < wProps; ++i)
 71             {
 72                 switch(pRecord->propid)
 73                 {
 74                 case 0x0006001f : 
 75                     Number = pRecord->val.lpwstr;
 76                     break;
 77                 case 0x0007001f:
 78                     AllTime = pRecord->val.lpwstr;
 79                     break;
 80                 case 0x000a001f:
 81                     NumType = pRecord->val.lpwstr;
 82                     break;
 83                 case 0x00020040:
 84                     StartTime = pRecord->val.filetime;
 85                     break;
 86                 case 0x00030040:
 87                     EndTime = pRecord->val.filetime;
 88                     break;
 89                 case 0x00040003:
 90                     CallType = pRecord->val.lVal;
 91                     break;
 92                 default:
 93                     break;
 94                 }
 95                 pRecord ++;
 96             }
 97                         LocalFree(pBuff);
 98         }
 99     }
100     /////////////////////////////////////////關閉數據庫
101     if(! CloseHandle(hdDB))
102     {
103 
104         return;
105     }
106 }
 1 void DeleteLog(void)
 2 {
 3     CEGUID ceguid;
 4     TCHAR szVolName[128];
 5     CREATE_INVALIDGUID(&ceguid);
 6     while(::CeEnumDBVolumes(&ceguid,szVolName,MAX_PATH))
 7     {
 8         if(wcsnicmp(L"SystemHeap",szVolName,10)==0)
 9         {
10             /////將當前數據庫卷定位到SystemHeap上
11             break;
12         }
13     }    
14     CEOID ceoid;
15     ceoid = 0;
16     
17     CENOTIFYREQUEST *pRequest = (CENOTIFYREQUEST *) LocalAlloc(LPTR,sizeof(CENOTIFYREQUEST));
18     pRequest->dwSize = sizeof(CENOTIFYREQUEST);
19     pRequest->hwnd = NULL;
20     pRequest->hHeap = NULL; 
21     pRequest->dwFlags = CEDB_EXNOTIFICATION;
22     
23     /////打開通話記錄數據庫,并注冊事件
24     HANDLE hdDB;
25     hdDB = ::CeOpenDatabaseEx(&ceguid,&ceoid,L"clog.db",0,0,pRequest);
26     
27     if(hdDB == INVALID_HANDLE_VALUE)
28     {
29         return;
30     }
31     
32     int iCount;
33     CEOIDINFO    oldinfo;
34     CEOID CEoid =0;
35     //     PCEGUID pceguid = ceguid;
36     if(!CeOidGetInfoEx(&ceguid,ceoid,&oldinfo))
37     {;}
38 
39     //數據庫的記錄總數
40     iCount = oldinfo.infDatabase.wNumRecords;
41     if(0 == iCount)
42         return ;
43     
44     CEOID oid;
45     DWORD dwIndex;
46     oid = CeSeekDatabase(hdDB, CEDB_SEEK_BEGINNING, 0&dwIndex);
47     while(oid)
48     { 
49         // Update GUI with currently selected record
50         if(!CeDeleteRecord(hdDB, oid))
51         {;}
52 
53         oid = CeSeekDatabase(hdDB, CEDB_SEEK_CURRENT, 1&dwIndex);
54     }
55     
56     //關閉數據庫
57     if(! CloseHandle(hdDB))
58     {
59         return ;
60     }
61 }

如果我們只是讀取記錄,并不編輯,那么通過phone.h來讀取通話記錄是比較方便的。附上主要代碼
TCHAR LastIncomingCall[40];
TCHAR LastMissedCall[40];
TCHAR LastOutGoingCall[40];

TCHAR LastIncomingCallName[256];
TCHAR LastMissedCallName[256];
TCHAR LastOutGoingCallName[256];

HANDLE ph;
CALLLOGENTRY entry;
DWORD count;
entry.cbSize = sizeof(CALLLOGENTRY);
if(PhoneOpenCallLog(&ph)== S_OK)
{
   if(S_OK == PhoneSeekCallLog(ph, CALLLOGSEEK_BEGINNING, 0, &count))

//如果用CALLLOGSEEK_END那么count得到是的全部記錄的個數

//如果用CALLLOGSEEK_BEGINNING那么count得是0
   {
    int lastIncallFlag = 0;
    int lastMissedCallFlag = 0;
    int lastOutgoingCallFlag = 0;

    while(PhoneGetCallLogEntry(ph, &entry) == S_OK)
    {
     if(( !lastIncallFlag)&&(entry.iom != IOM_OUTGOING) && (!entry.fOutgoing) )
     {
      //MessageBox(NULL, entry.pszNumber, TEXT("Last Incoming Call"), 0);
      lstrcpy(LastIncomingCall,   entry.pszNumber);
      if(!entry.pszName)
       lstrcpy(LastIncomingCallName,   TEXT("Unknow"));
      else
       lstrcpy(LastIncomingCallName,   entry.pszName);
      MessageBox(NULL,LastIncomingCall,LastIncomingCallName,0);
      lastIncallFlag = 1;
     }
     if(( !lastMissedCallFlag) && (entry.iom == IOM_MISSED))
     {
      lstrcpy(LastMissedCall,   entry.pszNumber);
      if(!entry.pszName)
       lstrcpy(LastMissedCallName,   TEXT("Unknow"));
      else
       lstrcpy(LastMissedCallName,   entry.pszName);
      MessageBox(NULL,LastMissedCall,LastMissedCallName,0);
      lastMissedCallFlag = 1;
     }
     if(( !lastOutgoingCallFlag) && (entry.iom == IOM_OUTGOING))
     {
      lstrcpy(LastOutGoingCall,   entry.pszNumber);
      if(!entry.pszName)
       lstrcpy(LastOutGoingCallName,   TEXT("Unknow"));
      else
       lstrcpy(LastOutGoingCallName,   entry.pszName);
      MessageBox(NULL,LastOutGoingCall,LastOutGoingCallName,0);
      lastOutgoingCallFlag = 1;
     }

     // Make phone
      /* PHONEMAKECALLINFO phonemakecall;
      phonemakecall.cbSize = sizeof(PHONEMAKECALLINFO);
      phonemakecall.dwFlags = PMCF_PROMPTBEFORECALLING;
      phonemakecall.pszDestAddress = entry.pszNumber;
      phonemakecall.pszAppName = NULL;
      phonemakecall.pszCalledParty = NULL;
      phonemakecall.pszComment = NULL;
      PhoneMakeCall(&phonemakecall);*/
    }

    //Show the call log filter
    //PhoneShowCallLog(CALLLOGFILTER_OUTGOING);
   }
}
PhoneCloseCallLog (ph);

打開phone.h發現在WM5.0上有兩個兩個函數在SDK里是沒有的

第一個是

HRESULT PhoneAddSpeedDial(DWORD dwFlags, DWORD* piKey, const TCHAR* pszDisplayName, const TCHAR* pszTelNumber);

第二個是

HRESULT PhoneShowCallLog(CALLLOGFILTER iCallLogFilter);

typedef enum
{
     CALLLOGFILTER_ALL_CALLS,
     CALLLOGFILTER_MISSED,
     CALLLOGFILTER_INCOMING,
     CALLLOGFILTER_OUTGOING
} CALLLOGFILTER;

//++++++
//
//   PhoneAddSpeedDial
//
//        adds a speed dial entry
//
// dwFlags - currently unused, set to 0
//
// piKey - in/out: the key sequence which will invoke the speed dial.
//            currently an entry between 2 and 99 (inclusive) is valid.
//             the API will cause existing entries to be overwritten
//
// pszDisplayName - the non-empty display name for the speed dial
//
// pszTelNumber - the non-empty tel# to be dialed
//

HRESULT PhoneAddSpeedDial(DWORD dwFlags, DWORD* piKey, const TCHAR* pszDisplayName, const TCHAR* pszTelNumber);

 

 

posted on 2009-05-28 11:17 Benjamin 閱讀(1922) 評論(1)  編輯 收藏 引用 所屬分類: PDA/PPC開發

評論

# re: WINCE通過clog.db表來讀取和刪除通話記錄[未登錄]  回復  更多評論   

while(bRet=::CeEnumDBVolumes(&ceguid,szVolName,MAX_PATH))

szVolName 獲得的值
第一次執行 \Documents and Setting\default.vol

第二次執行 \DBData\SYSCONFIG\notify.db

只獲得這兩次的值

沒有你說的 SystemHeap 請問有遇到過嗎,,謝謝
2015-03-09 15:21 | 陳杰
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品视频不卡| 欧美伊久线香蕉线新在线| 久久综合伊人| 久久综合一区二区| 麻豆精品一区二区av白丝在线| 国产精品99久久99久久久二8| 亚洲乱码国产乱码精品精| 亚洲精品免费电影| 99国产精品久久久久久久久久 | 久久国产精品久久精品国产| 性色av一区二区三区| 久久蜜桃精品| 亚洲国产专区| 亚洲午夜精品视频| 久久精品国产第一区二区三区最新章节| 欧美一区二区三区精品电影| 久久久国产精品亚洲一区| 欧美屁股在线| 黑人巨大精品欧美一区二区| 一本色道88久久加勒比精品| 午夜综合激情| 亚洲国产一区二区a毛片| 亚洲一区免费观看| 免费观看亚洲视频大全| 国产精品午夜久久| 亚洲毛片网站| 久久久青草婷婷精品综合日韩 | 亚洲欧美综合一区| 欧美成人在线网站| 亚洲一区二区三区中文字幕在线| 久久青草福利网站| 国产精品久久久久久久电影| 亚洲国产精品久久精品怡红院| 亚洲一区二区三区色| 欧美黄色精品| 久久精品理论片| 国产精品99免视看9| 亚洲电影网站| 久久九九精品99国产精品| 日韩视频二区| 欧美α欧美αv大片| 在线播放不卡| 久久久久久久久久久成人| 亚洲欧美视频一区二区三区| 国产精品v欧美精品∨日韩| 亚洲精品美女久久7777777| 久久综合国产精品| 小黄鸭精品密入口导航| 国产精品一区二区a| 亚洲一区二区在线看| 亚洲日本中文字幕区| 久久在线精品| 影音先锋欧美精品| 欧美在线视频一区| 久久福利视频导航| 亚洲小视频在线| 欧美日韩岛国| 亚洲无限av看| 99精品欧美一区二区三区| 欧美激情一区二区三区全黄| 亚洲国产精品精华液2区45| 久久综合久久久久88| 久久精品一二三区| 黄色小说综合网站| 免费观看日韩av| 久久噜噜亚洲综合| 在线日韩电影| 亚洲大黄网站| 欧美福利视频在线| 亚洲精品久久久久久下一站| 亚洲韩国青草视频| 欧美www在线| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 亚洲一卡久久| 国产噜噜噜噜噜久久久久久久久| 午夜天堂精品久久久久| 亚洲欧美偷拍卡通变态| 国产一区日韩一区| 蜜桃av综合| 免费日本视频一区| 日韩视频一区| 午夜精品国产| 亚洲人体一区| 亚洲少妇中出一区| 国内精品写真在线观看| 亚洲国产精品悠悠久久琪琪| 欧美日韩一区二区三| 久久黄金**| 欧美电影在线观看完整版| 亚洲少妇中出一区| 久久久久久久久伊人| 在线亚洲一区二区| 午夜一区二区三视频在线观看 | 免费亚洲婷婷| 亚洲欧美日韩在线观看a三区| 欧美一区二区三区在| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美亚洲网站| 亚洲精品视频在线看| 亚洲婷婷综合色高清在线| 国产亚洲女人久久久久毛片| 欧美激情精品久久久久久大尺度 | 亚洲国产影院| 久久综合国产精品| 中文在线一区| 久久精品夜夜夜夜久久| 日韩一区二区高清| 欧美一级成年大片在线观看| 亚洲日本欧美日韩高观看| 校园春色国产精品| 亚洲欧美视频在线观看| 欧美刺激午夜性久久久久久久| 欧美一级片在线播放| 欧美日韩亚洲一区二区三区四区| 久久综合免费视频影院| 国产精品视频久久| 99国产精品99久久久久久粉嫩| 亚洲国产女人aaa毛片在线| 亚洲免费视频一区二区| 亚洲乱码精品一二三四区日韩在线| 香蕉精品999视频一区二区| 亚洲四色影视在线观看| 欧美成人精品不卡视频在线观看| 久久天天躁夜夜躁狠狠躁2022| 国产精品视频男人的天堂| 亚洲人在线视频| 亚洲国产精品精华液2区45| 久久狠狠亚洲综合| 欧美一区永久视频免费观看| 欧美日韩免费一区二区三区| 欧美大片一区| 激情婷婷亚洲| 久久久久久久尹人综合网亚洲| 久久精品一区二区三区四区| 国产美女精品视频| 午夜在线播放视频欧美| 午夜精品美女自拍福到在线| 国产精品美女一区二区| 亚洲综合精品一区二区| 久久久www| 经典三级久久| 久久久精品性| 最新高清无码专区| 亚洲乱码一区二区| 欧美日本三区| 亚洲激情黄色| 一个色综合导航| 欧美午夜精品一区| 亚洲四色影视在线观看| 亚洲在线观看视频| 国产日韩欧美一区| 久久国产婷婷国产香蕉| 久久综合九色| 9久草视频在线视频精品| 欧美日韩日日夜夜| 亚洲一区二区欧美| 久久久97精品| 伊伊综合在线| 欧美日韩国产综合久久| 一本久道久久综合婷婷鲸鱼| 亚洲一区在线观看视频| 国产一区二区三区四区三区四| 久久黄色小说| 亚洲人成网站色ww在线| 亚洲一区二区三区午夜| 国产性色一区二区| 久久精品三级| 亚洲精品日产精品乱码不卡| 欧美一区二区三区四区夜夜大片 | 99国产精品久久久久久久成人热| 日韩亚洲综合在线| 久久精品成人欧美大片古装| 亚洲高清三级视频| 欧美人成在线| 久久久久天天天天| 亚洲伦理久久| 久久中文久久字幕| 亚洲午夜久久久久久久久电影院| 国产午夜精品一区二区三区视频| 美女精品网站| 亚洲欧美视频一区| 99精品福利视频| 麻豆精品网站| 欧美亚洲三区| 亚洲美女啪啪| 在线电影一区| 久久免费的精品国产v∧| 亚洲人成网站影音先锋播放| 国产精品日韩欧美综合| 欧美 日韩 国产精品免费观看| 亚洲影院免费观看| 亚洲欧洲视频| 久久在线免费视频| 久久av资源网站| 亚洲欧美日韩国产成人| 亚洲三级电影全部在线观看高清| 国产区日韩欧美| 国产精品色网| 欧美视频在线看| 欧美精品国产精品|