SetParent — дочернее окно в свое окно

В данном примере, мы откроем дочернее окно в своем окне и в этом нам поможет SetParent

Функция SetParent заменяет родительское окно заданного дочернего окна.

Public Class Form1
    Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Integer, ByVal hWndNewParent As Integer) As Integer
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim OPF As New OpenFileDialog
        Dim prc As New Process
        OPF.Filter = ".EXE|*.exe"
        If OPF.ShowDialog = DialogResult.OK Then
            WindowState = FormWindowState.Maximized
            prc = Process.Start(OPF.FileName) ' запускаем процесс
        End If
        prc.WaitForExit(1000) ' маленькая задержка для появления окна, хоть WaitForExit совсем не для этой цели
        SetParent(prc.MainWindowHandle.ToInt32, Me.Handle.ToInt32) ' приминяем
    End Sub
End Class

setparent 438x350 SetParent   дочернее окно в свое окно

А теперь, тот же самый пример, но только на C#

using System.Diagnostics; // процесс
using System.Runtime.InteropServices; // для функции
namespace SetParent
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        [DllImport("user32.dll")]

        static extern int SetParent(int hWndChild, int hWndNewParent);
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog OPF = new OpenFileDialog();
            Process prc = new Process();
            OPF.Filter = ".EXE|*.exe";
            if (OPF.ShowDialog() == DialogResult.OK)
            {
                WindowState = FormWindowState.Maximized;
                prc = Process.Start(OPF.FileName);
            }
            prc.WaitForExit(1000); // задержка, до появления окна
            SetParent(prc.MainWindowHandle.ToInt32(), this.Handle.ToInt32()); // приминяем
        }
    }
}
  Метки: , , , ,
  Евгений
  Просмотров: 7 049
  Запись опубликована в 21:02

Есть что сказать? Тогда действуй!