User Passwort
 Passwort speichern Passwort vergessen?
 
 
 
 Alle Foren
 PDA-Dev :: Windows Mobile
 Windows Mobile - Allgemeines
 Smartphone - Phone Library um phone.dll
Autor Vorheriges Thema Thema Nächstes Thema  

pda-dev

pda-dev

Forum Admin


554 Beiträge

Erstellt am: 22.10.2008 :  09:23:42 Uhr  Profil anzeigen  Autor eine Email senden  Besuche pda-dev's Homepage  Sende pda-dev eine ICQ Message  Antwort mit Zitat
Seit dem .NET Compact Framework 2.0 (.NET CF 2.0) und Windows Mobile 5 gibt es die Klasse Microsoft.WindowsMobile.Telephony.Phone, um Telefonanrufe mit dem Smartphone zu tätigen.
Jedoch besitzt diese Klasse zwei Nachteile:
- es gibt keine Möglichkeit, vorab zu prüfen ob der PDA überhaupt ein Telefon besitzt
- sie funktioniert nicht zuverlässig auf älteren Geräten mit .NET CF 1.0 und/oder Pocket PC 2003 Phone Edition
Aus diesem Grund habe ich selbst eine kleine Phone-Library geschrieben, die per PInvoke auf die phone.dll zugreift.
Hier der Code:
 
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace Telephony
{
/// <summary>
/// P/Invoke library around phone.dll.
/// </summary>
public class Phone
{
//PInvoke declarations
private static long PMCF_DEFAULT = 0x00000001;
private static long PMCF_PROMPTBEFORECALLING = 0x00000002;
private struct PhoneMakeCallInfo
{
public IntPtr cbSize;
public IntPtr dwFlags;
public IntPtr pszDestAddress;
public IntPtr pszAppName;
public IntPtr pszCalledParty;
public IntPtr pszComment;
}
[DllImport("phone.dll")]
private static extern IntPtr PhoneMakeCall(ref PhoneMakeCallInfo ppmci);
[DllImport("Phone.dll")]
private static extern void PhoneSeekCallLog();
//---------------------
/// <summary>
/// Caches information whether a phone exists on current PDA.
/// </summary>
private static Boolean exists;
private static Boolean wasChecked = false;
/// <summary>
/// Dials the specified phone number.
///
/// See http://msdn.microsoft.com/en-us/library/aa446543.aspx
/// </summary>
/// <param name="PhoneNumber">Phone number to dial.</param>
/// <param name="PromptBeforeCall">Prompts the user before the call is placed.</param>
unsafe public static IntPtr MakeCall(string PhoneNumber, bool PromptBeforeCall)
{
IntPtr res = IntPtr.Zero;
PhoneNumber += '\0';
char[] cPhoneNumber = PhoneNumber.ToCharArray();
fixed (char* pAddr = cPhoneNumber)
{
PhoneMakeCallInfo info = new PhoneMakeCallInfo();
info.cbSize = (IntPtr)Marshal.SizeOf(info);
info.pszDestAddress = (IntPtr)pAddr;
if (PromptBeforeCall)
{
info.dwFlags = (IntPtr)PMCF_PROMPTBEFORECALLING;
}
else
{
info.dwFlags = (IntPtr)PMCF_DEFAULT;
}
res = PhoneMakeCall(ref info);
}
return res;
}
/// <summary>
/// Checks whether a phone exists on the current PDA.
/// </summary>
/// <returns></returns>
public static Boolean Exists()
{
if (!wasChecked)
{
try
{
PhoneSeekCallLog();
exists = true;
}
catch (Exception ex)
{
exists = false;
}
wasChecked = true;
}
return exists;
}
}
}
 
Wenn man diese Klasse als Class Library kompiliert, erhält man eine kleine Telefon-Bibliothek die sich wunderbar in anderen Projekten benutzen lässt
Wer nicht selbst kompilieren möchte, findet hier die DLL zum Download.

Ein Computer wird nie das tun, was du willst - sondern das, was du programmierst!
   
  Vorheriges Thema Thema Nächstes Thema  
Springe nach:
 
  Bookmark & Share  
 
 
 
  Tags  
   
 
 



pda-dev.de

Quicklinks: Foren-Übersicht | Developer-News | Suche | Impressum

© just-works! Software

Zum Anfang der Seite

Snitz Forums 2000