6

I want create using C# window with setted parent to my defined handle, this is a other process window handle.

Anyone know how to do this?

Greetings,

Svisstack
  • 16,203
  • 6
  • 66
  • 100

2 Answers2

7

If I understood your question correctly you should be able to achieve what you want by using something like this:

class Win32Window : IWin32Window
{
    IntPtr handle;

    public Win32Window(IntPtr handle) { this.handle = handle; }

    public IntPtr Handle
    {
        get { return this.handle; }
    }
}

static void Main()
{
    IntPtr targetParent = // Get handle to the parent window

    new MainForm().ShowDialog(new Win32Window(targetParent));
}

This will turn MainForm a child window of the specified window making it always appear above it. I use ShowDialog in the example, but this should also work for Show. This is specific for Windows Forms.

In WPF you can try the following:

var helper = new WindowInteropHelper(/* your Window instance */);

helper.Owner = // Set with handle for the parent

I quickly tried this after showing the WPF window and it seemed to work as expected, but WPF knowledge is not that great.

João Angelo
  • 56,552
  • 12
  • 145
  • 147
3

I believe the Handle will be read-only; therefore, the .Parent property is read-only. However, the .Owner property has a getter and a setter (ref. MSDN) ... however, you must have a reference to the Parent window.

Without more information, I will not be able to provide much more than that.

If your parent candidate is an unmanaged Window, check this link.

IAbstract
  • 19,551
  • 15
  • 98
  • 146