有没有办法以编程方式在VB.net中关闭打开的PDF文件

时间:2013-04-12 16:21:58

标签: vb.net

在我的VB.net应用程序中,我正在使用打开PDF文件  System.Diagnostics.Process.Start(" C:\ TEMP \ MyFile.pdf&#34)。

是否可以在某些情况下以编程方式关闭此文件。

4 个答案:

答案 0 :(得分:3)

是的,有一种方法,虽然它不是一个非常优雅的解决方案。

当您启动PDF流程时,您将捕获某个全局变量中的process-id:

Dim id As Integer 'Global variable
id = System.Diagnostics.Process.Start("C:\Temp\myfile.pdf").Id

然后,当你需要杀死进程时,只需执行:

System.Diagnostics.Process.GetProcessById(id).Kill()

(确保有一个具有此ID的进程实际上正在运行!)

您也可以使用Process.HasExited属性查看PDF是否已关闭,并可以根据该属性处理您的代码。

答案 1 :(得分:0)

这是在C#中,但可能派上用场......

var myPDFEvent = System.Diagnostics.Process.Start(@"C:\Temp\myfile.pdf"); myPDFEvent.Exited += new EventHandler(myPDFEvent_Exited); myPDFEvent.EnableRaisingEvents = true;

void myPDFEvent_Exited(object sender, EventArgs e) {     System.IO.File.Delete(@"C:\Temp\myfile.pdf); }

答案 2 :(得分:0)

这可能有效:

 Process1.Start()
 Process1.WaitForExit()
 If Process1.HasExited Then
     System.IO.File.Delete(Your File Path)
 End If

确保将Process Object添加到工具箱中的表单上并配置startinfo部分。

如果您有许可问题。使用AppData文件夹。它具有程序运行所需的权限

答案 3 :(得分:0)

我认为不可能关闭特定的PDF文件,因为它们不是一个独立的进程,它们是任务管理器中的子进程。 你可以自己杀死adobe acrobat reader。

Dim AcrobateInstance() As Process = Process.GetProcessesByName("AcroRd32")
If AcrobateInstance.Length > 0 Then
   For value As Integer = 0 To AcrobateInstance.Length - 1
      BillInstance(value).Kill()
   Next
End If