Борется с мобильными широкополосными API Windows 7 и Windows 8 с C#, не уверен, что установить

У меня есть приложение, которое требует управления мобильным широкополосным API.

Я борюсь за правильную установку API на моих устройствах.

Я следовал инструкциям в этом документе:

http://www.google.be/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=1&cad=rja&ved=0CC0QFjAA&url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2F7%2FE%2F7%2F7E7662CF-CBEA-470B-A97E-CE7CE0D98DC2%2FMB_ManagedCode.docx&ei=kyvmUs7jE4e60QWbooHYDg&usg=AFQjCNG6yaGf4sRhdbWI99fE7tmQX8cmnA&sig2=2Fg-_DRYBIselKR19wTq2Q

и пытается объединить шаги с этим объяснением

C# чтение свойств широкополосного подключения Windows Mobile

Мне удалось заложить ссылку из Visual Studio на mbnapi.tlb в V7.0/lib. и у меня автоматически теперь есть interop.mbnapi.tlb в моей папке obj/debug.

При попытке "проверить, вставлена ​​ли SIM-карта и работает / активирована". => мой код падает на следующей строке

IMbnInterface[] mobileInterfaces = mbnInfMgrInterface.GetInterfaces() as IMbnInterface[];

Когда я запускаю его в Windows 8, mbnInfMgrInterface == null

Я уже пытался установить тот же SDK на Windows 8, как указано в требованиях документа, но SDK предназначен только для Windows 7...

Я попытался зарегистрировать mbnapi в Windows 8, выполнив

Regtlibv12 Mbnapi.tlb

не повезло вообще...

Что мне нужно сделать, чтобы заставить это работать, пожалуйста?

У кого-нибудь есть опыт в этом?

РЕДАКТИРОВАТЬ. в Windows 7 (на моей машине для разработки) я получаю сообщение "Устройство не готово", я думаю, что это нормально, потому что у меня нет мобильной широкополосной связи, в Windows 8 у меня есть, но там менеджер мобильного интерфейса имеет значение null = > mbnInfMgrInterface == ноль.

благодарю вас,

1 ответ

Не знаю точно, что вам нужно, но после борьбы с IMbnInterface и GetSignalStrength() (см. https://msdn.microsoft.com/en-us/library/windows/desktop/dd323166(v=vs.85).aspx) и, будучи неудачным, я обнаружил, что вы можете получить много информации, используя WMI:

        int maxBandwidth = 0;
        string query = "SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface";
        ManagementObjectSearcher moSearch = new ManagementObjectSearcher(query);
        ManagementObjectCollection moCollection = moSearch.Get();
        foreach (ManagementObject mo in moCollection)
        {
            if (Convert.ToInt32(mo["CurrentBandwidth"]) > maxBandwidth)
            {
                // Instead of CurrentBandwidth you may want to use BytesReceivedPerSec
                maxBandwidth = Convert.ToInt32(mo["CurrentBandwidth"]);
            }
        }

Пожалуйста, смотрите ответ здесь: Определение скорости соединения с сетью и вот список свойств, которые вы можете получить: https://msdn.microsoft.com/en-us/library/aa394293(VS.85).aspx

ОБНОВИТЬ:

Обратите внимание, что я могу создать и отладить вышеуказанный код (как часть более крупного приложения WPF) из Visual Studio 2015 в Windows 7 или Windows 8.1, и я могу развернуть то же приложение в Windows 7, где оно успешно работает. По какой-то причине при развертывании этого приложения в Windows 8.1 я получаю Invalid query сообщение.

ОБНОВЛЕНИЕ 2:

Обратите внимание, что я обнаружил, что вы не можете получить информацию о сети в Windows 8.1 так же, как в Windows 7, поскольку System.Management пространство имен недоступно в Windows 8.1. См. https://code.msdn.microsoft.com/windowsapps/network-information-sample-63aaa201

        string connectionProfileInfo = string.Empty;
        ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();

        if (InternetConnectionProfile == null)
        {
            rootPage.NotifyUser("Not connected to Internet\n", NotifyType.StatusMessage);
        }
        else
        {
            connectionProfileInfo = GetConnectionProfile(InternetConnectionProfile);
            OutputText.Text = connectionProfileInfo;
            rootPage.NotifyUser("Success", NotifyType.StatusMessage);
        }

        // Which calls this function, that allows you to determine how strong the signal is and the associated bandwidth
        string GetConnectionProfile(ConnectionProfile connectionProfile)
        {
            // ...
                if (connectionProfile.GetSignalBars().HasValue)
                {
                    connectionProfileInfo += "====================\n";
                    connectionProfileInfo += "Signal Bars: " + connectionProfile.GetSignalBars() + "\n";
                }
            // ...
        } 
Другие вопросы по тегам