C# :: Aufgabe #45 :: Lösung #3

5 Lösungen Lösungen öffentlich
#45

Fensternamen ausgeben

Fortgeschrittener - C# von Process1 - 15.01.2013 um 06:51 Uhr
Erstelle ein Konsolenprogramm. In der Konsole sollen Fenstertitel & und zugehöriger
Prozessname ausgegeben werden, wenn das Vordergrundfenster wechselt. (Programm soll durchgehend laufen)

Die Konsole selber soll nicht ausgegeben werden.
Der Windows-Explorer soll nicht ausgegeben werden.

Konsolenausgabe:

Fenstername:  Windows Task-Manager
Prozessname: taskmgr

Fenstername: Neue Aufgabe erstellen - TRAIN your programmer - Google Chrome
Prozessname: chrome

usw.


#3
vote_ok
von Robi (390 Punkte) - 25.11.2015 um 15:14 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace Übungen_Zu_CSharp_45
{
    class Program
    {
        //Import der zwei benötigten Funktionen
        [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        static extern IntPtr GetForegroundWindow();
        [DllImport("user32.dll", SetLastError = true)]
        static extern uint GetWindowThreadProcessId(IntPtr frgWnd, out uint frgWndProcessId);

        static void Main()
        {
            string ProcessTitel = "";

            while (true)
            {
                //Felder
                uint ProcessId;
                string ProcessName;
                string tempProcessTitel;
                Process currProc = new Process();
                currProc = Process.GetCurrentProcess();
                IntPtr fw = GetForegroundWindow();

                //Fenster im Vordergrund bestimmen
                GetWindowThreadProcessId(fw, out ProcessId);

                //Fensternamen und Prozessnamen auslesen
                tempProcessTitel = Process.GetProcessById(Convert.ToInt32(ProcessId)).MainWindowTitle;
                ProcessName = Process.GetProcessById(Convert.ToInt32(ProcessId)).ProcessName;

                //Wenn die Konsole oder der Explorer im Vordergrund, das Fenster nicht gewechselt wurde oder der Titel leer wird nichts ausgegeben
                if (ProcessId == currProc.Id || ProcessName == "explorer" || tempProcessTitel == ProcessTitel || tempProcessTitel == "")
                {
                    continue;
                }
                else
                {
                    ProcessTitel = tempProcessTitel;
                }

                //Konsolenausgabe
                Console.WriteLine("Fenstername: " + ProcessTitel);
                Console.WriteLine("Prozessname: " + ProcessName + "\n");

                //Resourcen sparen
                System.Threading.Thread.Sleep(1000);
            }
        }
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben