Hi,
I need to develope an application that basically replaces the caller ID screen that pops up when you have an incoming call and show some more information on the caller, then let the user answer or decline the call.
any help on where to look first (or maybe code snipets if i'm lucky) highly appreciated.
Cheers,
Shafa
I think you may have a hard time if it is truly a seperate application you wish to write. I have written a program to try to be used at the same time as cprog.exe and when that incoming call window comes up nothing I have tryed will let the user interact with any windows I create. You could stop that process but most users will not want to do this. I ended up having my program automatically determine if it wants to accept the incoming call and answer it itself. This was particularly anoying because my incoming call interest was set to data only and cprog dose not normally even register an incoming call that is purly data. But after I had initialized tapi with my settings cproc unexpectedly shared the same interest for incoming data calls.
Just as speculation - if your program was constantly running, when an incoming call is offering, you could enumerate the desktop windows using EnumWindows and its associated callback function to get the hwnd of the ballon that comes up. Then perhaps you could close the incoming call window or send it to the bottom of the z order and use your own to replace it. I do not know what effect this would have on cprog.
code related to tapi tends to be long so your not that lucky
:lol:
Related
Hi,
I want some information about default phone application cprog.exe.
I want to know how does it communicate with outlook and other application.
I guess most probably it should be via message posting.
But, unfortunately wheni tested the same with spy running on cprog and then i called a contact from outlook contacts.
I see many messages posted to cprog but I found no message or Parameter(WPARAM/LPARAM) to cprog that contains the number to call.
can anyone help me out to get information how to fetch that number? the number passed to phone/cprog.exe from contact.
The same thing i need for sddialer.exe that after matching the sound tag, how it informs cprog that which number to call?
Please help! I am looking these since long...
Good Luck
Best of luck trying to find any doco on cprog (if you do, please post back here!).
If you have a look at this thread you may find what you are looking for (at least how to initiate a call from the PC is there):
http://forum.xda-developers.com/showthread.php?t=295585
Look for LINE_REQUEST message
There a two ways, that an application can make a call; using tapiRequestMakeCall or lineMakeCall. tapiRequestMakeCall is by far the simplest to use. Examples of their use can be found in two sample cellcore progams available from microsoft, CeDialer, and HelloTapi. You could try this and see which produces messages simular to outlook. I'll guess that it's HelloTapi (tapiRequestMakeCall).
When an application uses tapiRequestMakeCall a LINE_REQUEST message is sent to the call-control application. This application must then call lineGetRequest to get information on the request. It then must execute the request.
See the remarks on the lineRegisterRequestRecipient page at microsoft
http://msdn2.microsoft.com/en-us/library/ms736043.aspx
I wish there was a similar Hello USSD example for the lineSendUSSD API. There's very little information on it... No one seems to be able to capture the responses past the first call.
oops missed part of your question
After the call app places the call, it should get a series of messages, mostly LINE_CALLINFO and LINE_CALLSTATE. The messages contain a handle for the call. Once you have the call handle you should be use the lineGetCallInfo and lineGetCallState functions to get info about the call. I think lineGetCallInfo includes the number that was called. The callstate typically goes through dialling, progressing, and then connected. I believe your not supposed to use the call handle until after a LINE_REPLY message is sent, saying the call didn't fail. If there are problems perhaps you should wait a short time.
To find out more about the messages, you could play with the CeDialer sample. It's linecallbackfunc looks at the messages, it would be easy to put in a few logging statements to see what's in each message. It think CeDialer will only get messages for inbound calls, and calls that it originated. (not ones by cprog.) Although you should check to be sure that I'm correct.
Good luck! Please, let us know whatever you might find out.
Hi,
I will look into this and post reply according As soon as possible.
Thanks
Where i can find the original cprog.exe to install in my non phone PDA? it's the dialer for voip.
Many thanks
Hi guys!
I'm trying to develop an application to control the incoming call flow. That is an easy task in it self, and i solved that by using C++ and TAPI. The problem is that cdialer.exe always disturb me with that annoying ringtone and popup. So basically my question is how i can take full control of a HCALL coming from a TAPI callback, process the call and then simulate a new TAPI callback so the default phone app can get a hold of the call. If you have tried Magicall or any other similar call filter app, you know what i mean. I just can't understand how they do it.
Any suggestions?
I was under the impression that TAPI couldn't handle incoming calls.
TAPI handles both incoming and outgoing phone calls on WM.
You need to use RIL. But it's quite hard (at least for me) to implement as the documentation is rare. Good Luck.
Thanks A_C, i'll give that a try
My bad. TAPI 2.0 introduced Inbound calls support.
Hi, I have started to write a parental control phone application for wm6 which would let my kids answer only selected numbers and dial only a few numbers, however I am having a few issues where I need help:
1- I am trapping the Notification Event for incomming call (RegistryNotifyCallback) and put my window topmost (to hide the Phone Incoming Window) but I don't know how to prevent the use of the Green and Red hardware buttons (I need to disable them so the phone can't be answered if the number is not approved)
2- For outgoing calls, I need my app to be started with the Green phone button instead of cprog, but again, how do I trap those buttons.
Thank you
Replacing CPROG: bad idea
You just need to create a dialParser dll (signed) that will block outgoing calls that are not allowed, and maybe some TAPI wrapper to block incoming calls.
Replacing cprog is just a wrong solution.
How to make a dialParser? look at Google! it's an undocumented API (MS doesn't want you to know how to do it if you don't pay the partnership...) but leaks are everywhere!
Hi all,
How can I catch the incoming call's phone number (Caller ID) using the MFC?
If I use .NET there is SystemState and the SystemProperty PhoneIncomingCallerNumber. But what is similar with MFC?
Has anybody maybe a code snippet?
Joline
For WindowsMobile 5.0 and above you can read it from the registry.
Don't remember the exact reg key... but look in the SDK for:
SN_PHONEINCOMINGCALLERNUMBER_ROOT
SN_PHONEINCOMINGCALLERNUMBER_PATH
SN_PHONEINCOMINGCALLERNUMBER_VALUE
Best regards
Øystein
Thanks. This works.
I wrote a program which uses notifications and catches an incoming call. To see if that works the program opens a message box if there is an incoming call. But regrettably first I get the notification from the system and AFTER hang up the message box from my program appears.
What can I do that my program catch the call BEFORE all other programs notify this (e.g. to change the ring tone depending on the caller id)?
Joline
IMHO iits not so easy. You must use TAPI library and/or directly Ril.
Where can I find useful information about how to use TAPI and RIL (maybe with examples)?
Joline
For RIL exists only fragmentary informations - good source is forum http://www.teksoftco.com/forum/viewforum.php?f=15.
For TAPI examples search Windows Mobile SDK.
I need the same phone number catching in PHP
Hi ,
I need to generate the popup using PHP while the call is landed in our phone.
how can we do this?
Thanks and Regards,
JayarajMohan.J
Hi, i know this question might pops up every now and then. Tried hard to find a solution but still can't find anything workable. Here's my issue:
I'm developing an app for Windows Mobile 6.5 (With TAPI 2.0), using Motorola MC65 as target device, that would allow user to make calls and answer calls. For outgoing calls i have no problem whatsoever. For incoming calls, the OS default call answering screen (CProg.exe) will pop up when there's a call coming in.
After googling for solutions and trial and error a whole lot, here's what i did so far:
1. Use lineSetAppPriority to set my app to the top priority for handling incoming call. The call returns 0 (means success) but still the CProg will try to handle the incoming calls. Checked that the application name is correct as well.
2. Tried using FindWindow and SetForegroundWindow to hide the CProg. It works, when there's incoming call, the CProg will be hidden and my app is shown. However the button on my app couldn't be accessed as i think the focus or countrol is still with CProg. Tried using Focus() on my app and still not working.
3. Tried replace the CProg with an empty executable. After restart, my phone can't even access the radio network. Usually when booted up the device will prompt me for the SIM card's pin number, but this is not the case here. Tried calling in and operator's telling me can't reach the line.
Just wondering is there anyone, at all, that has encountered this issue before and get over it?
Thank you.