.NET/サスペンド前・復帰の時に処理を行いたい
の編集
Top
/
.NET
/
サスペンド前・復帰の時に処理を行いたい
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
.NET
.NET/.NETでpingを実現する・System.Net.NetworkInformation.Ping
.NET/ARPテーブルを取得し表示するサンプル・GetIpNetTable
.NET/CPUコア毎の使用率を取得する
.NET/CPU使用率を取得する
.NET/DateとDateTimeの違い
.NET/HttpClientを使って指定したURLのページを取得する
.NET/IPv4からMACアドレス取得する・SendARP
.NET/IPアドレスからホスト名を取得するサンプルコード
.NET/ListのStringをカンマ区切りにする方法
.NET/Listを配列に配列をListに変換する
.NET/NET6.0でSQLiteを使ってみた Microsoft.Data.Sqlite
.NET/ODBCを使用してデータベースに接続しSQLを実行するサンプル
.NET/String.Splitで空要素を残す、空要素を削除するオプションについて
.NET/StringBuilderをバイト配列に変換する
.NET/Stringの配列をCSVにする方法
.NET/UNIX時間への変換・DateTimeOffset
.NET/UNIX時間をDateTimeOffset, DateTimeにする
.NET/Web APIからJSONを取得し値を表示する・DataContractJsonSerializer
.NET/WMIを使って物理メモリ・仮想メモリの使用量等を取得する
.NET/アルファベットを大文字、小文字に変換する
.NET/インストールされているODBCドライバ一覧を取得するサンプル
.NET/コンソールプログラムからトースト通知をするサンプル
.NET/サスペンド前・復帰の時に処理を行いたい
.NET/スペースのみの文字列、空の文字列、サイズ0の文字列を判定する
.NET/スリープの抑止、モニター電源オフの抑止のサンプルコード
.NET/ターゲットにしている.NETを確認する操作手順
.NET/テキストファイルの読込・ReadAllText,ReadAllLines
.NET/テキストファイルの読込・StreamReader
.NET/テンポラリファイルの作成・ランダムな文字列の作成を作成する
.NET/テンポラリファイル名を取得する・GetRandomFileName
.NET/ディレクトリの有無を確認する
.NET/ネットワークカードの各種情報を取得するサンプルコード
.NET/バイト配列にファイルの内容をすべて読み込む
.NET/バイナリーファイルの作成・リード・ライト
.NET/ファイルなの?ディレクトリなの?の判別
.NET/ファイルの有無を確認する
.NET/ファイル一覧を取得する・GetFiles,EnumerateFiles
.NET/プログラムに渡された引数を取得する方法
.NET/ユーザーが無操作の状態を取得する・GetLastInputInfo
.NET/三項演算子のサンプルコード
.NET/四捨五入をするときはMidpointRounding.AwayFromZeroにすること
.NET/指定した時間間隔でイベントを発行する・Timer
.NET/数値を指定した桁数分ゼロで埋めたい・ToString
.NET/文字列(String)を左右逆転し文字列(String)で返却する方法
.NET/文字列をバイト配列に変換・バイト配列を文字列に変換
.NET/文字列を区切り文字で分割する方法・Split
.NET/文字列宣言の先頭の@について
.NET/文字列数値を指定した桁数分ゼロで埋めたい・PadLeft
.NET/文字列日付をDateTimeに変換する
.NET/文字列配列orList配列に指定した文字列が存在するかを確認する方法
.NET/時間(日数+時間)が格納できるTimeSpan
.NET/月末の日を取得する方法・DaysInMonth
.NET/現在の日時を取得する
.NET/符号付バイトsbyte,符号なしbyteをintegerに変換する
.NET/管理者として実行されているかどうか確認するサンプルコード
.NET/連想配列(ハッシュ)のキーと値を取得する
.NET/連想配列(ハッシュ)を使ってみる・Dictionary
.NET/閏年かを調べる方法
AutoTicketLinkName
FrontPage
MenuBar
OSS
OSS/XYM日本円価格(シンボル日本円価格 (XYMJPYPrice)
OSS/ビットコイン日本円価格(ビットコイン日本円価格 (BitcoinJPYPrice)
RecentDeleted
VS
VS/Debug.Writeをイミディエイトウィンドウに出力する方法
VS/Visual Studio 2022に Spy++をインストールする手順
VS/VS2022の配色テーマの変更操作
VS/XAML編集に使うツールボックスの再表示する操作手順
VS/インデントなどコードを整形するショートカットの紹介
VS/コメントにするショートカットキー
VS/ショートカットキーで大文字・小文字に変換する
VS/ビルド中に中断したい場合の操作手順
WPF
WPF/DataGridを使ってみる
WPF/起動してもMainWindowを表示したくない場合
お約束
プライバシーポリシー
最初にお読みください
#navi(../) * サスペンド前・復帰の時に処理を行いたい時のサンプルコード [#w0bbd1ef] PCがサスペンドに入る前にネットワークを閉じたい、ファイルを一時保存しておきたいなどスリープ状態になる前に処理を実行したい。~ 同様にスリープ復帰後に処理を行いたい場合のサンプルコードを以下に記します。 PowerModesのイベントによる処理になります。~ 電源の抜き差し(ノートPCのAC電源駆動、バッテリ駆動の処理も実装してあります。 #contents #htmlinsert(windev-top.html) * 動作確認環境 [#m3091fa6] - Windows 10 ver. 21H1 - Visual Studio 2019 - WPFアプリケーション - .NET Framework 4.7.2 * ソリューションファイル [#hb030d07] 本記事で作成したソリューション(プロジェクト一式)は以下からダウンロードできます。 - ソシューション(プロジェクト一式) #ref(SuspendResume.zip); * 参考サイト [#r7725672] - dobon.net~ 電源の状態(ACかDCか、充電中か、バッテリー残量など)を取得する~ https://dobon.net/vb/dotnet/system/powerstatus.html - 端末のスリープと復帰を検知する~ https://qiita.com/muro/items/96646280c0a6d398ca02 * 実行結果 [#s5efc169] 以下のキャプチャの通り、電源状態が変わった場合(今回はAC駆動、バッテリ駆動のみ判定)、スリープ前、スリープから復帰時にTextBlockに~ 時間とメッセージを追記しています。~ スリープ前、スリープ復帰時にメッセージが追記されているのができます。~ AC ON|OFF Line はノートPCから電源ケーブルを抜き差しすると出力されます。 #ref(01.png) * C# サンプルコード [#g8ad412a] サンプルコードは、上記参考サイトを利用させて頂き追記しました。~ WPFのため、SystemInformation.PowerStatusは使えず(System.Windows.Formsのため)、UWPのWindows.Devices.Powerを使うための設定も面倒なので、~ DllImportによりGetSystemPowerStatusを使う方法で、AC駆動、バッテリ駆動を判別しています。 以下、追記・修正したファイルのみとなります。 ** MainWindow.xaml [#t5ce2792] <Window x:Class="SuspendResume.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:SuspendResume" mc:Ignorable="d" Title="MainWindow" Height="400" Width="400"> <Grid> <TextBlock Name="MsgTxtBlk" /> </Grid> </Window> ** MainWindow.xaml.cs [#yd0de3ab] using Microsoft.Win32; using System; using System.Runtime.InteropServices; using System.Windows; namespace SuspendResume { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); MsgTxtBlk.Text = "Start" + Environment.NewLine; ; MonitorPowerModes(); } private void MonitorPowerModes() { SystemEvents.PowerModeChanged += (sender, e) => { string nowTime = DateTime.Now.ToString("HH:mm:ss"); switch (e.Mode) { case PowerModes.Suspend: MsgTxtBlk.Text += nowTime + " - Suspend" + Environment.NewLine; break; case PowerModes.Resume: MsgTxtBlk.Text += nowTime + " - Resume" + Environment.NewLine; break; case PowerModes.StatusChange: MsgTxtBlk.Text += nowTime + " - " + ACLineStatusMsg() + Environment.NewLine; break; default: MsgTxtBlk.Text += nowTime + " - Unknown" + Environment.NewLine; break; } }; } [StructLayout(LayoutKind.Sequential)] public struct SYSTEM_POWER_STATUS { public byte ACLineStatus; public byte BatteryFlag; public byte BatteryLifePercent; public byte Reserved1; public int BatteryLifeTime; public int BatteryFullLifeTime; } [DllImport("kernel32.dll")] static extern bool GetSystemPowerStatus(out SYSTEM_POWER_STATUS lpSystemPowerStatus); private string ACLineStatusMsg() { SYSTEM_POWER_STATUS sps = new SYSTEM_POWER_STATUS(); _ = GetSystemPowerStatus(out sps); string msg = ""; switch (sps.ACLineStatus) { case 0: msg = "AC OFF line."; break; case 1: msg = "AC ON line."; break; case 255: default: msg = "Unknown."; break; } return msg; } } } 以上、サスペンド前、サスペンド復帰時に処理を記述する方法でした。 #htmlinsert(windev-btm.html)
タイムスタンプを変更しない
#navi(../) * サスペンド前・復帰の時に処理を行いたい時のサンプルコード [#w0bbd1ef] PCがサスペンドに入る前にネットワークを閉じたい、ファイルを一時保存しておきたいなどスリープ状態になる前に処理を実行したい。~ 同様にスリープ復帰後に処理を行いたい場合のサンプルコードを以下に記します。 PowerModesのイベントによる処理になります。~ 電源の抜き差し(ノートPCのAC電源駆動、バッテリ駆動の処理も実装してあります。 #contents #htmlinsert(windev-top.html) * 動作確認環境 [#m3091fa6] - Windows 10 ver. 21H1 - Visual Studio 2019 - WPFアプリケーション - .NET Framework 4.7.2 * ソリューションファイル [#hb030d07] 本記事で作成したソリューション(プロジェクト一式)は以下からダウンロードできます。 - ソシューション(プロジェクト一式) #ref(SuspendResume.zip); * 参考サイト [#r7725672] - dobon.net~ 電源の状態(ACかDCか、充電中か、バッテリー残量など)を取得する~ https://dobon.net/vb/dotnet/system/powerstatus.html - 端末のスリープと復帰を検知する~ https://qiita.com/muro/items/96646280c0a6d398ca02 * 実行結果 [#s5efc169] 以下のキャプチャの通り、電源状態が変わった場合(今回はAC駆動、バッテリ駆動のみ判定)、スリープ前、スリープから復帰時にTextBlockに~ 時間とメッセージを追記しています。~ スリープ前、スリープ復帰時にメッセージが追記されているのができます。~ AC ON|OFF Line はノートPCから電源ケーブルを抜き差しすると出力されます。 #ref(01.png) * C# サンプルコード [#g8ad412a] サンプルコードは、上記参考サイトを利用させて頂き追記しました。~ WPFのため、SystemInformation.PowerStatusは使えず(System.Windows.Formsのため)、UWPのWindows.Devices.Powerを使うための設定も面倒なので、~ DllImportによりGetSystemPowerStatusを使う方法で、AC駆動、バッテリ駆動を判別しています。 以下、追記・修正したファイルのみとなります。 ** MainWindow.xaml [#t5ce2792] <Window x:Class="SuspendResume.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:SuspendResume" mc:Ignorable="d" Title="MainWindow" Height="400" Width="400"> <Grid> <TextBlock Name="MsgTxtBlk" /> </Grid> </Window> ** MainWindow.xaml.cs [#yd0de3ab] using Microsoft.Win32; using System; using System.Runtime.InteropServices; using System.Windows; namespace SuspendResume { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); MsgTxtBlk.Text = "Start" + Environment.NewLine; ; MonitorPowerModes(); } private void MonitorPowerModes() { SystemEvents.PowerModeChanged += (sender, e) => { string nowTime = DateTime.Now.ToString("HH:mm:ss"); switch (e.Mode) { case PowerModes.Suspend: MsgTxtBlk.Text += nowTime + " - Suspend" + Environment.NewLine; break; case PowerModes.Resume: MsgTxtBlk.Text += nowTime + " - Resume" + Environment.NewLine; break; case PowerModes.StatusChange: MsgTxtBlk.Text += nowTime + " - " + ACLineStatusMsg() + Environment.NewLine; break; default: MsgTxtBlk.Text += nowTime + " - Unknown" + Environment.NewLine; break; } }; } [StructLayout(LayoutKind.Sequential)] public struct SYSTEM_POWER_STATUS { public byte ACLineStatus; public byte BatteryFlag; public byte BatteryLifePercent; public byte Reserved1; public int BatteryLifeTime; public int BatteryFullLifeTime; } [DllImport("kernel32.dll")] static extern bool GetSystemPowerStatus(out SYSTEM_POWER_STATUS lpSystemPowerStatus); private string ACLineStatusMsg() { SYSTEM_POWER_STATUS sps = new SYSTEM_POWER_STATUS(); _ = GetSystemPowerStatus(out sps); string msg = ""; switch (sps.ACLineStatus) { case 0: msg = "AC OFF line."; break; case 1: msg = "AC ON line."; break; case 255: default: msg = "Unknown."; break; } return msg; } } } 以上、サスペンド前、サスペンド復帰時に処理を記述する方法でした。 #htmlinsert(windev-btm.html)
テキスト整形のルールを表示する
添付ファイル:
01.png
125件
[
詳細
]
SuspendResume.zip
142件
[
詳細
]