rka123 Temat założony przez niniejszego użytkownika |
[C++] Otwieranie programu o danej godzinie » 2015-06-20 18:39:25 Witam, próbuję stworzyć program, który otwiera plik o ustalonej godzinie. Siedzę nad tym od jakiegoś czasu szperając w googlach jak to można zrobić (jestem początkujący) i nie bardzo mi to wychodzi. Chciałbym, aby program uruchamiał się przy starcie systemu (wrzucenie do autostartu) i czekał na daną godzine, aby wtedy otworzyć plik. Na razie mam coś takiego: #include <iostream> #include <cstdlib> #include <windows.h> #include <time.h> #include <string.h> #include <ctime> using namespace std;
int main() { SYSTEMTIME czas; GetLocalTime( & czas ); while( czas.wHour != 18 && czas.wMinute != 36 ) { } if( czas.wHour == 18 && czas.wMinute == 36 ) ShellExecuteA( 0, 0, "***", 0, 0, SW_SHOW ); return 0; } Nie wiem co wsadzić w pętle, żeby leciała w nieskończoność aż do danego czasu. Bardzo proszę o jakąkolwiek pomoc :( Z góry dziękuję za odpowiedzi |
|
pekfos |
» 2015-06-20 20:21:06 Nie wiem co wsadzić w pętle, żeby leciała w nieskończoność aż do danego czasu. |
Nieskończoność, z definicji, nie ma końca. Zapewne w pętli powinieneś wstawić aktualizowanie zmiennej czas, jeśli warunek pętli będzie prawdziwy, to coś przecież musi sprawić, by kiedyś przestał taki być. while( czas.wHour != 18 && czas.wMinute != 36 )
|
To nie czeka do 18:36, nawet przy poprawnym kodzie w pętli. Pętla równie dobrze będzie czekać do 18:00, lub 12:36. if( czas.wHour == 18 && czas.wMinute == 36 )
|
Jeśli ten warunek miał mieć przeciwne znaczenie do tego z pętli, to piszesz program nielogicznie. Jeśli pętla ma czekać, aż jakieś wyrażenie będzie fałszywe, to po tej pętli będzie fałszywe. Sprawdzanie tego dodatkowym warunkiem nie ma sensu. |
|
rka123 Temat założony przez niniejszego użytkownika |
» 2015-06-20 20:42:20 Bardzo dziękuję za odpowiedź. Szukam informacji o aktualizowaniu 'czasu', ale chyba jestem jeszcze zbyt zielony na takie tematy. Szkoda, chciałem, żeby program o 7.35 otwierał mi notatnik, a tu wychodzi skomplikowany program :D Nie wiem jaki inny mógłbym dać argument do while, chodzi mi, żeby trzymała program jeśli godzina nie jest 18 ORAZ minuta nie jest 36, czy to nie działa w przypadku pętli while? W trzecim akapicie już kompletnie się zagubiłem, także dzięki bardzo za pomoc, najwyraźniej to nie temat dla mnie :)
|
|
pekfos |
» 2015-06-20 21:57:02 Szukam informacji o aktualizowaniu 'czasu', ale chyba jestem jeszcze zbyt zielony na takie tematy. Szkoda, chciałem, żeby program o 7.35 otwierał mi notatnik, a tu wychodzi skomplikowany program :D |
Doprawdy skomplikowane. Skopiować linię pobierającą czas do pętli. chodzi mi, żeby trzymała program jeśli godzina nie jest 18 ORAZ minuta nie jest 36 |
Lub. |
|
notabigthreat |
» 2015-06-20 22:42:36 Może przez system(/*...*/)? |
|
Roofy5 |
» 2015-06-21 00:22:10 A może tak: while( 1 ) { GetLocalTime( & czas ); if( czas.wHour == 18 && czas.wMinute == 36 ) break; } ShellExecuteA( 0, 0, "***", 0, 0, SW_SHOW );
Daj znać czy działa :-P |
|
Piastlis |
» 2015-06-21 13:48:05 Dodaj do pętli Sleep(60000). Program będzie się wykonywał w tempie 1 pętla na minutę.Procek będzie mógł zrobić coś jeszcze.... Albo inaczej.Jak godzina się nie zgadza to przerwa 30 min a jak się zgadza to 1 min.Albo policz ile jest ms między uruchomieniem twojego programu a czasem uruchomienia notepada. |
|
notabigthreat |
» 2015-06-21 15:26:00 A coś takiego? #include <windows.h> int main() { system( "at 18:36 /interactive notepad" ); }
|
|
« 1 » 2 |