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

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.


#5
vote_ok
von stbehl (1640 Punkte) - 06.02.2018 um 10:26 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Diagnostics;
using System.ComponentModel;
using System.Windows;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace TrainYourProgrammer45
{
    class Program
    {
        static void Main(string[] args)
        {
            int aktivesProgramm = 0;
            while (true)
            {
                foreach (Process prozess in Process.GetProcesses()) 
                {
                    if (GetActiveWindowTitle() == prozess.MainWindowTitle && prozess.Id != aktivesProgramm && prozess.ProcessName != "TrainYourProgrammer45")
                    {
                        Console.WriteLine("Fenstername: " + prozess.MainWindowTitle);
                        Console.WriteLine("Prozessname: " + prozess.ProcessName);
                        Console.WriteLine();
                        // ID?
                        aktivesProgramm = prozess.Id;
                    } 
                }
            }
        }

        [DllImport("user32.dll")]
        static extern IntPtr GetForegroundWindow();
        [DllImport("user32.dll")]static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int zaehler);
        private static string GetActiveWindowTitle()
        {
            const int zaehler = 256;
            StringBuilder Buff = new StringBuilder(zaehler);
            IntPtr aktivesFenster = GetForegroundWindow();

            if (GetWindowText(aktivesFenster, Buff, zaehler) > 0)
            {
                return Buff.ToString();
            }
            else
            {
                return null;
            }

        }
    }
}

Kommentare:

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

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