Авг 21, 2014 - Уроки C#, Уроки Visual Basic.NET Написать комментарий
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
А теперь, тот же самый пример, но только на 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()); // приминяем } } }
Похожие записи:
Метки: api функция, setparent, дочернее окно, родительское окно, чужое окно
Евгений
Просмотров: 7 049
Запись опубликована в 21:02