.NET/サスペンド前・復帰の時に処理を行いたい
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* サスペンド前・復帰の時に処理を行いたい時のサンプルコー...
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駆...
時間とメッセージを追記しています。~
スリープ前、スリープ復帰時にメッセージが追記されているの...
AC ON|OFF Line はノートPCから電源ケーブルを抜き差しすると...
#ref(01.png)
* C# サンプルコード [#g8ad412a]
サンプルコードは、上記参考サイトを利用させて頂き追記しま...
WPFのため、SystemInformation.PowerStatusは使えず(System.W...
DllImportによりGetSystemPowerStatusを使う方法で、AC駆動、...
以下、追記・修正したファイルのみとなります。
** MainWindow.xaml [#t5ce2792]
<Window x:Class="SuspendResume.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/x...
xmlns:x="http://schemas.microsoft.com/winfx/2006...
xmlns:d="http://schemas.microsoft.com/expression...
xmlns:mc="http://schemas.openxmlformats.org/mark...
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.NewLi...
MonitorPowerModes();
}
private void MonitorPowerModes()
{
SystemEvents.PowerModeChanged += (sender, e)...
{
string nowTime = DateTime.Now.ToString("...
switch (e.Mode)
{
case PowerModes.Suspend:
MsgTxtBlk.Text += nowTime + " - ...
break;
case PowerModes.Resume:
MsgTxtBlk.Text += nowTime + " - ...
break;
case PowerModes.StatusChange:
MsgTxtBlk.Text += nowTime + " - ...
break;
default:
MsgTxtBlk.Text += nowTime + " - ...
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 SYST...
private string ACLineStatusMsg()
{
SYSTEM_POWER_STATUS sps = new SYSTEM_POWER_S...
_ = 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(../)
* サスペンド前・復帰の時に処理を行いたい時のサンプルコー...
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駆...
時間とメッセージを追記しています。~
スリープ前、スリープ復帰時にメッセージが追記されているの...
AC ON|OFF Line はノートPCから電源ケーブルを抜き差しすると...
#ref(01.png)
* C# サンプルコード [#g8ad412a]
サンプルコードは、上記参考サイトを利用させて頂き追記しま...
WPFのため、SystemInformation.PowerStatusは使えず(System.W...
DllImportによりGetSystemPowerStatusを使う方法で、AC駆動、...
以下、追記・修正したファイルのみとなります。
** MainWindow.xaml [#t5ce2792]
<Window x:Class="SuspendResume.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/x...
xmlns:x="http://schemas.microsoft.com/winfx/2006...
xmlns:d="http://schemas.microsoft.com/expression...
xmlns:mc="http://schemas.openxmlformats.org/mark...
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.NewLi...
MonitorPowerModes();
}
private void MonitorPowerModes()
{
SystemEvents.PowerModeChanged += (sender, e)...
{
string nowTime = DateTime.Now.ToString("...
switch (e.Mode)
{
case PowerModes.Suspend:
MsgTxtBlk.Text += nowTime + " - ...
break;
case PowerModes.Resume:
MsgTxtBlk.Text += nowTime + " - ...
break;
case PowerModes.StatusChange:
MsgTxtBlk.Text += nowTime + " - ...
break;
default:
MsgTxtBlk.Text += nowTime + " - ...
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 SYST...
private string ACLineStatusMsg()
{
SYSTEM_POWER_STATUS sps = new SYSTEM_POWER_S...
_ = 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)
ページ名: