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.
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.
是的,有一种方法,尽管它不是一个非常优雅的解决方案。
当您启动 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 是否已关闭,并可以根据该属性处理您的代码。
我认为不可能关闭特定的 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
这可能有效:
Process1.Start()
Process1.WaitForExit()
If Process1.HasExited Then
System.IO.File.Delete(Your File Path)
End If
确保将 Process Object 从工具箱添加到表单并配置 startinfo 部分。
如果您遇到权限问题。使用AppData
文件夹。它具有程序运行所需的必要权限
这是在 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);
}