User Passwort
 Passwort speichern Passwort vergessen?
 
 
 
 Alle Foren
 PDA-Dev :: Windows Mobile
 Windows Mobile - Allgemeines
 Smartphone - Phone Library um phone.dll

Hinweis: Sie müssen sich registrieren, um eine Antwort schreiben zu können.
Um sich zu registrieren, klicken Sie hier. Die Registrierung ist kostenlos!

Auflösung:
Benutzer:
Passwort:
Funktion:
Format: FettKursivUnterstreichenDurchstreichen Links ausrichtenZentrierenRechts ausrichten Horizontale Line Hyperlink einfügenEmail einfügenBild einfügen Code einfügenZitat einfügenListe einfügen Spoiler einfügen Infos zur Code-Formatierung
   
Nachricht:

Smilies
Achtung [!] Aufgeregt [angry] Big Smile [:D] Computer... [comp]
Durchgedreht [O] Idee [i!] Jubel [jump] Ratlos [:I?]
Schüchtern [8)] Smile [:)] Sprachlos [:O!] Traurig [:(]
Wütend [:(!] Zunge [:P] Zustimmung [^] Zwinkern [;)]

     HTML ist AUS | Forum Code ist AN
Tags:
Bereits vorhandene Tags: .NET CF C# phone.dll
Wiederholen Sie wichtige Tags oder fügen Sie neue Tags hinzu.
Trennen Sie mehrere Tags durch Kommas voneinander ab.

  Signatur anhängen.
Dieses Thema abonnieren.
    

  Übersicht  
pda-dev
Erstellt am: 22.10.2008 : 09:23:42 Uhr
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.



pda-dev.de

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

© just-works! Software

Zum Anfang der Seite

Snitz Forums 2000