zoukankan      html  css  js  c++  java
  • 主进程和服务进程通信调用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的代码放到了线程里,执行,果然解决了。

    记下来,说不定以后又遇到了呢

  • 相关阅读:
    Lab BGP RTBH
    Lab BGP ORF
    Lab BGP Maximum-Prefix
    Lab BGP 路由翻动(route flaps)
    Lab BGP Peer-Group
    Lab BGP Dampening
    BGP Dampening Cyrus
    BGP进程工作步骤
    5、为什么域名解析用UDP协议?6、为什么区域传送用TCP协议?
    3、你知道DNS是什么?4、DNS的工作原理?
  • 原文地址:https://www.cnblogs.com/lsgsanxiao/p/11887544.html
Copyright © 2011-2022 走看看