场景以及问题
主进程发送命令,服务进程接受到,然后执行转换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的代码放到了线程里,执行,果然解决了。
记下来,说不定以后又遇到了呢