使用Process.StartInfo打印多个图像.动词=“打印”命令

本文关键字:打印 命令 动词 Process StartInfo 使用 图像 | 更新日期: 2023-09-27 18:02:58

我使用这个代码打印与windows打印图片…

string fileName = @"C:'Images'12.jpg";
var p = new Process();
p.StartInfo.FileName = fileName;
p.StartInfo.Verb = "Print";
p.Start();

我想从这个目录打开多个图像,我该怎么做?

我试过这个代码,但是不工作:

var p = new Process();
DirectoryInfo d = new DirectoryInfo(@"Directory address");
FileInfo[] Files = d.GetFiles("*.jpg");
foreach (FileInfo file in Files)
{
    p.StartInfo.FileName += file.FullName.ToList();
    p.StartInfo.Verb = "Print";
    p.Start();
}

使用Process.StartInfo打印多个图像.动词=“打印”命令

从您的代码示例来看,您似乎只想为每个文件调用单独的"print"谓词命令。如果是这样,那么您应该能够通过在循环中简单地分配文件名来完成,而不是枚举文件名的字符并将其附加到FileName属性:

DirectoryInfo d = new DirectoryInfo(@"Directory address");
FileInfo[] Files = d.GetFiles("*.jpg");
ProcessStartInfo psi = new ProcessStartInfo();
psi.Verb = "Print";
foreach (FileInfo file in Files)
{
    psi.FileName = file.FullName;
    Process.Start(psi);
}

注意,您不能为此目的重用单个Process对象。一旦给定的Process对象已经启动,它就不能再次启动。但是您可以重用ProcessStartInfo对象,在循环的每次迭代中开始一个新的过程。

编辑:

从你的评论:

我不想简单地为每个文件调用单独的"print"动词命令…我想在一个"打印"动词命令中添加所有文件

使用Process类是不可能的。根据定义,DDE"打印"动词(即:"command")只处理一个文档。如果您愿意做很多额外的工作,您可以编写自己的DDE客户机,该客户机尝试使用DDEEXEC与知道如何打印映像文件的DDE服务器进行迭代交互。但是a)这个更多的工作,b)它仍然只会工作,如果你碰巧安装了一个程序,处理通过DDEEXEC打印图像文件(Windows内置的支持打印图像不)。

我建议你坚持以上方法。

(为了将来的参考,如果你只想调用Process.Start()一次,把它放在循环中绝对不是最好的方法。如果您的示例代码与您实际尝试做的事情有任何相似之处,您的问题就会更清楚。:))