@micran - widzę, że bardzo poruszyło cię to, że wyśmiałem twój post. Nie miałem zamiaru cię obrazić, a jedynie zdementować błędne informacje.
Nieefektywne wysyłanie co jakiś czas jednego bita informacji? Kpisz ? bo inaczej tego nie da się zinterpretować, po za tym skoro autor ma komunikacje z serwerem to i tak sie z nim czesciej kontaktuje.
Timer nic nie pomoże, bo w momencie zamykania aplikacji muszę dać znać do serwera, że jej działanie się kończy i ustawić w nim pewne flagi. Czyli mogę to zrobić wyłącznie w momencie, kiedy rozpoznam, że aplikacja jest zamykana.
Czyli nawet nie nieefektywne, a niemożliwe.
Pomyśl trochę, jest tyle wirusów które potrafią wychwycić każdy klawisz a tu nagle nie można ?! :D
Ależ można. Tylko że większość z tych wirusów korzysta z hooków na klawiaturę, które nie mają możliwości przechwycenia kombinacji takich jak ALT-CTRL-DEL. Kombinacja ALT-CTRL-DEL pod windowsem jest obsługiwana prze system operacyjny i nie dochodzi do żadnej aplikacji. Nie jest także możliwe jej przechwycenie bez modyfikowania kodu jądra. A aby to zrobić, trzeba mieć sterownik lub rootkita. Niezbyt dobry pomysł żeby używać tego drugiego w aplikacji użytkowej, a sterownik to overkill i też sporo problemów.
Punkt nr 2 : Skąd ty masz przerwania zamykania systemu ? Nigdzie takiego szyku nie użyłem, następnym razem lepiej musisz trolować :D
Jest też inny sposób przechwycisz w asemblerze przerwanie odpowiedzialne za zamykanie programu
Masz rację, programu nie systemu. Co nie zmienia faktu, że takie przerwanie nie istnieje. Zamykanie aplikacji jest procesem całkowicie programowym, zabicie procesu też. Nie występują w nim żadne przerwania.
Wstawienie przerwania = podstawienie pod adres przerwania swojej procedury, poczytaj "DOS 5.0", windows ma to do siebie, że powstał na dosie i działają te same przerwania.
I tu się mylisz, DoS jest systemem 16-bitowym, natomiast windows działa w 32 (lub 64) bitach w trybie chronionym. Tryb chroniony oznacza, że istnieje podział na kernel-mode i user-mode. Kod wykonywany w kernelmode moze wszystko, kod wykonywany w usermode nie może komunikować się z urządzeniami ani zarządzać pamięcią fizyczną (a jedynie przydzieloną mu pamięcią wirtualną). W trybie 16-bitowym adresy procedur obsługi przerwać są umieszczone w IVT, natomiast w trybie 32-bitowym i IDT. Są to zupełnie różne struktury danych, a każdy sensowny system operacyjny umieszcza IDT w obszarze dostępnym tylko kernelowi.
5. To tylko przykład ze da się każdy problem z różnych stron rozwiazać.
Tworzenie nowych okien cały czas to przykład bardzo złego rozwiązania. Po pierwsze, jego praca byłaby bardzo niestabilna, bo w momencie gdy odkryjesz że system nie utworzył ci okna nawet nie wiesz ile zostało ci czasu. A po drugie to ciągłe obciążanie systemu. Wreszcie, to idealny przykład znajdowania drogi dookoła problemu.
Pozwoliłem odpowiedzieć sobie tylko na kwestie techniczne. Wycieczki osobiste i inne niezwiązane kwestie pozostawiam bez komentarza. Jeśli masz jakąś kwestię techniczną pisz tutaj, jeśli inną to zapraszam na PW.