• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wykonywanie funkcji przy wyłączaniu komputera

0 głosów
962 wizyt
pytanie zadane 18 sierpnia 2019 w C i C++ przez masywny123 Nowicjusz (120 p.)

Witam
Mam problem z licznikiem napisanym w C++ builder 6. Napisałem zdarzenie OnClose które zapisuje do pliku ilość naliczonych sekund, która jest wczytywana przy następnym uruchomieniu ale nie odbywa się ono przy wyłączaniu lub ponownym uruchamianiu komputera. Próbowałem już umieścić tą operację w zdarzeniu OnDestroy z takim samym skutkiem. Przy wyłączaniu samego programu funkcja wykonuje się prawidłowo. Z góry dziękuję za pomoc.

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
     container = IntToStr(s);
     std::ofstream plik;
     plik.open("seconds.txt", std::ios::out | std::ios::trunc);
     if(plik.good())
     {
         plik << container;
     }
     plik.close();
}


 

2 odpowiedzi

0 głosów
odpowiedź 19 sierpnia 2019 przez j23 Mędrzec (195,220 p.)

Zrób obsługę komunikatów WM_QUERYENDSESSION i WM_ENDSESSION.

–2 głosów
odpowiedź 19 sierpnia 2019 przez Wraith Gaduła (4,370 p.)

FormClose to ci dziala przy zamykaniu programu. ALe zanim zostanie zamkniety przy wysylaniu sygnalu do zamkniecia systemu musisz przechwycici taki sygnal. \

BOOL SetConsoleCtrlHandler(
    PHANDLER_ROUTINE HandlerRoutine,
    BOOL Add
);

BOOL WINAPI HandlerRoutine(
    DWORD dwCtrlType  
);

BOOL WINAPI ConsoleHandler(DWORD CEvent)
{
    char mesg[128];

    switch(CEvent)
    {
    case CTRL_SHUTDOWN_EVENT:
        
container = IntToStr(s);
     std::ofstream plik;
     plik.open("seconds.txt", std::ios::out | std::ios::trunc);
     if(plik.good())
     {
         plik << container;
     }
     plik.close();

        break;

    }
    return TRUE;
}

 

Podobne pytania

+1 głos
3 odpowiedzi 934 wizyt
pytanie zadane 26 marca 2016 w C i C++ przez aresers Początkujący (420 p.)
+1 głos
1 odpowiedź 822 wizyt

93,756 zapytań

142,715 odpowiedzi

323,363 komentarzy

63,353 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...