Привязка прцесса с проводником к Exited событию

Делаю программу "Операционная система", возник с проблеммой при открытии проводника через программу - проводник открывается, но он во-первых не привязывается к окну программы (как это работало с .exe файлами - они существовали только в окне программы,закрыть их можно было только в программе, стиль программы менялся, становился подобным 7-й винде. Проводник такого не делал), а во-вторых при открытии сразу срабатывает событие Exited. Файлы с разширением .exe нормально открываются и подвязываются к окну. Вот сам код:

 private void MainWindow_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        CurrentDir = @"C:\Users\" + Environment.UserName + @"\Desktop\";
        try
        {
            Topmost = false;

            var proc = System.Diagnostics.Process.Start("explorer",System.IO.Path.Combine(CurrentDir, (sender as Button).ToolTip.ToString()));

            if (proc.WaitForInputIdle(Convert.ToInt32(TimeSpan.FromSeconds(30).TotalMilliseconds)))
            {
                //Здесь тоже может понадобиться ожидание 
                
                proc.EnableRaisingEvents = true;
                proc.Exited += Proc_Exited;
                IntPtr handle = new WindowInteropHelper(this).Handle;
                SetParent(proc.Handle, handle);
                Topmost = false;

                Button button = new Button();
                button.Height = 66;
                button.Width = 99;

                int i = Wrap1.Children.Count;

                Wrap1.Children.Add(button);

                (Wrap1.Children[i] as Button).Style = this.FindResource("GlassButton") as Style;
                (Wrap1.Children[i] as Button).ToolTip = (sender as Button).ToolTip;


                BitmapImage bit = new BitmapImage();
                bit.BeginInit();
                Uri u = new Uri(@"workspace\" + System.IO.Path.GetFileNameWithoutExtension((sender as Button).ToolTip.ToString()) + ".jpg", UriKind.RelativeOrAbsolute);
                bit.UriSource = u;
                bit.EndInit();
                ImageBrush image = new ImageBrush();
                image.ImageSource = bit;

                (Wrap1.Children[i] as Button).Background = image;
            }

        }
        catch (Exception ex)
        {

            MessageBox.Show(ex.ToString());
            
        }
    }

    private void Proc_Exited(object sender, EventArgs e)
    {
        try
        {
            
                MessageBox.Show("!");
                Application.Current.Dispatcher.Invoke(() =>
                {
                    Wrap1.Children.RemoveAt(1);
                });
            
        }
        catch(Exception ex) {  }
    }

Ответы (0 шт):