Feedback

C# - Wie lange ist die letzte Benutzereingabe her?

Veröffentlicht von am 25.01.2019
(1 Bewertungen)
Es ist eigentlich eine Spielerei, aber vielleicht benötigt jemand diese Angabe :)
Möchte man herausfinden, wie lange es her ist, dass der aktuelle Benutzer keine Eingabe mehr per Maus oder Tastatur gemacht hat, kann man folgendes Snippet verwenden.
Dieses Beispiel gibt alle 100 Millisekunden aus, wie lange die letzte Eingabe per Maus oder Tastatur her ist. Wird keine Eingabe innerhalb von 10 Sekunden registriert, schließt sich das Programm.
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Administratoren - Kompakt

Nach dieser Schulung beherrschen Sie die Grundlagen des TFS. Sie erledigen administrative Aufgaben schnell und sicher.

C# Komplett

Sie kennen sich in objektorientierter Programmierung aus. Sie schreiben C++ oder Java? Und nun stehen Sie vor der Aufgabe, in C# Anwendungen zu erstellen. Das C# Komplett-Seminar verschafft Ihnen umfassende Programmierkenntnisse in dieser Sprache. Nach der Schulung entwickeln Sie selbständig Anwendungen mit C#. Sie kennen die Datentypen und Klassenbibliotheken der objektorientierten Programmiersprache C#. Der Komplettkurs setzt bei den Grundlagen von C# ein. Sie arbeiten mit Variablen und konvertieren Typen. Multithreading, Delegates, Generics sind nach dem Seminar für Sie kein Geheimnis mehr.

using System;
using System.Runtime.InteropServices;
using System.Threading;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            LastInput lastInPut = new LastInput();
            lastInPut.cbSize = (uint)Marshal.SizeOf(lastInPut);
            uint idleTime;

            while (true)
            {
                Thread.Sleep(100);
                Console.Clear();

                idleTime = Win32Access.GetIdleTime();
                Console.WriteLine("Last user input: {0} ms ago.", idleTime);

                if (idleTime > 10 * 1000)
                    Environment.Exit(0);
            }
        }
    }

    internal struct LastInput
    {
        public uint cbSize;
        public uint dwTime;
    }
    
    public class Win32Access
    {
        [DllImport("User32.dll")] private static extern bool GetLastInputInfo(ref LastInput plii);
        [DllImport("Kernel32.dll")] private static extern uint GetLastError();

        public static uint GetIdleTime()
        {
            LastInput lastinputinfout = new LastInput();
            lastinputinfout.cbSize = (uint)Marshal.SizeOf(lastinputinfout);
            GetLastInputInfo(ref lastinputinfout);
            return ((uint)Environment.TickCount - lastinputinfout.dwTime);
        }
    }
}
Abgelegt unter Eingabe, Benutzer, Zeit, Timeout.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!