LoginSignup
1
1

More than 3 years have passed since last update.

ノートパソコンの画面の通信料状況をボタン一つで取得する【C#】

Last updated at Posted at 2021-03-12

動機

今回も C# で Windows10 の便利ボタンを作るという記事を書いていきます。

以前はノートパソコンのバッテリー状況を確認してみたのですが、調べると他にも情報を取得できるということがわかりました。

現在自分のネット回線はモバイル Wi-Fi を使用しているのですが、ノートパソコンの通信料が気になっています。

そこで、今回もボタン一つでノートパソコンの通信料を確認してみようと思い、プロトを作成してみました。

参考 1:ノートパソコンの画面の明るさをボタン一つで変更する【C#】
参考 2:ノートパソコンの画面の音量をボタン一つで変更する【C#】
参考 3:ノートパソコンの画面のバッテリー状況をボタン一つで取得する【C#】

なお、作成に関しては WpfApp で作成しました。

イメージ画像

相変わらず画面はそっけないものです。

画面の YYYY/MM/DD - YYYY/MM/DD までの通信料を選択すると、下の TextBlock の横に送信・受信通信料が表示されます。

通信料メイン.PNG

なお、Windows10の標準の通信料把握機能([設定] > [ネットワークとインターネット] > [データ使用状況])からは過去30日分しか把握できませんが、こちらでは過去60日まで遡って通信料を把握することが可能です。

通信料結果.PNG

ソース

MainWindow.xaml

MainWindow.xaml
<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Button x:Name="button" Content="2021/2/1 - 2021/3/11 までの通信量" HorizontalAlignment="Left" Margin="211,73,0,0" VerticalAlignment="Top" Width="407" Click="button_Click" Height="92" FontSize="20"/>
        <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="365,238,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top"/>

    </Grid>
</Window>

MainWindow.xaml

MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp1
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        async private void button_Click(object sender, RoutedEventArgs e)
        {

            Windows.Networking.Connectivity.NetworkUsageStates usageStates = new Windows.Networking.Connectivity.NetworkUsageStates();

            var startTime = new DateTime(2021, 2, 1); // ドキュメントによると現在の時刻より60日以上前にすることはできないようです。
            var endTime = new DateTime(2021, 3, 11);

            var connectionProfile = Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile();
            IReadOnlyList<Windows.Networking.Connectivity.NetworkUsage> listNetworkUsage = await connectionProfile.GetNetworkUsageAsync(startTime, endTime, Windows.Networking.Connectivity.DataUsageGranularity.Total, usageStates);
            for (int i = 0; i < listNetworkUsage.Count; i++)
            {
                textBlock.Text += string.Format("送信: {0}バイト, 受信: {1}バイト\n", listNetworkUsage[i].BytesSent, listNetworkUsage[i].BytesReceived);
            }
        }
    }
}

おわりに

今回はボタン1つでノートパソコンの通信料を把握することができました。

もしかしたら自分のWindows10便利化計画に必要ない機能だったのかもしれませんが、こんなこともできるのかと少し感動して記事にしました。

誰かのお役に立てれば光栄です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1