Uspat pocitac – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Uspat pocitac – C / C++ – Fórum – Programujte.comUspat pocitac – C / C++ – Fórum – Programujte.com

 

cheki
~ Anonymní uživatel
26 příspěvků
19. 11. 2012   #1
-
0
-

cawes...chcel by som pomocou C++ spravit program ktory by mi po zadani casu, alebo preddefinovaneho casu uspal pocitac

spravil som si podobny program na vypnute(neviem ci to je napisane ako ma ale ideto, rady privitam)

#include <iostream>
using namespace std;
void showmenu();    
void prva();
void druha();
void tretia();
void stvrta();

int main()
{
   showmenu();
   int choice;
   cin >> choice;
   while (choice != 5)
   {
      switch(choice)
      {
         case 1 : prva();
            break;
         case 2 : druha();
            break;
         case 3 : tretia();
            break;
         case 4 : stvrta();
            break;
         default : cout << "Zla volba.\n";
      }

      showmenu();
      cin >> choice;
   }
   cout << "Maj sa!\n";
   return 0;
}

void showmenu()
{
   cout << "Prosim, stlac 1, 2, 3, 4 alebo 5:\n"
   "1) Pocitac sa vypne za 15 minut \n"
   "2) Pocitac sa vypne za 30 minut \n"
   "3) Pocitac sa vypne za 45 minut \n"
   "4) Pocitac sa vypne za 60 minut \n"
   "5) exit \n";
 
}

void prva()
{
   system("C:\\WINDOWS\\System32\\shutdown /s /t 900");
   cout << "Pocitac sa vypne za 15 minut.";
   exit(1);
}

void druha()
{
  system("C:\\WINDOWS\\System32\\shutdown /s /t 1800");
  cout << "Pocitac sa vypne za 30 minut.";
  exit(1);
}

void tretia()
{
   system("C:\\WINDOWS\\System32\\shutdown /s /t 2700");
   cout << "Pocitac sa vypne za 45 minut.";
   exit(1);
}

void stvrta()
{
  system("C:\\WINDOWS\\System32\\shutdown /s /t 3600");
  cout << "Pocitac sa vypne za 60 minut.";
  exit(1);
}

spravil som to aj takto

#include <iostream>


int main()
{
   char ch;

   std::cout <<"Vypnut za 30min(a), 45min(b), 60min(c)? (a/b/c)\n";
   std::cin >>ch;


   do
   system("C:\\WINDOWS\\System32\\shutdown /s /t 1800");
   while (ch == 'a' || ch == 'A');
   std::cout <<"system sa vypne za 30min\n";
 
   std::cin.get();
   std::cin.get();

   do
   system("C:\\WINDOWS\\System32\\shutdown /s /t 2700");
   while (ch == 'b' || ch == 'B');
   std::cout <<"system sa vypne za 45min\n";
 
   std::cin.get();
   std::cin.get();

   do
   system("C:\\WINDOWS\\System32\\shutdown /s /t 3600");
   while (ch == 'c' || ch == 'C');
   std::cout <<"system sa vypne za 60min\n";

   std::cin.get();
   std::cin.get();
 
  return 0;
}

netusim ktore je spravnejsie...s c++ len zacinam a snazim sa zatial robit take jednoduche programy. Kedze pocitac nie vzdy chcem vypnut ale iba uspat tak by som chcel na to spravit program...bohuzial neviem ako.

Skusal som to v podstate tak isto ako programy vyssie ale s tymyo - system("rundll32.exe powrprof.dll,SetSuspendState 0,1,0)

az na to ze pocitac sa uspi, ale nie za cas aky nastavim (ale hned) a druhy problem je v tom ze ked pocitac uspim tak sa hned uspi pretoze program stale ide :D

dakujem za pomoc

Nahlásit jako SPAM
IP: 193.87.114.–
Mutagen
~ Anonymní uživatel
549 příspěvků
19. 11. 2012   #2
-
0
-

Co třeba udělat jen jednu funkci kde bys poslal udaje jako minuty? něco jako  

void Shutdown(int minutes)
{
	int second = minutes * 60;
	system("C:\\WINDOWS\\System32\\shutdown /s /t second");
	cout << "Počítač se vypne za " << minutes << " minut" << endl;
}

void Main()
{
	int minutes;
	cout << "Zadej za jak dlouho se vypne PC a pro ukonceni napis 0" << endl;
	cin << minutes;
	if (minutes == 0) 
		return EXIT_SUCCESS;
	else 
		Shutdown(minutes);
	
}
Nahlásit jako SPAM
IP: 82.202.104.–
Mutagen
~ Anonymní uživatel
549 příspěvků
19. 11. 2012   #3
-
0
-

Edit : samozřejmě tam musíš doplnit tu promennou do toho system na konci (second) nějak sem to napsal do stringu nechtěně sem to psal z hlavy. Takže snad to mám dobře napsaný.

Nahlásit jako SPAM
IP: 82.202.104.–
cheki
~ Anonymní uživatel
26 příspěvků
19. 11. 2012   #4
-
0
-

hej nad niecim podobnym som rozmyslal, zatial som to riesil iba s tym ze mam uz vopred dany cas a ze si vyberem, pretoze chcel by som to nejak skusit cez windows form nech mam z toho normalnu aplikaciu(zatial to neviem:D)

a na uspanie pc nevies ako?? ten jeden prikaz neviem ako ma byt a neviem to ani nikde najst ako by som to mohol spravit na uspanie

ale dik za toto :)

Nahlásit jako SPAM
IP: 193.87.115.–
Mutagen
~ Anonymní uživatel
549 příspěvků
19. 11. 2012   #5
-
0
-

No to opravdu nevím to uspání. Našel jsem jenom co ti ten PC dá do hibernace což je "shutdown /h" ale tam nevím zda se tam zadává čas nebo ne ... 

Ale pokud chceš uspat po nějakým čase, tak si udělej funkci co ti odpočítává čas třeba po 1 sec (bool) a pokud by to naběhlo určitý počet a větší tak spustit příkaz uspání.  Neboli takhle

while (true)
{
	if (CheckTime()) // pokud vrátí true provede se uspání 
		SleepPC(); // funkce na uspání
Sleep(1000); // Uspí program na 1 sec
}

int Time = 10; // v sekundách nastavíš třeba pomocí cin 

bool CheckTime()
{
	Time--;
	if (Time <= 0)
		return true;
	else
		return false;
}

V C++ nejsem moc zdatnej ale snad by ti to mohlo stačit nějak takhle ... Vlastně uspalo by to PC po určitým čase (ale program by byl pustěnej, ale to okno by se dalo pak schovat).

Nahlásit jako SPAM
IP: 82.202.104.–
cheki
~ Anonymní uživatel
26 příspěvků
19. 11. 2012   #6
-
0
-

no sak toto ze on bude spusteny, cize ked ozivim pc tak sa to zase spusti :/

Nahlásit jako SPAM
IP: 193.87.115.–
Mutagen
~ Anonymní uživatel
549 příspěvků
19. 11. 2012   #7
-
0
-

#6 cheki
Co se zase spustí? 

Nahlásit jako SPAM
IP: 82.202.104.–
Radek Chalupa
~ Redaktor
+1
Super člen
19. 11. 2012   #8
-
0
-

Můžeš použít API funkci SetWaitableTimer, která v zadaném čase dá signál a na ten zavolat funkci pro uspání, nejspíš zmíněnou SetSuspendState. Nebo spustit timer pomocí SetTimer ¨s nějakým rozumným intervalem (např. 10 sekund) a v každém tiknutí timeru pomocí GetLocalTime testovat zda aktuální čas je >= než požadovaný a opět vyvolt to uspání.

Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 213.220.211.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 50 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý