使用ShellExecute()时是否需要初始化COM?

使用ShellExecute()时是否需要初始化COM?,c,winapi,C,Winapi,我可以使用ShellExecute()而不首先初始化COM吗?对您的问题有答案: 因为ShellExecute可以将执行委托给Shell扩展(数据 源、上下文菜单处理程序、谓词实现)的 使用组件对象模型(COM)激活,COM应 在调用ShellExecute之前初始化。一些Shell扩展 需要COM单线程单元(STA)类型。那么,, COM应按如下所示进行初始化: CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE

我可以使用
ShellExecute()
而不首先初始化COM吗?

对您的问题有答案:

因为ShellExecute可以将执行委托给Shell扩展(数据 源、上下文菜单处理程序、谓词实现)的 使用组件对象模型(COM)激活,COM应 在调用ShellExecute之前初始化。一些Shell扩展 需要COM单线程单元(STA)类型。那么,, COM应按如下所示进行初始化:

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
当然,在某些情况下,ShellExecute不使用 这些类型的Shell扩展和这些实例不需要 COM完全无法初始化。尽管如此,这是一种良好的做法 在使用此函数之前,始终初始化COM

在不希望听起来过于傲慢的情况下,需要注意的一点是确保您始终从上到下阅读文档