【IT168技术文档】
本文阐述了如何在Windows mobile的设备上使用托管代码在来电时触发扬声器,间接实现免提的功能
你的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(); }