0
我可以在不初始化COM的情况下使用ShellExecute()
吗?使用ShellExecute()时是否需要初始化COM?
我可以在不初始化COM的情况下使用ShellExecute()
吗?使用ShellExecute()时是否需要初始化COM?
的documentation有问题的答案:
因为ShellExecute的可以委托执行到外壳扩展(数据 源,上下文菜单处理,动词实现)是 使用组件对象模型(COM)激活,应在调用ShellExecute之前初始化COM应为 。某些Shell扩展 需要COM单线程单元(STA)类型。
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
当然,还有例子,其中的ShellExecute不使用这些类型的外壳扩展的 之一,这些情况下就不需要 COM都被初始化:在这种情况下,如下所示 COM应被初始化。尽管如此,在使用此功能之前总是要初始化COM是 的良好惯例。
不希望听起来过于居高临下,有一点可以避免这一点,那就是确保您始终从头到脚阅读文档。