我正在尝试在特定打印机的后台(理论上)任何类型的文件中打印jpg/图像文件。
所以,我正在使用startinfo.verb = "PrintTo"
以下是使用的代码:
Dim objStartInfo As New ProcessStartInfo
Dim objProcess As New System.Diagnostics.Process
Dim sreport As String = "d:WallpaperPersonal PicturexVaiDSC_0000500.jpg" but not here :(
'Dim sreport As String = "c:Documents and SettingsyDesktopxNewrequirements.pdf" rem works for pdf file
'Dim sreport As String = "g:My DocumentsWordBudget.doc" rem even works for document file
Dim sPrinter As String = "Microsoft Office Document Image Writer"
Dim iloop As Integer
Try
objProcess.StartInfo.CreateNoWindow = True
objProcess.StartInfo.UseShellExecute = True
objProcess.StartInfo.FileName = sreport
objProcess.StartInfo.Arguments = """" & sPrinter & """"
objProcess.StartInfo.Verb = "PrintTo"
objProcess.StartInfo.CreateNoWindow = True
objProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
objProcess.Start()
If objProcess.HasExited = False Then
iloop = 0
While Not objProcess.HasExited
System.Threading.Thread.Sleep(100)
iloop = CShort(iloop + 1)
cmdProcess.Text = iloop.ToString
Me.Refresh()
If iloop >= 300 Then
Exit While
End If
End While
End If
objProcess.CloseMainWindow()
objProcess.Close()
objProcess.Dispose()
objProcess = Nothing
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
它适用于文档、PDF 文件,但当我尝试 JPG 文件时,它不适用于。
它显示错误"没有应用程序与此操作的指定文件关联":(
我这么困惑?
问题不在于您的代码,而在于您的操作系统配置。您的 Windows 安装无法识别*.jpg
文件名PrintTo
谓词。等效于代码中的操作,您可以使用通用Windows资源管理器的JPEG打印操作进行测试:如果让它工作,那么它也应该在你的代码中工作。尝试在操作系统级别为 PrintTo 谓词注册 JPEG
详细信息:谓词和文件关联 @ MSDN