場景以及問題
主進程發送命令,服務進程接受到,然後執行轉換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的代碼放到了線程裏,執行,果然解決了。
記下來,說不定以後又遇到了呢