紧急求救!关于TAPI的BUG

zkhraul 2009-07-06 10:37:23
因为需要,我要用到TAPI进行后台呼叫,但奇怪的是我发现如果在GPRS没有连接的情况下,是没有问题的,
但当在连接上GPRS的情况下(比如可以先开UCWEB),如果先让手机接听任何来电(此时是系统调用电话界面进行接听),这时再运行我们的TAPI程序进行呼叫,奇怪的事发生了:呼叫时不在从后台运行,而是会自动调用系统的拨号盘呼出去。。。。
原本以为是我程序的问题,但我用SDK SAMPLE里Cecore里的CeDial示例也一样发生这事,并用了两太不同型号手机也会有问题,后来测试了下,如果我把GPRS连接点手动关闭,再用TAPI呼叫又可以。。。
谁能帮我下啊,有时间和条件的也可以实验下,我被困了一天了。。。。
...全文
102 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nihao38 2009-07-07
  • 打赏
  • 举报
回复
牛,顶
载舟之水 2009-07-06
  • 打赏
  • 举报
回复
忘了说了,如果不想用微软的UI是可以通过修改注册表解决的,建议你详细看看文档以下部分,这个键值是控制的关键。

The HKEY_LOCAL_MACHINE\Comm\ConnMgr\TPCMon registry key is used to specify handling of different call types. This key is read during the device initialization process, so it must be built into the device image or provisioned using XML. See Provisioning Using a ROM Configuration XML File for more information. The following table shows the named value.

Value : type Description
NonUIMediamodes : REG_DWORD

Specifies the TAPI line media mode for calls to be handled as "alien" (non-voice) calls. This registry key is used to specify the media mode of push-to-talk (PTT) calls. The phone user interface does not appear for calls with this specified media mode.

See LINEMEDIAMODE for a list of possible values. By default, this is set to dword:00010000 (LINEMEDIAMODE_PTT) in the Cellcore.reg file.

载舟之水 2009-07-06
  • 打赏
  • 举报
回复
这个不算是TAPI的bug,因为TAPI和微软的Call Progress对话框是有关联的,两者能互相检测到。微软的文档说了

[Requesting Call Progress Display]

You can programmatically display Call Progress. The best way to request that Call Progress be displayed is to launch the resident phone application, cprog.exe, by using cprog.lnk.

If a call was auto-answered by the OEM's RIL driver, for example because it is in a car kit mode, you can display Call Progress by calling cprog.lnk.

意思就是用TAPI接听来电,再调用cprog.lnk 就可以显出正在通话的界面,这也就从另一方面说明了,出现微软拨号界面是不奇怪的。

建议你直接用ShowWindow隐藏cprog吧,毕竟你用TAPI是可以在后台控制通话过程的。
zkhraul 2009-07-06
  • 打赏
  • 举报
回复
用了另一台也会,测了下,只能隐藏了,但不知系统拨号盘窗体的句丙如何获得,什么时隐藏了,在linemakecall后?
载舟之水 2009-07-06
  • 打赏
  • 举报
回复
GPRS 是 data call TAPI是voice call 两者只是参数不同,但对系统来说都是call的一种,如果driver没处理好,再加上系统有这种机制,出现你说的问题是可能的。建议你用Emulator验证一下或者换另一个型号的机器验证。
zkhraul 2009-07-06
  • 打赏
  • 举报
回复
你是高手,佩服,但为何GPRS没连接时不会有问题呢,或是连接了但没接听过电话也不会有,你的方法我会去做下

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧