Jak sprawdzić, czy system ma ustawiony czasowy shutdown?

0

Napisałem krótki kod do opóźnionego wyłączania komputera:

#include <iostream>
#include <string>
#include <cstdlib>

int main()
{
   system("shutdown -a"); 
   std::cout << "Za ile min zamknac system? ";
   constexpr int secsPerMin{ 60 };
   int mins;
   std::cin >> mins;
   std::string command{ "shutdown -s -t " + std::to_string(mins * secsPerMin) };
   system(command.c_str());
}

Pierwsza linia system("shutdown -a"); anuluje wyłącznik czasowy i jest tam umieszczona, ponieważ wcześniejsze wywołanie
wyłącznika czasowego uniemożliwia ponowne wywołanie system(command.c_str()); (zamierzona zmiana odliczania).
Pytanie: Jak sprawdzić status wyłącznika czasowego, aby nie wywoływać pierwszej linii bez potrzeby?
W przypadku pierwszego uruchomienia aplikacji pojawia się komunikat, że proces nie jest uruchomiony, a chciałbym tego uniknąć.

1

Na windowsie możesz użyć funkcji InitiateShutdown. Jeśli komputer jest już zamykany zwróci ERROR_SHUTDOWN_IN_PROGRESS

Edit
Lepiej użyj funkcji InitiateSystemShutdown. Jeśli się nie powiedzie zwróci 0 i wtedy sprawdź błąd funkcją GetLastError(). GetLastError() zwróci ERROR_SHUTDOWN_IN_PROGRESS jeśli system jest już zamykany.
Poprzednia funkcja którą Ci podałem resetuje komputer po zamknięciu systemu

0

system("shutdown -a 2> /dev/null") załatwi sprawę wyświetlania niepotrzebnego komunikatu. Polecenie system działa za pośrednictwem powłoki, więc można dawać przekierowania... Choć nie wiem jak jest pod WIndowsem...

0
system("shutdown -a 2> /null"); 

1 użytkowników online, w tym zalogowanych: 0, gości: 1