@Sunil A M, Welcome to Microsoft Q&A, I recommend that you use SystemEvents.PowerModeChanged event to detect if system is going to sleep or resume back.
Please note that there is no direct way to tell the difference between system resume back from sleep and system resume back from hibernate.
You could look at the answer to know more about the reason. Therefore, you could try the following code to do something when the system goes to sleep or when the system resume back from sleep or hibernate.
static void Main(string[] args)
{
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
Console.ReadKey();
}
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
switch (e.Mode)
{
case PowerModes.Resume:
var now = DateTime.Now;
// Build the log message
var message = $"System resumed from sleep at {now.ToString()}";
// Write the message to a text file
var logPath = "C:\\Logs\\";
var fileName = "resumelog.txt";
var fullPath = Path.Combine(logPath, fileName);
File.WriteAllText(fullPath, message );
break;
case PowerModes.Suspend:
var now1 = DateTime.Now;
// Build the log message
var message1 = $"System went to sleep at {now1.ToString()}";
// Write the message to a text file
var logPath1 = "C:\\Logs\\";
var fileName1 = "sleeplog.txt";
var fullPath1 = Path.Combine(logPath1, fileName1);
File.WriteAllText(fullPath1, message1);
break;
}
}
Hope my code could help you.
Best Regards,
Jack
If the answer is helpful, please click "Accept Answer" and upvote it. Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.