我可以先使用ShellExecute()
而不先初始化COM吗?
答案 0 :(得分:2)
documentation可以回答您的问题:
因为ShellExecute可以将执行委托给Shell扩展(数据 源,上下文菜单处理程序,动词实现) 使用组件对象模型(COM)激活,COM应该是 在调用ShellExecute之前初始化。一些Shell扩展 需要COM单线程单元(STA)类型。在这种情况下, COM应该初始化,如下所示:
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)
有些情况下ShellExecute不使用其中一个 这些类型的Shell扩展和那些实例不需要 COM初始化完全没有。尽管如此,这是一个很好的做法 在使用此功能之前始终初始化COM。
不希望听起来过于居高临下,一点就是要确保您始终从上到下阅读文档。