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

question-closed Funkcja wywoływana wraz z zamknięciem programu

Aruba Cloud - Virtual Private Server VPS
0 głosów
258 wizyt
pytanie zadane 18 listopada 2015 w C i C++ przez qwertz Użytkownik (850 p.)
zamknięte 19 listopada 2015 przez qwertz
Pytanie.

Jak zrobić aby wraz z wyłączeniem programu "iksem" lub z menadżera zadań wyłowywana była jakaś funkcja?
komentarz zamknięcia: Problem rozwiązany

3 odpowiedzi

+4 głosów
odpowiedź 18 listopada 2015 przez Radfler VIP (101,030 p.)
wybrane 18 listopada 2015 przez qwertz
 
Najlepsza

Aby wywołać funkcję na zakończenie programu, musisz ją (jak pewnie wiesz) utworzyć. Musi wyglądać o tak:

void function(void) {
  // Instrukcje
}

Następnie musisz użyć funkcji std::atexit z biblioteki <cstdlib>, aby tą funkcję zarejerstrować. Robisz to o tak:

std::atexit(&function);

Jak argument funkcji wysyłasz wskaźnik na funkcję. Zarejerstrowane funkcje zostaną wywołane zawsze na zakończenie programu, czyli po wywołaniu std::exit (http://en.cppreference.com/w/cpp/utility/program/exit).

Tu masz więcej o std::atexit: http://en.cppreference.com/w/cpp/utility/program/atexit

komentarz 18 listopada 2015 przez niezalogowany
No proszę, czyli jednak Google nie boli ;)
komentarz 18 listopada 2015 przez qwertz Użytkownik (850 p.)
Dzięki wielkie, bardzo pomogło.
komentarz 18 listopada 2015 przez qwertz Użytkownik (850 p.)
A i jeszcze jedno jak zrobić aby była wywoływana jedynie podczas zamykania X a nie przez sam w sobie program?
komentarz 19 listopada 2015 przez Radfler VIP (101,030 p.)
Tego się wykryć nie da, chyba że użyjesz zewnętrznych bibliotek.
+1 głos
odpowiedź 18 listopada 2015 przez Patrycjerz Mędrzec (192,320 p.)

Okienko jest obsługiwane przez jakieś systemowe API, więc musisz mieć dostęp do niego, aby wykryć przyciśnięcie danego przycisku. Jeśli chodzi o system Windows, to przeczytaj artykuł tłumaczący zdarzenia w Windows APIhttp://cpp0x.pl/kursy/Kurs-WinAPI-C++/Podstawy/Obsluga-myszy-i-klawiatury/179.

Jeśli chodzi o wykrycie zamknięcia procesu przez Menedżer zadań, to... najprawdopodobniej nie da się tego zrobić, gdyż wtedy program jest zamykany natychmiast, odgórnie i trudno by było przewidzieć taką sytuację.

EDIT: Widzę, że Windows API posiada pewne zdarzenia, które mogłyby wykryć zamknięcie programu w każdych warunkach, ale nie jestem tego pewien, gdyż tego nie używałem. Musisz sam to sprawdzić.

0 głosów
odpowiedź 18 listopada 2015 przez niezalogowany
Obawiam się, że ot tak w kodzie, to się nie da. Znam sposób z SFML-em i wciśnięciem X, ale to już nie konsola. Jak się da jakimiś innymi sposobami, to się chętnie dowiem :)

Podobne pytania

0 głosów
2 odpowiedzi 166 wizyt
pytanie zadane 12 grudnia 2015 w C i C++ przez Indelencio Początkujący (410 p.)
–3 głosów
2 odpowiedzi 469 wizyt
pytanie zadane 18 sierpnia 2023 w Systemy operacyjne, programy przez niezalogowany
–1 głos
1 odpowiedź 873 wizyt
pytanie zadane 16 kwietnia 2020 w C i C++ przez informatyka.c Nowicjusz (120 p.)

93,331 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,667 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...