【问题标题】:Creating COM Component Using CreateProcess and CoCreateInstance使用 CreateProcess 和 CoCreateInstance 创建 COM 组件
【发布时间】:2018-12-23 23:17:03
【问题描述】:

使用 CreateProcess 和 CoCreateInstance(使用 CLSIDFromProgID 中的类 ID)启动 COM 组件 exe 是否有任何问题?

我已经这样做了,它似乎有效,但在关闭时会产生副作用。 有时它会正常关闭,有时(通过 Process Explorer 查看时)进程保持活动状态但在树中移动。

抱歉含糊不清,但我想知道以这种方式启动 COM 对象(CreateProcess 然后 CoCreateInstance)是否合法,或者正确实现这一点的唯一方法是否只是调用 CoCreateInstance?

谢谢!!!

【问题讨论】:

  • 引用:“坏主意顺便说一句,COM 服务器不应该是控制台模式应用程序”。重复使用 CoGetObject() 直到它不再失败。请注意,您无法预测进程开始运行和发布其类工厂需要多长时间,您必须从不低于 10 秒的最坏情况开始工作。

标签: c++ com


【解决方案1】:

仅限CoCreateInstance。你为什么要打扰CreateProcess

【讨论】:

  • 基本上,我一开始就需要重定向创建的COM exe对象的stdout和stderr。所以我使用 CreateProcess 来重定向这个 stdio,然后调用 CoCreateInstance。
  • 如果我可以指定在 CoCreateInstance 处重定向 stdout 和 stderr 的位置,那将是理想的,但我不知道该怎么做或者是否有可能。有什么想法吗?
猜你喜欢
  • 2010-09-16
  • 2012-10-14
  • 2011-01-04
  • 1970-01-01
  • 2019-05-07
  • 2017-08-30
  • 1970-01-01
  • 2011-02-23
  • 2011-03-13
相关资源
最近更新 更多