Завершение работы Windows, перезагрузка, выход из системы, блокировка, спящий режим и спящий режим на C#

В этом примере показано, как программа C# может отключить Windows, перезагрузить, заблокировать, выйти из системы или спящий режим. Некоторые из этих операций требуют использования методов, определенных во внешних библиотеках, поэтому для их определения используются атрибуты DllImport. DllImport определяется в пространстве имен InteropServices, поэтому код включает этот using оператор:

using System.Runtime.InteropServices

Программа также использует процессы, поэтому она включает в себя следующую инструкцию using:

using System.Diagnostics

Следующие инструкции DllImport входят в класс для определения внешних методов ExitWindowsEx и LockWorkStation.

[DllImport("user32")]
public static extern bool ExitWindowsEx(uint uFlags, uint dwReason);

[DllImport("user32")]
public static extern void LockWorkStation();

При всех настройках код достаточно прост. Следующий код показывает, как выключение Windows, перезагрузка, выход из системы, блокировка, спящий режим и спящий режим.

// Завершение работы.
private void btnShutdown_Click(object sender, EventArgs e)
{
    var psi = new ProcessStartInfo("shutdown", "/s /t 0");
    psi.CreateNoWindow = true;
    psi.UseShellExecute = false;
    Process.Start(psi);
}

// Перезагружать.
private void btnReboot_Click(object sender, EventArgs e)
{
    var psi = new ProcessStartInfo("shutdown", "/r /t 0");
    psi.CreateNoWindow = true;
    psi.UseShellExecute = false;
    Process.Start(psi);
}

// Выйти.
private void btnLogOff_Click(object sender, EventArgs e)
{
    ExitWindowsEx(0, 0);
}

// Замок.
private void btnLock_Click(object sender, EventArgs e)
{
    LockWorkStation();
}

// Спящий режим.
private void btnHibernate_Click(object sender, EventArgs e)
{
    Application.SetSuspendState(PowerState.Hibernate, true, true);
}

// Спать.
private void btnSleep_Click(object sender, EventArgs e)
{
    Application.SetSuspendState(PowerState.Suspend, true, true);
}

Все это работает хорошо, за исключением случаев, когда вы пытаетесь завершить работу или перезагрузиться. В этих случаях, если программы запущены, система выводит сообщение с запросом пользователя о том, следует ли продолжить или отменить, чтобы пользователь мог закрыть эти программы. Это разумно, но было бы неплохо иметь возможность отключить это сообщение. (Если вы выясните, как это сделать, сообщите мне .)

Обратите внимание также, что большинство программ действительно не должны выполнять эти операции, потому что у Windows есть инструменты, которые обрабатывают их просто отлично.

Источник: http://csharphelper.com/blog/2015/05/make-windows-shutdown-reboot-log-off-lock-hibernate-and-sleep-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 1,00 из 5)
Adblock
detector