这是我的情况:我正在使用c#并打开多个pdf文件。在观看taskmanager
时,我看到我打开的每个新文件都显示在应用程序选项卡中,而只有2个adobe32
进程。如果我按名称进行getprocesses
,我会看到两个进程,如果我深入了解它们,我能够识别出我用主窗口标题名称打开的pdf之一,但是我无法找到其他。我的目标是能够终止我选择的任何一个窗口,而不必关闭它们。任何帮助将不胜感激。
答案 0 :(得分:0)
您需要将P-Invoke与您的窗口句柄ID一起使用:
CloseWindow:
http://www.pinvoke.net/default.aspx/user32.closewindow
或DestroyWindow:
http://www.pinvoke.net/default.aspx/user32/DestroyWindow.html
答案 1 :(得分:0)
我有一个解决方案,但这取决于是否有关于如何打开PDF文件的要求。如果没有看到你在做什么,我只能在这一点做出假设。无论如何,这种方法不涉及使用p调用来删除打开的窗口。
如果您调用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();