关闭Acrobat时,Acrobat.exe进程不会终止

时间:2012-06-01 23:28:10

标签: vb.net acrobat

我在关闭Acrobat时遇到问题。我正在使用vb.net在运行Acrobat时签署PDF文件。在我完成后,我关闭Acrobat并尝试删除当前签名的PDF文件,但是我收到一条错误消息,告诉我该文件正在被另一个进程使用。我尝试关闭并设置Nothing AcroApp,AcroAVDoc,AcroPDDoc JSO,但仍然无法正常工作。我尝试用Marshal释放它们.ReleaseComObject(...)仍然无效。

        acroPDDoc.Close()
        acrobatAVDoc.Close(False)
        acrobatApp.Exit()

        Try
            Marshal.ReleaseComObject(javaScriptObj)
        Catch ex As Exception
        End Try

        Try
            Marshal.ReleaseComObject(acroPDDoc)
        Catch ex As Exception
        End Try

        Try
            Marshal.ReleaseComObject(acrobatAVDoc)
        Catch ex As Exception
        End Try

        Try
            Marshal.ReleaseComObject(acrobatApp)
        Catch ex As Exception
        End Try

        javaScriptObj = Nothing
        acroPDDoc = Nothing
        acrobatAVDoc = Nothing
        acrobatApp = Nothing

下面我不想使用的替代方法,因为它会杀死我不想要的所有打开的PDF文档。

'Gets All Acrobat Processes
Dim tProcess() As Process = System.Diagnostics.Process.GetProcessesByName("Acrobat")

'Kills Each Acrobat Process
For Each AcrobatProcess As Process In tProcess
    AcrobatProcess.Kill()
Next

请帮我找到解决方法。感谢

2 个答案:

答案 0 :(得分:2)

我提出了类似的解决方案。您可以查看我的示例(下面的链接),它可能会对您的情况有所帮助。记录所有打开的acrobat文档,然后杀死并重新打开它们。然后,用户可以手动关闭每个doc,而不会挂起Acrobat。它可能不是最好的解决方案,但它是一个可行的解决方案。

VB.Net / Acrobat - Acrobat hangs after user manually exits program

答案 1 :(得分:0)

验证是否已释放所有对象。我用C#编写的实用程序遇到了同样的问题,它使用PDDoc InsertPages方法合并了pdf,并通过JSObject接口添加了书签。

我发现我曾经发布了存储我的bookmarkRoot的对象,一旦最后一个对象被释放,Acrobat.exe进程就会释放。我没有必要杀死这个过程。