【发布时间】:2012-05-09 12:48:13
【问题描述】:
我只是使用 WebBrowser 控件在 WinForm 中加载 PDF 文件。我有一个 PDF 字节数组,当用户在我的应用程序中单击打印预览时,我曾经将其写入客户端计算机的临时文件夹中。
预览后,当用户关闭表单时,我需要删除文件。在删除之前,我需要关闭为预览打开的 Adobe Reader 实例。
我尝试使用
获取进程列表Process[] processes = Process.GetProcessesByName("AcroRd32");
我可以通过这种方式终止进程并从临时文件夹中删除文件。真正的问题来了。假设用户已经为自己的目的打开了一个 PDF 文件,然后通过找到正在运行的实例并关闭它们,我也会关闭他的阅读器。
有什么方法可以找到我的应用程序打开的 Adobe 阅读器实例。我只需要检查 Adobe 阅读器。没有其他的。
更新
我已经手动打开了 adbobe 阅读器,它首先将文件名或 MainWindowTitle 作为 Magazine.pdf。然后我在我的应用程序中通过 webbrowser 控件打开了 adobe reader。但是它有 MainWindowTitle 作为 Empty。此外应该有两个 adobe reader 实例,但在taskmanager 它显示了四个实例,其中只有一个具有 MainWindowTitle 作为 Magazine.pdf 请参阅下面的图片以供参考
【问题讨论】:
-
似乎无法识别它,因为当您从浏览器启动 Acrobat Viewer 时,它会在单独的域中运行。与其强行关闭它,为什么不向用户显示正在使用 pdf 文件的消息框。你想强制关闭它吗?如果他点击是然后关闭实例
-
当用户关闭预览窗口时显示阅读器已打开的警报是否正确。如果他点击否,那么我如何关闭预览窗口
-
不,我是说维护一个用于显示预览的标志,当用户关闭预览窗口时设置该标志,现在尝试删除它会给出异常,然后向用户显示正在使用 pdf 的消息通过其他程序我们应该关闭它吗?
-
好的,没关系。但是如何关闭为预览打开的 Adobe 实例。我不想关闭所有打开的实例
-
没有其他选择,这就是我们通知用户关闭实例的原因。