Как я завершаю работу компьютера?

Вот еще один способ сделать это.

SELECT
    *
FROM
    LAST_NM
WHERE
    (LAST_NM_1 IS NULL OR LAST_NM_1 = COALESCE(LAST_NM_1, LAST_NM_2, LAST_NM_3, LAST_NM_4)) AND
    (LAST_NM_2 IS NULL OR LAST_NM_2 = COALESCE(LAST_NM_1, LAST_NM_2, LAST_NM_3, LAST_NM_4)) AND
    (LAST_NM_3 IS NULL OR LAST_NM_3 = COALESCE(LAST_NM_1, LAST_NM_2, LAST_NM_3, LAST_NM_4)) AND
    (LAST_NM_4 IS NULL OR LAST_NM_4 = COALESCE(LAST_NM_1, LAST_NM_2, LAST_NM_3, LAST_NM_4)) AND
    (LAST_NM_1 IS NULL OR LAST_NM_1 <> LAST_NM_ORIGINAL) AND
    (LAST_NM_2 IS NULL OR LAST_NM_2 <> LAST_NM_ORIGINAL) AND
    (LAST_NM_3 IS NULL OR LAST_NM_3 <> LAST_NM_ORIGINAL) AND
    (LAST_NM_4 IS NULL OR LAST_NM_4 <> LAST_NM_ORIGINAL)

Правка. Можно сократить до запроса ниже, поскольку вы хотите, чтобы хотя бы один из LAST_NM_ # не был нулевым:

SELECT
    *
FROM
    LAST_NM
WHERE
    (LAST_NM_1 IS NULL OR LAST_NM_1 = COALESCE(LAST_NM_1, LAST_NM_2, LAST_NM_3, LAST_NM_4)) AND
    (LAST_NM_2 IS NULL OR LAST_NM_2 = COALESCE(LAST_NM_1, LAST_NM_2, LAST_NM_3, LAST_NM_4)) AND
    (LAST_NM_3 IS NULL OR LAST_NM_3 = COALESCE(LAST_NM_1, LAST_NM_2, LAST_NM_3, LAST_NM_4)) AND
    (LAST_NM_4 IS NULL OR LAST_NM_4 = COALESCE(LAST_NM_1, LAST_NM_2, LAST_NM_3, LAST_NM_4)) AND
    (LAST_NM_ORIGINAL <> COALESCE(LAST_NM_1, LAST_NM_2, LAST_NM_3, LAST_NM_4))
6
задан sharptooth 20 March 2009 в 09:20
поделиться

6 ответов

Различные методы:

A. Система. Диагностика. Процесс. Запустите ("завершение работы", "-s-t 10");

B. Инструментарий управления Windows (WMI)

http://www.csharpfriends.com/Forums/ShowPost.aspx?PostID=36953

http://www.dreamincode.net/forums/showtopic33948.htm

C. Система. Время выполнения. InteropServices Pinvoke

http://bytes.com/groups/net-c/251367-shutdown-my-computer-using-c

D. Управление системой

http://www.geekpedia.com/code36_Shut-down-system-using-Csharp.html

После того, как я отправлю, я видел, что столь многие другие также отправляют...

5
ответ дан 8 December 2019 в 12:22
поделиться

Простой способ: Используйте Процесс. Начните выполнять shutdown.exe.

  shutdown /s /t 0

Программный путь: P/Invoke вызов к ExitWindowsEx

Это было бы подписью P/Invoke:

[DllImport("aygshell.dll", SetLastError="true")]
private static extern bool ExitWindowsEx(uint dwFlags, uint dwReserved);

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

10
ответ дан 8 December 2019 в 12:22
поделиться

WindowsController является c# классом обертки вокруг ExitWindowsEx.

Иногда необходимо перезапустить или завершить работу операционной системы из приложений (например, после установки программы). Платформа.NET предлагает Вам косвенный способ перезапустить компьютер через классы инструментария управления Windows (WMI) в Системе. Пространство имен управления, однако, там, кажется, некоторые проблемы в их реализации.

Вот почему мы создали класс WindowsController, который реализует некоторые API-функции, чтобы перезапустить и завершить работу Windows. Это поддерживает все режимы ExitWindowsEx, и это может также быть в спящем режиме и приостановить систему.

Этот класс доступен в версии VB.NET и C#. Это может быть скомпилировано в модуль.NET или в библиотеку, которая будет использоваться с других языков.NET. Так как это полагается на Windows API, это не будет работать над Linux или FreeBSD.

(mentalis.org)

3
ответ дан 8 December 2019 в 12:22
поделиться

Используйте изменение "пользовательского кода" выхода из системы, показанного здесь.

Тот код использует ExitWindowsEx Вызов API.

1
ответ дан 8 December 2019 в 12:22
поделиться

В (непротестированном) предположении:

Process.Start("shutdown", "-s -t 0");
0
ответ дан 8 December 2019 в 12:22
поделиться

Твердый путь, работы над ноутбуками отлично, хотя это занимает время:

Spawn a couple endless loops in more threads than cpu cores.
Wait for overheat which will automatically shutdown a computer.

:)

0
ответ дан 8 December 2019 в 12:22
поделиться