VB.Net/Acrobat-Acrobat在用户手动退出程序后挂起
我目前对VB.Net和AdobeAcrobat有一个问题。问题来自退出Acrobat,但Windows任务栏仍表示Acrobat.exe进程处于打开状态。我尝试过使用封送处理。ReleaseComObject(),但它仍然挂在那里。我不想依赖任务栏上的“结束进程”选项来删除它 下面是我尝试使用的代码片段:VB.Net/Acrobat-Acrobat在用户手动退出程序后挂起,vb.net,acrobat,Vb.net,Acrobat,我目前对VB.Net和AdobeAcrobat有一个问题。问题来自退出Acrobat,但Windows任务栏仍表示Acrobat.exe进程处于打开状态。我尝试过使用封送处理。ReleaseComObject(),但它仍然挂在那里。我不想依赖任务栏上的“结束进程”选项来删除它 下面是我尝试使用的代码片段: Try 'Tries To Close Acrobat Application acrobatApp.Exit() System.Runtime.Inte
Try
'Tries To Close Acrobat Application
acrobatApp.Exit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(javaScriptObj)
javaScriptObj = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(acroPDDoc)
acroPDDoc = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(acrobatAVDoc)
acrobatAVDoc = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(acrobatApp)
acrobatApp = Nothing
'Below is a snippet of code that I found for garbage collecting, but it did not work
'GC.Collect()
'GC.WaitForPendingFinalizers()
Catch ex As Exception
'Acrobat Could Be Closed Already
End Try
虽然我不确定这是否是一个问题,但我在Acrobat端运行了一个javascript saveAs脚本,以便制作文件的副本。这也可能是它挂起的原因,但基于保存文件和退出其他Acrobat/Microsoft程序的基本知识,我排除了它
任何帮助都是有益的!
谢谢
编辑:-我忘了提到Acrobat只有在我的应用程序结束时才会关闭。(目前)如果用户手动关闭AcROAT应用程序,我试图让它考虑这个问题。
我想我不是唯一一个遇到这个问题的人,所以我提出了一个“肮脏的答案”来解决这个问题。虽然这不是回答这个问题最传统的方式,但可以通过这个过程来完成
If acrobatApp IsNot Nothing AndAlso acrobatApp.GetNumAVDocs > 0 Then
Dim docs(acrobatApp.GetNumAVDocs) As String
'Saving And Formatting Names Of Opened Documents
For i = 0 To acrobatApp.GetNumAVDocs - 1
acrobatAVDoc = acrobatApp.GetAVDoc(i)
acroPDDoc = acrobatAVDoc.GetPDDoc
javaScriptObj = acroPDDoc.GetJSObject
docs(i) = javaScriptObj.path().ToString.Replace("/", "\").Substring(1)
position = docs(i).IndexOf("\")
docs(i) = docs(i).Substring(0, position) + ":\" + docs(i).Substring(position + 1)
Next
'Closing And Killing Acrobat Application
acrobatApp.CloseAllDocs()
KillAcrobat()
'Creating New Instance Of Acrobat
acrobatApp = CreateObject("AcroExch.App")
'Opening All Previously Opened Documents
For i = 0 To docs.Length - 1
acrobatAVDoc = CreateObject("AcroExch.AVDoc")
acrobatAVDoc.Open(docs(i), Path.GetFileName(docs(i)))
Next
'Displaying The Application
acrobatApp.Show()
End If
我想我不会是唯一一个对此有问题的人,所以我对这个问题给出了一个“肮脏的答案”。虽然这不是回答这个问题最传统的方式,但可以通过这个过程来完成
If acrobatApp IsNot Nothing AndAlso acrobatApp.GetNumAVDocs > 0 Then
Dim docs(acrobatApp.GetNumAVDocs) As String
'Saving And Formatting Names Of Opened Documents
For i = 0 To acrobatApp.GetNumAVDocs - 1
acrobatAVDoc = acrobatApp.GetAVDoc(i)
acroPDDoc = acrobatAVDoc.GetPDDoc
javaScriptObj = acroPDDoc.GetJSObject
docs(i) = javaScriptObj.path().ToString.Replace("/", "\").Substring(1)
position = docs(i).IndexOf("\")
docs(i) = docs(i).Substring(0, position) + ":\" + docs(i).Substring(position + 1)
Next
'Closing And Killing Acrobat Application
acrobatApp.CloseAllDocs()
KillAcrobat()
'Creating New Instance Of Acrobat
acrobatApp = CreateObject("AcroExch.App")
'Opening All Previously Opened Documents
For i = 0 To docs.Length - 1
acrobatAVDoc = CreateObject("AcroExch.AVDoc")
acrobatAVDoc.Open(docs(i), Path.GetFileName(docs(i)))
Next
'Displaying The Application
acrobatApp.Show()
End If