動機
今回も C# で Windows10 の便利ボタンを作るという記事を書いていきます。
以前はノートパソコンのバッテリー状況を確認してみたのですが、調べると他にも情報を取得できるということがわかりました。
現在自分のネット回線はモバイル Wi-Fi を使用しているのですが、ノートパソコンの通信料が気になっています。
そこで、今回もボタン一つでノートパソコンの通信料を確認してみようと思い、プロトを作成してみました。
参考 1:ノートパソコンの画面の明るさをボタン一つで変更する【C#】
参考 2:ノートパソコンの画面の音量をボタン一つで変更する【C#】
参考 3:ノートパソコンの画面のバッテリー状況をボタン一つで取得する【C#】
なお、作成に関しては WpfApp で作成しました。
イメージ画像
相変わらず画面はそっけないものです。
画面の YYYY/MM/DD - YYYY/MM/DD までの通信料
を選択すると、下の TextBlock
の横に送信・受信通信料が表示されます。
なお、Windows10の標準の通信料把握機能([設定] > [ネットワークとインターネット] > [データ使用状況])からは過去30日分しか把握できませんが、こちらでは過去60日まで遡って通信料を把握することが可能です。
ソース
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
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便利化計画に必要ない機能だったのかもしれませんが、こんなこともできるのかと少し感動して記事にしました。
誰かのお役に立てれば光栄です。