如何实现后台拨打电话(不出现拨号界面)

时间:2022-11-09 23:48:51
WM如何实现后台拨打电话(不出现拨号界面)? 如何实现后台自动接听电话?

12 个解决方案

#1


这个我很久以前研究过,但是没成功或者说不能通用,只在有的机子上可以。你得看一下RIL的东西。如果不是特别必要建议放弃。一般要这个功能和病毒差不多。手机厂商都有一定防范。

#2


同意楼上

#3


那可否在然手机拨号时,触发“返回桌面”按钮或是打开另一个窗体并放入最前端,让其拨号界面退到后台?

#4


可以隐藏窗口

#5


如何隐藏拨号窗口?

#6


通过先获取窗口句柄:
        /// <summary>
        /// 根据窗口名字获得窗口句柄
        /// </summary>
        /// <param name="lpClassName"></param>
        /// <param name="lpWindowName"></param>
        /// <returns></returns>
        [DllImport("coredll.dll")]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
再通过最小化窗口来实现打电话界面隐藏:
 [DllImport("coredll")]
        private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
        private const int SW_MINIMIZE = 6;
        private void btn_Click(object sender, EventArgs e)
        {
            ShowWindow(this.Handle, SW_MINIMIZE);
        }

楼主试试。。

#7


c#
先添加引用using Microsoft.WindowsMobile.Telephony;
这个引用是需要在 引用--右键--添加引用 里添加的


            string telNum = "123456";
            if (MessageBox.Show(telNum + "\r\n是否拨打电话?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.None, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
            {
                Phone p = new Phone();
                try
                {
                    p.Talk(telNum);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(
                        String.Format("Error: {0}", ex.Message),
                        "提示",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Hand,
                        MessageBoxDefaultButton.Button1);
                }
            }

不知道楼主是否这个意思

#8


 
to:liyu1128

如何能获得拨号界面的句柄?

#9


to: blue601

phone.talk() 是有拨号界面的,我的意思是如何隐藏掉这个界面。

#10


引用 8 楼 zxpcomeon 的回复:
to:liyu1128

如何能获得拨号界面的句柄?

IntPtr  hwnd = FindWindow("Dialog", "电话 - 拨入");第一个参数窗口类名,第二个是窗口名

#11


为什么要隐藏,直接最小化吧

#12


IntPtr hwnd = FindWindow("Dialog", "电话 - 拨入");第一个参数窗口类名,第二个是窗口名

窗口hwnd找到了,spy看也是对的,但是无法最小化,无法隐藏。

各位有办法没?

#1


这个我很久以前研究过,但是没成功或者说不能通用,只在有的机子上可以。你得看一下RIL的东西。如果不是特别必要建议放弃。一般要这个功能和病毒差不多。手机厂商都有一定防范。

#2


同意楼上

#3


那可否在然手机拨号时,触发“返回桌面”按钮或是打开另一个窗体并放入最前端,让其拨号界面退到后台?

#4


可以隐藏窗口

#5


如何隐藏拨号窗口?

#6


通过先获取窗口句柄:
        /// <summary>
        /// 根据窗口名字获得窗口句柄
        /// </summary>
        /// <param name="lpClassName"></param>
        /// <param name="lpWindowName"></param>
        /// <returns></returns>
        [DllImport("coredll.dll")]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
再通过最小化窗口来实现打电话界面隐藏:
 [DllImport("coredll")]
        private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
        private const int SW_MINIMIZE = 6;
        private void btn_Click(object sender, EventArgs e)
        {
            ShowWindow(this.Handle, SW_MINIMIZE);
        }

楼主试试。。

#7


c#
先添加引用using Microsoft.WindowsMobile.Telephony;
这个引用是需要在 引用--右键--添加引用 里添加的


            string telNum = "123456";
            if (MessageBox.Show(telNum + "\r\n是否拨打电话?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.None, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
            {
                Phone p = new Phone();
                try
                {
                    p.Talk(telNum);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(
                        String.Format("Error: {0}", ex.Message),
                        "提示",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Hand,
                        MessageBoxDefaultButton.Button1);
                }
            }

不知道楼主是否这个意思

#8


 
to:liyu1128

如何能获得拨号界面的句柄?

#9


to: blue601

phone.talk() 是有拨号界面的,我的意思是如何隐藏掉这个界面。

#10


引用 8 楼 zxpcomeon 的回复:
to:liyu1128

如何能获得拨号界面的句柄?

IntPtr  hwnd = FindWindow("Dialog", "电话 - 拨入");第一个参数窗口类名,第二个是窗口名

#11


为什么要隐藏,直接最小化吧

#12


IntPtr hwnd = FindWindow("Dialog", "电话 - 拨入");第一个参数窗口类名,第二个是窗口名

窗口hwnd找到了,spy看也是对的,但是无法最小化,无法隐藏。

各位有办法没?