主進程和服務進程通信調用Acrobat.AcroPDDoc時出現的問題 關於程序出現 “因爲應用程序正在發送一個輸入同步呼叫,所以無法執行傳出的呼叫”

場景以及問題

主進程發送命令,服務進程接受到,然後執行轉換pdf,調用Acrobat

pdfDoc = (Acrobat.CAcroPDDoc)Microsoft.VisualBasic.Interaction.CreateObject("AcroExch.PDDoc", "");

出現下面問題:

無法創建 ActiveX 組件

就是這麼奇葩,我在主程序也是有用到的,但是沒出現這問題,我以爲是有什麼dll沒引用進來,一條一條看,網上找也沒找到合適的解決方法,有些說了,

但我一看就知道不是我的這種。我把pdfDoc = (Acrobat.CAcroPDDoc)Microsoft.VisualBasic.Interaction.CreateObject("AcroExch.PDDoc", "");放到線程外創建也一樣出現,

折騰一陣,我產生了一個懷疑,不會是權限問題吧。爲什麼主程序沒用管理員權限啓動沒出現?

爲了驗證這個問題,我程序裏啓動服務進程的時候使用管理員權限啓動。然後真的沒出現了上面問題。我猜想正常情況下程序啓動如果用戶是管理員,那就是使用了管理員權限的,

但是服務進程是主程序啓動,可能就沒有這個權限了。

但又引發另一個問題。

如下:

應用程序正在發送一個輸入同步呼叫,所以無法執行傳出的呼叫

這下讓我想要把Acrobat換掉的衝動,是的,我試驗過很多種pdf轉位圖,替換掉也不多難,問題是公司老項目還用着呢,指不定還得遇到,

也不確定會不會出現這個問題,好吧,還是可以搶救一下,我繼續分析。

網上找到了這個

關於程序出現 “因爲應用程序正在發送一個輸入同步呼叫,所以無法執行傳出的呼叫”

這個好像真的有用,由於SendMessage 和 COM 2個組件,我的轉換也是放在了接受SendMessage裏的,所以我把那部分轉換pdf的代碼放到了線程裏,執行,果然解決了。

記下來,說不定以後又遇到了呢

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章