如何使用 MBN 在 Windows 10 中以编程方式发送和接收短信?

How to send and receive SMS programmatically in Windows 10 using MBN?

我们有一个程序可以通过 MBN IMbnSms 接口和 2G/3G/4G 调制解调器发送和接收 SMS 消息。我们的代码在 Windows 7 和 Windows 8.x 中有效,但在 Windows 10 中失败。 IMbnSms.GetSmsStatus() 总是 returns 0x8000000A (E_PENDING) 错误,即使调制解调器已在网络上驻留 10 分钟。 IMbnSms.SmsSendPdu() 在 OnSmsSendComplete 事件中获得 E_MBN_FAILURE。

下面是重现此问题的 GetSmsStatus() 的简单测试代码:

    using MbnApi;
    using System;

    namespace GetSmsStatusTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                GetSmsStatus(args[0]);
            }

            static void GetSmsStatus(string interfaceID)
            {
                try
                {
                    MbnInterfaceManager mbnInfMgr = new MbnInterfaceManager();
                    IMbnInterfaceManager infManager = (IMbnInterfaceManager)mbnInfMgr;

                    //obtain the IMbnInterface passing interfaceID
                    IMbnInterface mbnInterface = infManager.GetInterface(interfaceID);
                    IMbnSms mbnSms = mbnInterface as IMbnSms;
                    if (mbnSms == null)
                    {
                        Console.WriteLine("Got no IMbnSms");
                        return;
                    }
                    MBN_SMS_STATUS_INFO mbnSmsStatusInfo;
                    mbnSms.GetSmsStatus(out mbnSmsStatusInfo);
                    Console.WriteLine("flag={0}, index={1}", mbnSmsStatusInfo.flag, mbnSmsStatusInfo.messageIndex);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }   
            }
    }

使用可以通过 "netsh mbn sho int" 获得的网络接口 GUID 调用它。

Microsoft 使用我在 7 日获得的 Windows 10 更新包解决了这个问题。我用几张数据卡重新测试了一下,可以用了