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

时间:2015-07-02 16:25:18

标签: c winapi

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

1 个答案:

答案 0 :(得分:2)

documentation可以回答您的问题:

  

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

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
     

有些情况下ShellExecute不使用其中一个   这些类型的Shell扩展和那些实例不需要   COM初始化完全没有。尽管如此,这是一个很好的做法   在使用此功能之前始终初始化COM。

不希望听起来过于居高临下,一点就是要确保您始终从上到下阅读文档。