摘要:本文闡述了如何在Windows mobile的裝置上使用Managed 程式碼在來電時觸發擴音器,間接實現免提的功能
Keywords
Windows Mobile,.NET CompactFramework,Speaker,keybd_event,C#
相關文章
http://www.cnblogs.com/fox23/archive/2008/02/15/phoneincoming.html
http://www.cnblogs.com/fox23/archive/2008/03/12/phonestate1.html
前提
你的WM裝置必須支援擴音器,模擬器自然不行
首先,需要匯入用於發送按鍵訊息的本地函數 class NativeHelper
{
private const int KEYEVENTF_KEYUP = 0x0002;
[DllImport("coredll.dll")]
private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
/**//// <summary>
/// 類比按鍵觸發擴音器
/// </summary>
public static void TriggleSpeaker()
{
keybd_event((byte)Keys.F16, 0, 0, 0);
Thread.Sleep(500);
keybd_event((byte)Keys.F16, 0, KEYEVENTF_KEYUP, 0);
}
/**//// <summary>
/// 類比按鍵接電話
/// </summary>
public static void AcceptCall()
{
keybd_event((byte)Keys.F3, 0, 0, 0);
Thread.Sleep(500);
keybd_event((byte)Keys.F3, 0, KEYEVENTF_KEYUP, 0);
}
}
調用的時候: SystemState phonestate = new SystemState(SystemProperty.PhoneIncomingCall);
phonestate.Changed += new ChangeEventHandler(phonestate_Changed);
void phonestate_Changed(object sender, ChangeEventArgs args)
{
NativeHelper.AcceptCall();
NativeHelper.TriggleSpeaker();
}
論壇上也有相關問題,歡迎來做進一步的討論:
http://forums.microsoft.com/china/ShowPost.aspx?PostID=3210021&SiteID=15
http://www.winbile.net/bbs/forums/threads/1036681.aspx
Enjoy it!
Freesc Huang
黃季冬<fox23>@HUST
2008.04.27