我有一个VB.Net
应用程序,我有一个通用方法来使用system.diagnostics.process
打开本地驱动器上存在的文档。
Public Shared Function OpenFileWithProcess(ByVal lsFileNameWithPath As String, Optional ByVal lPrintOption As PrintOutputOption = PrintOutputOption.Preview)
Try
Select Case lPrintOption
Case PrintOutputOption.Preview
Dim P As System.Diagnostics.Process
P = Process.Start(lsFileNameWithPath)
If Not P Is Nothing Then
Dim handle As IntPtr = P.Handle
SetForegroundWindow(handle)
End If
Case PrintOutputOption.Print
Dim Proc As New Process
Proc.StartInfo.FileName = lsFileNameWithPath
Proc.StartInfo.UseShellExecute = True
Proc.StartInfo.Verb = "Print"
Proc.Start()
End Select
Catch ex As Exception
If oSQL.Key_Developer Then
Stop
End If
Throw ex
End Try
End Function
在某些拥有Windows8和OFfice2010的计算机上,如果不先打开Excel,此方法将无法打开Excel文件。相反,它会出错“运行时错误2147467259(80004005)。将命令发送到应用程序时出错。”
如果Excel在方法调用之前打开,则文件打开就好了。
一些额外的环境信息:
- VB.NET应用程序编译为.Net Framework 4
- 应用程序部署在Windows 7,8和8.1
我可以捕获错误并尝试使用在错误后挂起的Excel会话再次启动该过程,但我想知道是否有人可以告诉我或帮助我弄清楚这里发生了什么。
感谢您的时间。