0

In my VB.net application I am opening a PDF file using System.Diagnostics.Process.Start("c:\TEMP\MyFile.pdf").

Is it possible to Close this file Programatically in some event.

4

4 回答 4

3

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

当您启动 PDF 进程时,您会在某个全局变量中捕获进程 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 是否已关闭,并可以根据该属性处理您的代码。

于 2013-04-12T16:28:33.253 回答
1

我认为不可能关闭特定的 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
于 2016-09-16T12:49:30.777 回答
0

这可能有效:

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

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

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

于 2013-04-13T00:16:09.517 回答
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); }

于 2013-04-12T16:30:24.263 回答