1

这是我的情况:我正在使用 c# 并打开多个 pdf 文件。观看时taskmanager,我看到我打开的每个新文件都显示在应用程序选项卡中,而只有 2 个adobe32进程。如果我getprocesses按名称执行,我会看到这两个进程,如果我深入了解它们,我能够识别我通过主窗口标题名称打开的 pdf 文件之一,但我无法找到另一个。我的目标是能够终止我选择的任何窗口,而不必关闭它们。任何帮助将不胜感激。

4

2 回答 2

0

您需要将 P-Invoke 与您的窗口句柄 ID 一起使用:

关闭窗口:

http://www.pinvoke.net/default.aspx/user32.closewindow

或销毁窗口:

http://www.pinvoke.net/default.aspx/user32/DestroyWindow.html

于 2013-04-06T04:19:38.310 回答
0

我有一个解决方案,但这取决于您是否对如何打开 PDF 文件有要求。在没有看到你在做什么的情况下,我只能在这一点上做出假设。无论如何,这种方法不涉及使用 p-invoke 来丢弃打开的窗口。

如果您调用 AcroRd32.exe 使用 /n 命令行开关并传递 PDF 文件的路径,那么它将为您打开的每个 PDF 文件打开一个新的 AcroRd32.exe 实例。然后可能有多种方法可以关闭某个 PDF 文档。

这是一种打开这两个文件的简单方法,因为您仍然可以访问 pdfProcess1 ,您可以将其杀死:

Process pdfProcess1 = new Process();
pdfProcess1.StartInfo = new ProcessStartInfo("AcroRd32.exe", "/n" + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "SomePDFDoc1.pdf"));
pdfProcess1.Start();

Process pdfProcess2 = new Process();
pdfProcess2.StartInfo = new ProcessStartInfo("AcroRd32.exe", "/n" + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), "SomePDFDoc2.pdf"));
pdfProcess2.Start();

pdfProcess1.Kill();
于 2013-04-06T05:06:32.203 回答