Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Otwieranie programu o danej godzinie

Ostatnio zmodyfikowano 2015-06-22 15:47
Autor Wiadomość
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:
C/C++
#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 );
    //system("PAUSE");
    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
P-133841
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ć.

C/C++
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.

C/C++
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.
P-133848
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 :)
P-133853
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.
P-133859
notabigthreat
» 2015-06-20 22:42:36
Może przez system(/*...*/)?
P-133861
Roofy5
» 2015-06-21 00:22:10
A może tak:

C/C++
while( 1 )
{
    GetLocalTime( & czas );
    if( czas.wHour == 18 && czas.wMinute == 36 )
         break;
   
}
ShellExecuteA( 0, 0, "***", 0, 0, SW_SHOW );
//system("PAUSE");

Daj znać czy działa :-P
P-133863
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.
P-133866
notabigthreat
» 2015-06-21 15:26:00
A coś takiego?
C/C++
#include <windows.h>
int main()
{
    system( "at 18:36 /interactive notepad" );
}
P-133867
« 1 » 2
  Strona 1 z 2 Następna strona