2012-05-27 4 views
0

Пожалуйста, помогите мне, как запустить внешнее приложение .exe в окне WPF.Как запустить внешнее приложение .exe в окне WPF

Ниже я могу открыть приложения Notepad.exe и WinWord.exe в окне WPF, но не другие приложения. Когда я пытаюсь открыть другие приложения .exe, он открывается в отдельном окне.

public partial class Window1 : Window 
{ 
    public IntPtr MainWindowHandle { get; set; } 


    [DllImport("user32.dll", SetLastError = true)] 
    private static extern long SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 


    //[DllImport("user32.dll", SetLastError = true)] 
    //private static extern int GetWindowLong(IntPtr hWnd, int nIndex); 

    public Window1() 
    { 
     InitializeComponent(); 

     try 
     { 
      //External exe inside WPF Window 
      System.Windows.Forms.Panel _pnlSched = new System.Windows.Forms.Panel(); 

      WindowsFormsHost windowsFormsHost1 = new WindowsFormsHost(); 

      windowsFormsHost1.Child = _pnlSched; 

      _Grid.Children.Add(windowsFormsHost1); 

      //_Grid.Children.Add(_pnlSched); 

      ProcessStartInfo psi = new ProcessStartInfo(@"C:\Program Files\Atwin\Atwin2k2.exe"); 

      psi.WindowStyle = ProcessWindowStyle.Normal; 

      Process PR = Process.Start(psi); 

      PR.WaitForInputIdle(); // true if the associated process has reached an idle state. 

      System.Threading.Thread.Sleep(3000); 

      IntPtr hwd = PR.MainWindowHandle; 
      SetParent(PR.MainWindowHandle, _pnlSched.Handle); // loading exe to the wpf window. 

     } 
     catch (Exception ex) 
     { 
      //Nothing... 
     } 
     } 



} 

ответ

0

Там может быть несколько вещей, которые могут вызвать такое поведение, здесь две разные вещи я столкнулся только сейчас:

Когда я пытался использовать vim.exe и самый первый раз, когда произошло исключение этого типа Библиотека не зарегистрирована, поэтому я зарегистрировался и после этого успешно загружен VIM.EXE. Это может быть поведение вашего приложения.

Когда я попытался загрузить Eclipse, и не было исключений, но Eclipse.exe был загружен за пределами окна WPF. Глядя в Spy ++ я нашел WM_ACTIVATEAPP сообщение, которое вызвавшее для Windows, чтобы открыть вне WPF окна, который описывает здесь почему:

http://support.microsoft.com/kb/89563

Так зависит от того, какие приложения вы пытаетесь открыть в вашем WPF, приложения не каждое приложение будет открыто, так как существуют определенные ограничения приложения.

+0

Спасибо за ваш ответ ... Приложение, которое я пытаюсь открыть в WPF Window, разработано в мэйнфреймах. –

0

string strReportPath = System.IO.Directory.GetCurrentDirectory();

 if (strReportPath.Substring(strReportPath.Length - 9) == "bin\\Debug") 
     { 
      strReportPath = strReportPath.Substring(0, strReportPath.Length - 10); 
     } 

     Process p = new Process(); 
     p.StartInfo = new ProcessStartInfo(strReportPath + @"\bin\Debug\drag.exe"); 
     p.Start(); 

// drag - ваше имя sln;

Смежные вопросы