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

Program do sumowania czasu

Object Storage Arubacloud
0 głosów
140 wizyt
pytanie zadane 21 kwietnia 2017 w C# przez karmider013 Początkujący (340 p.)
Siemanko,

Chciałbym zrobić mały program w C#, który zliczałby ile czasu używałem na komputerze danej aplikacji / gry, jednak napotkałem na problem ze sprawdzaniem czy dany program działa w tle.

Jakie są sposoby na sprawdzenie tego na przykład w Windows Form Application czy WPF ?

1 odpowiedź

+1 głos
odpowiedź 22 kwietnia 2017 przez NowyUrzydgownig Mądrala (5,090 p.)
Możesz sprawdzić, czy twoje okno jest aktywne, nieaktywne, zamknięte i wiele więcej w bardzo prosty sposób. A mianowicie otwórz sobie designer formularza, następnie zaznacz go i kliknij właściwości, następnie kliknij na ikonkę pioruna(jak najedziesz na niego to będzie napisane Events). Możesz sobie poprzeglądać wszystkie zdarzenia jakie tam są, jednak ciebie interesuje najbardziej Deactivate i Activated, które znajdują się w zakładce Focus. Kliknij dwa razy na nazwę zdarzenia, aby automatycznie dodać kod.
komentarz 22 kwietnia 2017 przez karmider013 Początkujący (340 p.)

To znaczy, mogę dzięki temu sprawdzić aktywność jakiejkolwiek aplikacji której właśnie używam np: korzystał z notepada i moja aplikacja zaczyna liczyć ile czasu jest włączony ?

komentarz 22 kwietnia 2017 przez NowyUrzydgownig Mądrala (5,090 p.)

Nie, nie. Źle cię zrozumiałem. Aby sprawdzić, czy aplikacja działa w tle jest prosto zakładając, że masz ją w jakikolwiek sposób uchwyconą. Dużo łatwiej jest sprawdzić, która aplikacja jest aktywna. To znaczy, możesz z łatwością chwycić okno, które jest obecnie aktywne. Robisz to w następujący sposób:

[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        private static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
     private static extern int GetWindowThreadProcessId(IntPtr handle, out int processId); 
public static int ApplicationIsActivated()
        {
            var activatedHandle = GetForegroundWindow();
            if (activatedHandle == IntPtr.Zero)
            {
                return -1;       // Brak aktywnego okna
            }

            
            int activeProcId;
            GetWindowThreadProcessId(activatedHandle, out activeProcId);

            return activeProcId;
        }

 

komentarz 22 kwietnia 2017 przez karmider013 Początkujący (340 p.)

Ooo, czegoś takiego potrzebowałem. Dziękismiley

Podobne pytania

–1 głos
2 odpowiedzi 650 wizyt
0 głosów
4 odpowiedzi 2,390 wizyt
pytanie zadane 22 grudnia 2017 w C# przez summik999 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 217 wizyt
pytanie zadane 26 sierpnia 2016 w Offtop przez Ajtenstelar Nowicjusz (240 p.)

92,554 zapytań

141,399 odpowiedzi

319,535 komentarzy

61,938 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...