Fenster in der Vordergrund holen

  • Mit diesem Snippet könnt ihr ein Fenster in den Vordergrund holen um z.B. Tastenanschläge mit Hilfe von SendKeys an dieses Fenster zu senden.


    Zunächst werden 2 Imports aus der User32.dll benötigt.


    Code
    1. // Handle eines Fensters holen
    2. [DlImport("USER32.DLL")]
    3. public static extern IntPtr FindWindow(string lpClassName,
    4. string lpWindowName);
    5. // Fenster über das Handle aktivieren
    6. [DllImport("USER32.DLL")]
    7. public static extern bool SetForegroundWindow(IntPtr hWnd);


    Verwendung:


    Code
    1. // Handle holen
    2. IntPtr hwnd = FindWindow("Notepad", "Unbenannt - Editor");
    3. // Wenn hwnd == 0 ist, existiert das Fenster nicht
    4. if (hwnd == IntPtr.Zero)
    5. MessageBox.Show("Not Found");
    6. else
    7. SetForegroundWindow(hwnd);


    Zu beachten: Es gibt keine Wildcards oder ähnliches. FindWindow sucht immer nach dem Fenster welches EXAKT den angegeben ClassName oder Titel hat (oder wenn beides angegeben eben beides).


    Benötigte Namespaces:
    - System.Runtime.InteropServices


    Gruß
    florian0

  • Wenn ich mich recht erinnere kann man aber auch nur den Titel bzw. ClassName eingeben. Das andere ist dann null.


    Gesendet von meinem GT-I9100 mit Tapatalk

  • Tatsache... Ich bin wiedermal auf null != nichts reingefallen xD.


    So sucht man nur nach der WindowClass
    [cs]IntPtr hwnd = FindWindow("Notepad", null);[/cs]


    Und so nur nach dem Titel
    [cs]IntPtr hwnd = FindWindow(null, "Unbenannt - Editor");[/cs]