在我的VB.net应用程序中,我正在使用打开PDF文件 System.Diagnostics.Process.Start(" C:\ TEMP \ MyFile.pdf&#34)。
是否可以在某些情况下以编程方式关闭此文件。
答案 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