GetWindowText (user32)
Last changed: -71.239.92.169

.
Summary

C# Signature:

[DllImport("user32.dll", SetLastError=true, CharSet=CharSet.Auto)]
static extern int GetWindowText(IntPtr hWnd, [Out] StringBuilder lpString, int nMaxCount);

VB Signature:

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function GetWindowText(ByVal hwnd As IntPtr, _
                       ByVal lpString As StringBuilder, _
                       ByVal cch As Integer) As Integer
End Function

User-Defined Types:

None.

Notes:

See also GetWindowTextLength

Tips & Tricks:

You can also use the SafeHandleZeroOrMinusOneIsInvalid rather than the IntPtr. The SafeHandleZeroOrMinusOneIsInvalid is only available in C# 2.0

Please add some!

Sample Code:

public string GetText(IntPtr hWnd)
{
    // Allocate correct string length first
    int length       = GetWindowTextLength(hWnd);
    StringBuilder sb = new StringBuilder(length + 1);
    GetWindowText(hWnd, sb, sb.Capacity);
    return sb.ToString();
}

vb.net sample

Public Function GetText(ByVal hWnd As IntPtr) As String
    Dim length As Integer
    If hWnd.ToInt32 <= 0 Then
        Return Nothing
    End If
    length = GetWindowTextLength(hWnd)
    If length = 0 Then
        Return Nothing
    End If
    Dim sb As New System.Text.StringBuilder("", length + 1)

    GetWindowText(hWnd, sb, sb.Capacity)
    Return sb.ToString()
End Function

Alternative Managed API:

The ManagedWindowsApi project (http://mwinapi.sourceforge.net) provides a

class ManagedWinapi.SystemWindow that has a Title property.

Documentation