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
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.
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
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.