从C#启动Acrobat Reader 10.0:如何最小化?

时间:2012-03-08 14:46:51

标签: c# acrobat minimized

我正在启动Reader 10.0,以便从Win 7系统上的C#程序向打印机发送PDF文件。这就是我现在正在做的事情:

startInfo.FileName = adobeReaderPath;
string args = String.Format("/t \"{0}\" \"{1}\"", this.pdfFileName, this.printerName);
startInfo.Arguments = args;
startInfo.CreateNoWindow = true;
startInfo.ErrorDialog = false;
startInfo.UseShellExecute = false;
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
Process process = Process.Start(startInfo);

我注意到像这样(或从命令提示符)启动Reader实际上启动了2个AcroRd32.exe可执行文件。它们都没有最小化。我也尝试使用相同的结果处理ProcessWindowStyle.Hidden。

有没有办法迫使Reader开始最小化?

谢谢!

5 个答案:

答案 0 :(得分:2)

在命令行中使用inclduding /h进行尝试。这将启动最小化到任务栏的Adobe Reader实例。然而,没有“好”选项可以完全隐藏它(据我所知)。除了用Win32 API破解一些不可预知的东西。启动某些应用最小化的更通用的方法是通过API。见史蒂夫的帖子。

这应该做:

string args = String.Format("/h /t \"{0}\" \"{1}\"", this.pdfFileName, this.printerName);

答案 1 :(得分:2)

启动流程后,您可以获取它的MainWindowHandle并使用P/Invoke将其最小化:

[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

//..
ShowWindow(process.MainWindowHandle, 11);  //11 is ForceMinimized

答案 2 :(得分:0)

请参阅:http://www.robvanderwoude.com/commandlineswitches.php#Acrobat

  

打开PDF文件:

AcroRd32.exe PdfFile
     

在Adobe Reader的新实例中打开PDF文件:

AcroRd32.exe /N PdfFile
     

在第7页打开PDF文件:

AcroRd32.exe /A "page=7=OpenActions" PdfFile
     

打开导航窗格处于活动状态的PDF文件,缩小到50%,然后   搜索并突出显示“批处理”一词:

AcroRd32.exe /A "zoom=50&navpanes=1=OpenActions&search=batch" PdfFile
     

使用对话框打印PDF文件:

AcroRd32.exe /P PdfFile
     

以静默方式打印PDF文件

AcroRd32.exe /N /T PdfFile PrinterName [ PrinterDriver [ PrinterPort ] ]
     

最后一个命令将打开一个新的Adobe Reader窗口,打印PDF   文件,然后终止其窗口,除非该窗口恰好是   唯一的Adobe Reader窗口:至少一个Adobe Reader窗口   将保持开放。

编辑: http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf#page=5

答案 3 :(得分:0)

您实际上无法使用Adobe Acrobat reader使用您提到的代码将pdf文档直接发送到打印机。

你需要的是一个.net pdf api,它具有实现打印pdf的功能。您可以添加对项目的引用,然后开始使用api。你可以在互联网上谷歌/ bing关于souch apis,这也是免费且易于使用的。

答案 4 :(得分:0)

Process proc = new Process();
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.Verb = "print";

proc.StartInfo.FileName = @"Path of Adobe exe";
proc.StartInfo.Arguments = String.Format(@"/p /h {0}", fileToPrint);
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();