Ich möchte die innere Größe und Position eines externen Fensters (wie Firefox oder Explorer) in C# bekommen. Ich habe versucht, aber es gibt nichts, womit ich anfangen kann (nur ganzes Fenster oder eigene Formulargröße).Erhalte die innere Größe und Position eines externen Fensters in C#
Antwort
Um dies mit beliebigen Fenstern zu tun, müssen Sie auf die Win32-API gehen.
Für die Position möchten Sie das Fensterrechteck. Sie benötigen dazu den Fenstergriff (HWND). Here's an answer describing how to do that. Hier ist der Code aus dieser Antwort:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowRect(HandleRef hWnd, out RECT lpRect);
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left; // x position of upper-left corner
public int Top; // y position of upper-left corner
public int Right; // x position of lower-right corner
public int Bottom; // y position of lower-right corner
}
Rectangle myRect = new Rectangle();
private void button1_Click(object sender, System.EventArgs e)
{
RECT rct;
if(!GetWindowRect(new HandleRef(this, this.Handle), out rct))
{
MessageBox.Show("ERROR");
return;
}
MessageBox.Show(rct.ToString());
myRect.X = rct.Left;
myRect.Y = rct.Top;
myRect.Width = rct.Right - rct.Left + 1;
myRect.Height = rct.Bottom - rct.Top + 1;
}
Er hat es mit dem Vordergrundfenster zu tun (siehe die Frage an der Spitze dieser Seite in Stackoverflow dem Link oben). Ich weiß nicht, welches Fenster du haben willst oder wie du es bekommen willst; du hast darüber keine Informationen zur Verfügung gestellt.
Sobald Sie den Fenstergriff haben, können Sie die Win32-Funktion GetClientRect()
aufrufen, um die inneren "Client-Bereich" Dimensionen des Fensters zu erhalten: Das bedeutet alles außer der Titelleiste und Rahmen. Die PInvoke-Deklaration dafür ist trivial, wenn Sie GetWindowRect()
in C# arbeiten, aber here it is anyway.
Was ist der Zweck? Warum C# ?? Ich denke, Sie sprechen über clientseitige Berechnungen. Geben Sie weitere Informationen an. –
Jedes Steuerelement verfügt über die Eigenschaften "Oben", "Links", "Breite" und "Höhe". Möglicherweise müssen Sie zuerst den Griff des Steuerelements abrufen. Der Griff wird ein Fenster haben und ein Fenster ist ein Steuerelement. – jdweng