我有超过一千封电子邮件需要转换为单个PDF。我编写的代码能够处理人造打印作业,直到“将PDF另存为...”对话框。使用“print to pdf”选项打开文件对话框的“文件名”
我需要操纵该对话框中的文件名到原始文件名。我无法找到将字符串发布到对话框的文件名部分的方法,因为这是在单独的进程上发布的非传统方法。
如何将此信息发送到与应用程序正在调用的进程无关的活动对话窗口?
public static void Main(string[] args)
{
string folderIn = Path.GetDirectoryName(@"Z:\Files up to 3-6-13\");
string folderOut = Path.GetDirectoryName(@"c:\users\athomas\desktop\Output");
string[] fileList = Directory.GetFiles(folderIn);
foreach(var fileName in fileList)
{
Console.WriteLine(fileName);
Process p = new Process();
ProcessStartInfo info = new ProcessStartInfo(fileName);
info.Verb = "Print";
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(info);
// This is where I need to say something like
// SaveDialog.SaveAs(fileName.SafeFileName)
if(p.HasExited == false)
{
p.WaitForExit(1000);
}
}
Console.ReadLine();
}
由于很清楚你有能力编写代码,你可以自己创建一个你想要的库,然后调用这个库。模拟用户点击是不可靠和困难的。此代码类似于通过运行“calc.exe”并单击按钮来执行数学运算。 :-) – 2015-02-06 18:45:44
这些是什么样的文件? – 2015-02-06 18:46:11
我不知道是否有一个库可以做我想要的。我还没有找到一个可以安全地在办公室进行风险测试的人......我会继续寻找,但你的建议绝对是我认为会结束的地方。 这些文件是从Outlook .msg。它们不能以传统方式编译为PDF。 – SavvyK 2015-02-06 20:23:15