2011-09-14 7 views
0

私は自分のアプリケーションにpdfとxpsファイルのプレビューを表示したいと思います。だから私はプロセスを実行し、それが実行されるべき "場所"またはコンテナを与えることができるようにしたいと思います。

これはどうしてですか?

私は現在、ファイルを開くために必要なProcessStartInfoを使用して、必要なアプリケーションを起動できますが、スタンドアロンアプリケーションではなく、特定のコントロール内にアプリケーションを格納する必要があります。

たとえば、.Parentプロパティを見つけられませんでした。 アイデアがあれば教えてください。

ありがとうございます。


特定のコンテナでプロセスを開始するには? (どのようにグループボックスでアクロバットリーダーを起動するのですか?)VB.Netで

答えて

1

いくつかの所見:

ここで最初の

http://www.dreamincode.net/forums/topic/148658-embedding-another-program-into-app/

最初のソリューション:でWebBrowserコントロールを使用します(ここで見つける:http://www.tek-tips.com/viewthread.cfm?qid=1598720

WebBrowser1.Url = New System.Uri("file://" & myFileNameHere) 

第二の溶液

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) 

上記のコードは動作しており、おそらく改善される可能性があります。
私はまだそれに取り組んでいます!

+0

興味深い質問、面白い答え!私はアプリケーションの中でWordなどを再ホストするためのこれまでのようなものを見たことがあります。これまでのことは決して知られていません:) – Tom

+0

webBrowserコントロールは実際には非常に強力です:多くのファイル(.doc、.xls、.csv、 .ppt、.xps、.pdfなど) – PatTheFrog

+0

WebBrowserコントロールで見つかった1つの問題:特定のファイルごとに開かれたプロセスを強制終了させることを考える必要があります。だから、ここで見つけたようなコードをいくつか追加したいかもしれません:http://bytes.com/topic/visual-basic-net/answers/538885-webbrowser-excel-processs-till-running、またはあなたのプロセスを数えるだけで新しい文書を開くたびに、およびコントロールを破棄するたびに、余分なものを削除します。 – PatTheFrog

関連する問題