Wykrycie wyłączenia komputera
Ostatnio zmodyfikowano 2014-03-01 15:33
AssSoft Temat założony przez niniejszego użytkownika |
Wykrycie wyłączenia komputera » 2014-02-24 15:41:47 Sprawa ma się następująco: Kiedyś stworzyłem program zapisujący włączenia komputera, niedawno znalazłem jego kod i postanowiłem go usprawnić dodając możliwość zapisywania wyłączeń komputera.
No i tu się pojawia pytanie, na które odpowiedzi jak dotąd nie znalazłem - Jak wykryć rozpoczęcie wyłączania komputera? Prosiłbym o szybką i prostą odpowiedź. |
|
DejaVu |
» 2014-02-24 15:50:21 Informacje o włączeniu i wyłączeniu komputera dostępne są w logach sytemowych, które można obejrzeć sobie aplikacją z panelu sterowania o nazwie "podgląd zdarzeń". Do tych logów można się dostać chyba poprzez WMI, więc nie trzeba 'monitorować' takich operacji za pomocą własnej aplikacji. |
|
xevuel |
» 2014-02-24 17:11:33 |
|
AssSoft Temat założony przez niniejszego użytkownika |
» 2014-02-24 22:15:03 @xevuel: Czyli mogę zrobić coś takiego?: case WM_QUERYENDSESSION: { NOTIFYICONDATA nid; nid.cbSize = sizeof( NOTIFYICONDATA ); nid.hWnd = hwnd; nid.uID = ID_TRAY1; nid.uFlags = 0; Shell_NotifyIcon( NIM_DELETE, & nid ); string tekst = "wyłączenie, "; time( & czas ); ata = ctime( & czas ); tekst += data; plik.open( "C:/programs/LogicLog/log.txt", ios::out | ios::in | ios::app ); plik << tekst; plik.close(); PostQuitMessage( 0 ); break; Mówiąc "trochę go usprawnić" miałem na myśli też to że zmieniłem go z programu konsolowego na program GUI, stąd jakaś część kodu może dziwnie wyglądać. aczkolwiek zanim usunąłem przycisk zamknięcia właśnie tak wyglądała obsługa WM_DESTROY. Korzystałem z niej do testów. @DejaVu: Niby tak, ale nic nie daje takiej satysfakcji jak kliknięcie w ikonkę swojego programu i zobaczeniu listy włączeń i wyłączeń jak na dłoni. |
|
DejaVu |
» 2014-02-24 22:25:09 Jak proces zostanie ubity to nie zobaczysz, że system został wyłączony. Jak uruchomisz tryb awaryjny to nie zauważysz, że komputer został włączony. WMI jest lepsze :) |
|
AssSoft Temat założony przez niniejszego użytkownika |
» 2014-03-01 15:33:37 Fakt, ale pozostaje jakiś czas ( nie mam zielonego pojęcia jaki ) od komunikatu WM_QUERYENDSESSION do ubicia procesu. Czas ten wystarczy na wykonanie powyższych instrukcji. WMI fakt faktem jest lepsze, ale dłużej trwa znalezienie poszukiwanej informacji. Program działa, poprawnie zapisuje informacje.
Zamykam. |
|
« 1 » |