Laden...

Alle bereits geöffneten Fenster via Win32 API anzeigen und bei Klick in den Vordergrund bringen

Erstellt von Phil07 vor 4 Jahren Letzter Beitrag vor 4 Jahren 986 Views
P
Phil07 Themenstarter:in
2 Beiträge seit 2019
vor 4 Jahren
Alle bereits geöffneten Fenster via Win32 API anzeigen und bei Klick in den Vordergrund bringen

Hey,
ich Programmiere zurzeit eine Art Dock. Man könnte es mit zmb. Rocketdock vergleichen...
Mein Problem ist allerdings die richtige Verwendung der Win32 API. Ich versuche vergeblich alle bereits geöffneten Fenster anzuzeigen und beim Klick darauf in den Vordergrund zu ziehen... Ich möchte Quasi das mein Programm so wie die ganz normale Task-leiste funktioniert...
Ich habe auch schon einen sehr alten Beitrag hierzu gefunden, allerdings ist dieser schon 11 Jahre alt und bringt mich nicht wirklich weiter.. Eventuell kann mir jemand von euch etwas zur Win32 API und meinem Problem erklären oder einen bereits vorhanden Beitrag verlinken...

Mit Freundlichen Grüßen
Phil

H
523 Beiträge seit 2008
vor 4 Jahren

Zeig doch mal die relevanten Codeauszüge die Du schon hast & die nicht funktionieren.

20 Sekunden Googlen ergaben bei mir folgenden Code, der alle Prozesse mit MainWindowHandle ausliest und dann den ersten nach vorne holt:


[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(String lpClassName, String lpWindowName);

[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

                       IEnumerable<Process> openWindowProcesses = 
                    System.Diagnostics.Process.GetProcesses().Where(p => p.MainWindowHandle != IntPtr.Zero);

            if (openWindowProcesses.Any())
            {
                IntPtr handle = FindWindow(null, openWindowProcesses.First().MainWindowTitle);

                if (handle != IntPtr.Zero)
                {
                    SetForegroundWindow(handle);
                }
            }

Das ist nicht der Weisheit letzter Schluss, zeigt aber wie das ganze funktionieren kann.

P
Phil07 Themenstarter:in
2 Beiträge seit 2019
vor 4 Jahren

Hey, Danke für deine Hilfe.. habe grade eben nach neucoden und 4 Stunden lernens der WinApi es endlich geschaft es so hinzu bekommen wie ich es wollte. Danke echt <3

T
2.224 Beiträge seit 2008
vor 4 Jahren

Sieht schick aus, gibt es das später auch zum Download oder z.B. einen GitHub release?
Würde ich mir mal anschauen wollen 😃

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.