3

モバイル ブロードバンド 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

手順をこのstackoverflowの説明と組み合わせようとしています

C# 読み取り Windows モバイル ブロードバンド接続プロパティ

Visual Studio から V7.0/lib の mbnapi.tlb への参照を配置することができました。obj/debug フォルダーに interop.mbnapi.tlb が自動的に作成されます。

「SIMが挿入され、動作/アクティベートされていることを確認」しようとすると。=>私のコードは次の行でクラッシュします

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

Windows 8で実行すると、mbnInfMgrInterface == null

ドキュメントの要件に記載されているように、Windows 8に同じSDKをインストールしようとしましたが、SDKはWindows 7のみを対象としています...

実行して、Windows 8にmbnapiを登録しようとしました

Regtlibv12 Mbnapi.tlb

運がない…

これを機能させるにはどうすればよいですか?

誰もこれについて経験がありますか?

編集。Windows 7(私の開発マシン)では、「デバイスの準備ができていません」というメッセージが表示されます。モバイルブロードバンドがないため、これは正常だと思います.Windows 8ではありますが、モバイルインターフェイスマネージャーはnullです= > mbnInfMgrInterface == null。

ありがとうございました、

4

1 に答える 1

0

何を求めているのか正確にはわかりませんが、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

アップデート:

Windows 7 または Windows 8.1 のいずれかで Visual Studio 2015 内から上記のコードを (より大きな WPF アプリケーションの一部として) ビルドおよびデバッグでき、同じアプリケーションを Windows 7 に展開して正常に実行できることに注意してください。このアプリケーションを Windows 8.1 にデプロイすると、何らかの理由でInvalid queryメッセージが表示されます。

更新 2:

System.ManagementWindows 8.1 では名前空間を使用できないため、Windows 7 と同じ方法で 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";
                }
            // ...
        } 
于 2017-03-27T23:40:39.740 に答える