Zdravím!
Právě jsem dodělal takový jednoduchý prográmek na vypnutí počítače s časováním, který používá
system("shutdown -s -t 10");
(já vím, je to prasárna, ale co nadělám), ale na konci jsem zjistil, že právě nejjednodušší věc, a to tento system("shutdown -s -t 10");
nefunguje a program začne odznovu.
Kdysi dávno mi toto pod Win XP fungovalo, ale nyní pod Win 7 nic.
Proto se vás chci zeptat, jestli nevíte, jestli je opravdu operačním systémem, že to nefunguje a pokud to tak je, tak zdali byste mi neporadili nějakou jinou srozumitelnou metodu na vypnutí počítače.
Pro jistotu přikládám zdrojový kód.
#include "main.h"
struct cas
{
int secs;
int mins;
int hrs;
};
struct zbytek
{
double secs;
double mins;
double hrs;
};
int main()
{
bool pojistka = true;
cas vypnuti;
zbytek zbyva;
cout << "Zadejte cas, za ktery se pocitac vypne: \nHodin: ";
cin >> vypnuti.hrs;
cout << "Minut: ";
cin >> vypnuti.mins;
cout << "Sekund: ";
cin >> vypnuti.secs;
vypnuti.secs += vypnuti.mins * 60;
vypnuti.secs += vypnuti.hrs * 3600;
clock_t delay = vypnuti.secs * CLOCKS_PER_SEC;
clock_t start = clock();
while (clock() - start < delay)
{
if ( ((delay - (clock()-start)) / CLOCKS_PER_SEC) % 10 == 0 )
if (pojistka)
{
//cout << "Do vypnuti zbyva: " << (delay-clock()+start) / CLOCKS_PER_SEC << " sekund." << endl;
zbyva.hrs = floor(double(((delay-clock()+start) / CLOCKS_PER_SEC) / 3600));
zbyva.mins = floor(double((((delay-clock()+start) / CLOCKS_PER_SEC) - (zbyva.hrs * 3600)) / 60));
zbyva.secs = ((delay-clock()+start) / CLOCKS_PER_SEC) - (zbyva.hrs * 3600) - (zbyva.mins * 60);
cout << "Do vypnuti zbyva: " << zbyva.hrs << " hodin(y), " << zbyva.mins << " minut, " << zbyva.secs << " sekund.\n";
pojistka = false;
}
if ( ((delay - clock()+start) / CLOCKS_PER_SEC) % 10 -1 == 0)
pojistka = true;
}
cout << "\nKonec!";
system("shutdown -s -t 10");
return 0;
}