我必须打印存储在目录中的所有图片。用户要求显示打印预览对话框,以便他们可以选择页面排列(see picture)。 我尝试使用“处理”工具,但它仅适用于一个文件。这是代码
Dim info As New ProcessStartInfo()
info.Verb = "print"
info.FileName = "C:\Pictures\pic1.jpg"
info.LoadUserProfile = True
Dim p As New Process()
Try
p.StartInfo = info
p.Start()
p.WaitForExit()
System.Threading.Thread.Sleep(3000)
If False = p.CloseMainWindow() Then
p.Kill()
End If
Catch i As System.InvalidOperationException
System.Threading.Thread.Sleep(100)
End Try
这有效。当我尝试将info.FileName设置为“ C:\ Pictures \ pic1.jpg C:\ Pictures \ pic2.jpg”或“ [pic1]; [pic2]”或“ 。”时;但我总是收到错误消息
System.ComponentModel.Win32Exception {“找不到文件”}
如何配置它以选择目录中的所有文件? 谢谢
答案 0 :(得分:0)
您可以使用
using System.IO;
:
:
string[] filePaths = Directory.GetFiles(@"c:\Pictures\", "*.jpg");
,然后遍历文件路径以打印每个文件
答案 1 :(得分:0)
我必须通过循环目录文件来进行打印。但这会导致打印过程以授权模式运行,并且每个要打印的文件都运行一个。这不是我所需要的:我希望模拟多重选择和打印。 我试图在Windows命令外壳中运行“打印”命令
Dim pr As New System.Windows.Controls.PrintDialog
Dim myprinter = pr.PrintQueue.QueuePort.Name
Dim files = "C:\pic1.jpg C:\pic2.jpg"
Dim command = String.Format("/C print /D:{0} {1}", myprinter, files)
info.FileName = "cmd.exe"
info.Arguments = command
生成的命令字符串是
/ C打印/ D:HPColorLaserJetM553 C:\ pic1.jpg C:\ pic2.jpg
不起作用,即使该过程结束时没有明显的错误。 如果我尝试从Windows Shell运行命令字符串,则会收到错误消息
“无法初始化设备D:HPColorLaserJetM553”
答案 2 :(得分:0)
将所有文件路径存储在string[]
或char[][]
中(字符串数组)
然后循环此指令:
rundll32 shimgvw.dll ImageView_PrintTo /pt "files[i]" "HP Color LaserJet M553 PCL 6"