3662|11

85

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

获取来电号码的问题 [复制链接]

我在mobile 6 的模拟器上写了电话的测试程序,想要获取来电号码。
我的做法是在LINE_CALLINFO的LINECALLINFOSTATE_CALLERID消息下,调用lineGetCallInfo去获去LINECALLINFO,然后加上dwCallerIDOffset长度,在去拿号码。但每次dwCallerIDOffset,而且dwCallerID的所有变量都是0。明明有LINECALLINFOSTATE_CALLERID消息过来了,但还是0,郁闷。

请问要怎么拿到号码?


实际就是参考了:

  1. switch(dwMsg)               
  2. {               
  3. case LINE_CALLINFO:
  4. {                                                
  5.     switch(dwParam1)                                                
  6.     {                                                
  7.     case LINECALLINFOSTATE_CALLERID:
  8.     {                                                               
  9.         LINECALLINFO *lpCallInfo;                                                               
  10.         lpCallInfo = (LINECALLINFO *)malloc(sizeof(LINECALLINFO)+1000);
  11.         memset(lpCallInfo, 0, sizeof(LINECALLINFO)+1000);
  12.         lpCallInfo->dwTotalSize = sizeof(LINECALLINFO)+1000;
  13.         while (1)  
  14.         {
  15.             lineGetCallInfo( (HCALL)hDevice, lpCallInfo);
  16.             if (lpCallInfo->dwTotalSize < lpCallInfo->dwNeededSize)
  17.                 lpCallInfo = (LINECALLINFO *)realloc(lpCallInfo,lpCallInfo->dwNeededSize);
  18.             else
  19.                 break;
  20.         }
  21.         TCHAR szPhoneNumber[30];
  22.         lstrcpy(szPhoneNumber,(LPTSTR)((LPSTR)((DWORD)lpCallInfo+(DWORD)lpCallInfo->dwCallerIDOffset)));
  23.         free(lpCallInfo);
  24.         // szPhoneNumber ---- 呼入的电话号码
  25.     }
  26. }
  27. }
  28. break;}
复制代码

最新回复

在.NET Compact Framework中可以使用SystemState类和SystemProperty类 例子如下: 挂载事件委托 SystemState state = new SystemState  (SystemProperty.PhoneIncomingCallerNumber);             SystemState SS = new SystemState(SystemProperty.PhoneIncomingCall);             SS.Changed += new ChangeEventHandler(SS_Changed);             state.Changed += new ChangeEventHandler(state_Changed);   详情 回复 发表于 2009-7-9 08:54
点赞 关注

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
注册表里有呀
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
ultrapro:
  请问,在注册表的哪个键值?能不能说详细点。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
// PhoneIncomingCall,监控来电
// Gets a value indicating whether there is an incoming (ringing) call.
#define SN_PHONEINCOMINGCALL_ROOT HKEY_LOCAL_MACHINE
#define SN_PHONEINCOMINGCALL_PATH TEXT("System\\State\\Phone")
#define SN_PHONEINCOMINGCALL_VALUE TEXT("Status")
#define SN_PHONEINCOMINGCALL_BITMASK 0x10000

// PhoneIncomingCallerNumber,这项是来电号码
// Gets the incoming call's phone number (Caller ID).
#define SN_PHONEINCOMINGCALLERNUMBER_ROOT HKEY_LOCAL_MACHINE
#define SN_PHONEINCOMINGCALLERNUMBER_PATH TEXT("System\\State\\Phone")
#define SN_PHONEINCOMINGCALLERNUMBER_VALUE TEXT("Incoming Caller Number")

你可以看一下来电时System\\State\\Phone 下的键值
 
 
 

回复

99

帖子

0

TA的资源

一粒金砂(初级)

6
 
学习了
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
学习
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

8
 
可以不用AT Command ? WM中开发这么方便??
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

9
 
ultrapro:
  谢谢!
  但好像不能满足我的要求,那个键值好像是cprog.exe写进去的吧,我是在CE下面的测试程序,在mobile里面这个键值是写了来电号码。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

10
 
我用c#.net VS2008开发Windows Mobile 6测试程序, 参照4楼的方法,简单有效。多谢了!

//phone incoming call registration key root
Microsoft.Win32.RegistryKey keyRoot = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System\\State\\Phone");
//get key value
string phoneNumber = keyRoot.GetValue("Last Incoming Caller Number") as string;
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
zan
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

12
 
在.NET Compact Framework中可以使用SystemState类和SystemProperty类
例子如下:

挂载事件委托
SystemState state = new SystemState  (SystemProperty.PhoneIncomingCallerNumber);
            SystemState SS = new SystemState(SystemProperty.PhoneIncomingCall);
            SS.Changed += new ChangeEventHandler(SS_Changed);
            state.Changed += new ChangeEventHandler(state_Changed);
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表