Podmínka pro ukončení Timeru – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Podmínka pro ukončení Timeru – C / C++ – Fórum – Programujte.comPodmínka pro ukončení Timeru – C / C++ – Fórum – Programujte.com

 

al3ss0
Duch
25. 11. 2012   #1
-
0
-

Zdravím, mám jeden dotaz. Vytvářím aplikaci v C++ WINDOWS FORMS APLICATION. Dotaz spočívá v tom, že jsem si vytvořil ,, keygenerátor s chybou proti pirátům :D " a po kliknutí na jeden z klíčů mi to ukáže počítadlo a ERROR . Počítadlo pouze počítá, ale já bych chtěl, aby to třeba po 2 min vyplo buď program, nebo rovnou celé pc, nebo aspoň něco( vysunulo mechaniku atd... :) ) .
Jinak tady je screen s kodem v Timeru a screen z aplikace:
http://www.2i.cz/e0f32f05d6

Děkuji za odpověď.

Nahlásit jako SPAM
IP: 93.99.163.–
Radek Chalupa
~ Redaktor
+1
Super člen
26. 11. 2012   #2
-
0
-

#1 al3ss
A s čím si nevíš rady? Nastavit timer na interval 2 minut (tj. 2 * 60 * 1000 ms) a na jeho tiknutí vypnout, odhlásit, restartovat pomocí funkce ExitWindowsEx, např.

ExitWindowsEx(EWX_POWEROFF, EWX_FORCEIFHUNG);

A pokud chceš vysunout mechaniku (že by s CDčkem nutným pro hru?) tak takhle: 

HANDLE _handle = CreateFile(L"\\\\.\\D:", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if (_handle == INVALID_HANDLE_VALUE)
	return;
DWORD _dw = 0;
DeviceIoControl(_handle, IOCTL_STORAGE_LOAD_MEDIA, NULL, 0, NULL, 0, &_dw, NULL);
CloseHandle(_handle);

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.–
al3ss0
Duch
26. 11. 2012   #3
-
0
-

#2 Radek Chalupa
Moc děkuji, ale nevím právě, kde ten interval napsat. Jestli do kodu, nebo to nějak nastavit v Timer properties?

Jinak Nešlo by to třeba, aby to odpočítávalo od 2 min? 2:00 -> 1:59 atd..

A to vypnutí pc mám také napsat do Timeru?  Chtěl bych, aby to vyplo po 2 min pc..

Tady je zdroják timeru.

Second ++;

    if (Second == 60) {
     Second = 0;
     Minute++;
   
    
   

   
    }

   
    Sec = Convert::ToString(Second);
    Min = Convert::ToString(Minute);  
    Time->Text = Min +  ":" + Sec;
  


   }

Ještě jednou děkuji.

Nahlásit jako SPAM
IP: 93.99.163.–
al3ss0
Duch
26. 11. 2012   #4
-
0
-

Vyřešíl jsem to tak, že jsem tam dal podmínku

 if(Minute == 2) { 
				 Timer->Enabled = false;

Takže se to teď zastaví při 2 min ..

Teď jen aby to vyplo nebo resetovalo pc..

Nebo ještě lepší by bylo, kdyby to po 2 minutách hodilo na http://xzone.cz/nahledgame.php3?…

Bylo by to i nejlepší řešení :)

Nahlásit jako SPAM
IP: 93.99.163.–
al3ss0
Duch
26. 11. 2012   #5
-
0
-

Omlouvám se za zbytečné zprávy. Ale rozhodl jsem se, že bych už 100% potřeboval vědět pro příkaz restartu pc.

Až Timer dovrší hodnoty 2:00, chtěl bych aby se resetovalo pc.

Děkuji.

Nahlásit jako SPAM
IP: 93.99.163.–
Radek Chalupa
~ Redaktor
+1
Super člen
26. 11. 2012   #6
-
0
-

#5 al3ss
V .NETu moc nedělám ale jestli si takhle z hlavy pamatuji tak třída Timer má property interval, kde zadáš v milisekundách interval tiknutí a pak zavoláš metodu Start a za 2 minuty se zavolá obsluha události. V ní pak můžeš zavolat jak jsem už zmínil ExitWindowsEx - pro restart s parametrem EWX_REBOOT, ostatně je to popsané v dokumentaci.

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.–
al3ss0
Duch
26. 11. 2012   #7
-
0
-

#6 Radek Chalupa
mohl bych poprosit o kod? nevím kde to ExitWindowsEx najít..

Nahlásit jako SPAM
IP: 93.99.163.–
Radek Chalupa
~ Redaktor
+1
Super člen
26. 11. 2012   #8
-
0
-
Nahlásit jako SPAM
IP: 213.220.211.–
al3ss0
Duch
26. 11. 2012   #9
-
0
-

#8 Radek Chalupa
Dobře, ale já pořád nevím, kam to vložit :) ..

Nahlásit jako SPAM
IP: 93.99.163.–
Radek Chalupa
~ Redaktor
+1
Super člen
26. 11. 2012   #10
-
0
-

#9 al3ss
Založil jsem WF projekt, na formulář přidal timer, nastavil interval 5000 a vytvožil obsluhu události Tick, Do stdafx.h je třeba přidat: 

#include <windows.h>
#pragma comment (lib, "user32.lib")
#pragma comment (lib, "advapi32.lib")

a tady je kód ve zdrojáku "formuláře" včetně nastavení privilegií, bez kterého to pokud nejsi přihlášený jako "nejtvrdší admin" asi nepůjde (podle toho jaký OS): 

	private: System::Void on_timer(System::Object^  sender, System::EventArgs^  e) {
				HANDLE h_token; 
				TOKEN_PRIVILEGES tkp; 
				if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &h_token)) 
				  return; 
				LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); 
				tkp.PrivilegeCount = 1;
				tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 
				AdjustTokenPrivileges(h_token, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); 
				if (GetLastError() != ERROR_SUCCESS) 
				  return; 
				 ExitWindowsEx(EWX_REBOOT, EWX_FORCEIFHUNG);
			 }
	private: System::Void on_load(System::Object^  sender, System::EventArgs^  e) {
				 this->timer1->Start();
			 }

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, 94 hostů

Podobná vlákna

Podmínka pro ukončení cyklu — založil K4BlOs

Podmínka pro okénko — založil Honza

Podmínka pro pole — založil Ryan99

Podmínka pro celý soubor — založil Mates

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ý