GetGUIThreadInfo (user32)
Last changed: -64.47.15.6

.
Summary

C# Signature:

[DllImport("user32.dll")]
static extern bool GetGUIThreadInfo(uint idThread, out GUITHREADINFO lpgui);

    public struct GUITHREADINFO
    {
        public int cbSize;
        public int flags;
        public int hwndActive;
        public int hwndFocus;
        public int hwndCapture;
        public int hwndMenuOwner;
        public int hwndMoveSize;
        public int hwndCaret;
        public System.Drawing.Rectangle rcCaret;
    }

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

GUITHREADINFO threadInfo = new GUITHREADINFO();
threadInfo.cbSize = Marshal.SizeOf( threadInfo );

GetGUIThreadInfo( 0, out threadInfo );

Sample Code:

    // Get WIndow Handle From Thread ID
    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool GetGUIThreadInfo(uint idThread, ref GUITHREADINFO lpgui);
    public struct GUITHREADINFO
    {
        public int cbSize;
        public int flags;
        public int hwndActive;
        public int hwndFocus;
        public int hwndCapture;
        public int hwndMenuOwner;
        public int hwndMoveSize;
        public int hwndCaret;
        public System.Drawing.Rectangle rcCaret;
    }

    public int getThreadWindowHandle( uint dwThreadId )
    {
        int hWnd = 0;

        // Get Window Handle and title from Thread
        Win32API.GUITHREADINFO guiThreadInfo = new Win32API.GUITHREADINFO();
        guiThreadInfo.cbSize = Marshal.SizeOf(guiThreadInfo);

        Win32API.GetGUIThreadInfo(dwThreadId, ref guiThreadInfo);

        hWnd = guiThreadInfo.hwndActive;
        return hWnd;
    }

Alternative Managed API:

Do you know one? Please contribute it!

Documentation