Feedback

C# - Form in den Windowsvordergrund bringen

Veröffentlicht von am 7/4/2007
(1 Bewertungen)
Es wird eine Windows API genutzt um ein Fenster in den Windowsvordergrund zu bringen, auch wenn eine andere Applikation gerade den Fokus hat.
//Einbinden von:
using System.Runtime.InteropServices;

//Als externe Methode deklarieren...
[DllImport("User32.dll")]
static extern long SetForegroundWindow(int hwnd);

//Und einfach aus einer Form heraus aufrufen...
private void abInDenVordergrund()
{
    int hwnd = this.Handle.ToInt32();
    SetForegroundWindow(hwnd);
}
Abgelegt unter Vordergrund, Form, API.

3 Kommentare zum Snippet

FZelle schrieb am 7/5/2007:
Die Signatur von SetForegroundWindow ist
static extern bool SetForegroundWindow(IntPtr hwnd);
Dem entsprechend ist dann der aufruf auch einfach:

SetForegroundWindow(this.Handle);

Zur Signatur siehe:
http://www.pinvoke.net/default.aspx/coredll/SetForegroundWindow.html
Rüdiger Vossel schrieb am 7/6/2007:
Auch richtig, aber :-) laut dem Link, den Du angegeben hast ist die Signatur für die SetForegroundWindow aus der coredll:

coredll is for smart devices, not desktop Windows. Therefore, this information only applies to code using the .NET Compact Framework.
To see if information for SetForegroundWindow in other DLLs exists, click on Find References to the right.

Aber die gibt es tatsächlich auch in der user32.dll dann sieht es folgendermaßen aus:

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);

Also DANKE!
Koopakiller schrieb am 6/9/2013:
Für alle Interessierten: Die meisten Windows-Funktionen, die über DllImport gehohlt weerden, akzeptieren ein IntPtr oder ein Int32 als Parameter. Schließlich kann man beide relativ problemlos ineinander Umwandeln. Der Weg über IntPtr ist aber meistens schöner.
 

Logge dich ein, um hier zu kommentieren!