Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Process 如何在给定容器中启动进程?(如何在groupbox中启动Acrobat reader?)_Process_Containers_Preview_Parents - Fatal编程技术网

Process 如何在给定容器中启动进程?(如何在groupbox中启动Acrobat reader?)

Process 如何在给定容器中启动进程?(如何在groupbox中启动Acrobat reader?),process,containers,preview,parents,Process,Containers,Preview,Parents,我想在我的应用程序中显示pdf和xps文件的预览。因此,我希望能够运行一个进程,并为它指定“位置”或它应该运行的容器。 还有什么办法吗? 目前,我可以启动我想要的任何应用程序,并使用必要的ProcessStartInfo打开文件,但我需要将该应用程序包含在特定控件中,而不是作为一个独立的应用程序。 例如,我没有找到允许我执行此操作的.Parent属性。 如果你有什么想法,请告诉我。 提前感谢。一些发现: 首先: 第一种解决方案:将webbrowser控件用于: WebBrowser1.Url

我想在我的应用程序中显示pdf和xps文件的预览。因此,我希望能够运行一个进程,并为它指定“位置”或它应该运行的容器。

还有什么办法吗?

目前,我可以启动我想要的任何应用程序,并使用必要的ProcessStartInfo打开文件,但我需要将该应用程序包含在特定控件中,而不是作为一个独立的应用程序。

例如,我没有找到允许我执行此操作的.Parent属性。 如果你有什么想法,请告诉我。

提前感谢。


一些发现:

首先:

第一种解决方案:将webbrowser控件用于:

  WebBrowser1.Url = New System.Uri("file://" & myFileNameHere)
第二种解决方案(在此处找到:)

上述代码正在运行,可能需要改进。

我还在努力

有趣的问题,有趣的答案!我以前在应用程序中看到过这样的东西,用于在应用程序中重新定位Word等,直到现在才知道它是如何完成的:)webBrowser控件实际上非常强大:它打开了很多文件(.doc、.xls、.csv、.ppt、.xps、.pdf等)我发现WebBrowser控件存在一个问题:您需要考虑终止它为每个特定文件打开的进程。因此,您可能需要添加一些代码,如此处所示:,或者只需在打开文档之前和之后计算您的进程,然后在每次打开新文档和处理控件时杀死多余的一个。
Private Const WM_SYSCOMMAND As Integer = 274
Private Const SC_MAXIMIZE As Integer = 61488
Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer
Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer

 Private Sub Test3()
Try
        myProcess.Kill()
    Catch ex As Exception
        Dim ii As Integer = 33
    End Try

    Dim valueFileName As String = myFileNameHere 
    Dim myProcessInfo As New ProcessStartInfo
    myProcessInfo.FileName = myCompletePathToTheEXEFileHere
    myProcessInfo.WorkingDirectory = valueFileName.Substring(0, valueFileName.LastIndexOf("\") + 1)
    myProcessInfo.Arguments = valueFileName.Substring(valueFileName.LastIndexOf("\") + 1)
    myProcess.StartInfo = myProcessInfo
    myProcess.Start()
    myProcess.WaitForInputIdle()
    Threading.Thread.Sleep(500)
    SetParent(myProcess.MainWindowHandle, Me.GroupBox1.Handle)
    SendMessage(myProcess.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)