私はVB 2010で書かれたWindowsアプリケーションを持っています。ここでは、ユーザーは開いているダイアログから任意のファイルを選択できます。したがって、対応するアプリケーションでファイルを開きたいと思います。たとえば、ユーザーがdocxファイルを選択すると、mswordを使用してファイルを開く必要があります。それがpdfファイルの場合、アドビリーダーまたは利用可能なpdfリーダー(デフォルトのアプリケーション)で開く必要があるとします。
これは可能ですか?
私はVB 2010で書かれたWindowsアプリケーションを持っています。ここでは、ユーザーは開いているダイアログから任意のファイルを選択できます。したがって、対応するアプリケーションでファイルを開きたいと思います。たとえば、ユーザーがdocxファイルを選択すると、mswordを使用してファイルを開く必要があります。それがpdfファイルの場合、アドビリーダーまたは利用可能なpdfリーダー(デフォルトのアプリケーション)で開く必要があるとします。
これは可能ですか?
Shell
およびWindowsAPICreateProcess()
は、実行可能ファイルを起動するためのものです。ドキュメント/ファイルをロードしている場合、これらはShellExecute()
.NETによって処理され、次のProcess.UseShellExecute
プロパティを使用して開始できます。
Private Function ShellExecute(ByVal File As String) As Boolean
Dim myProcess As New Process
myProcess.StartInfo.FileName = File
myProcess.StartInfo.UseShellExecute = True
myProcess.StartInfo.RedirectStandardOutput = False
myProcess.Start()
myProcess.Dispose()
End Function
#VBwikiから取得。
これを試して:
今openfiledialogで
Dim OpenFileDlg as new OpenFileDialog.
OpenFileDlg.FileName = "" ' Default file name
OpenFileDlg.DefaultExt = ".xlsx" ' Default file extension
OpenFileDlg.Filter = "Excel Documents (*.XLSX)|*.XLSX"
OpenFileDlg.Multiselect = True
OpenFileDlg.RestoreDirectory = True
' Show open file dialog box
Dim result? As Boolean = OpenFileDlg.ShowDialog()
' Process open file dialog box results
for each path in OpenFileDlg.Filenames
Try
System.Diagnostics.Process.Start(Path)
Catch ex As Exception
MsgBox("Unable to load the file. Maybe it was deleted?")
End Try
If result = True Then
' Open document
Else
Exit Sub
End If
next
これは、ファイルが OS に登録されている場合に機能します。ファイルが使用中の場合はエラーがスローされる可能性があるため、Try catch を使用します。
編集:常にデフォルトのアプリケーションを使用します。