2015-07-02 38 views

回答

2

documentation有问题的答案:

因为ShellExecute的可以委托执行到外壳扩展(数据 源,上下文菜单处理,动词实现)是 使用组件对象模型(COM)激活,应在调用ShellExecute之前初始化COM应为 。某些Shell扩展 需要COM单线程单元(STA)类型。

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE) 

当然,还有例子,其中的ShellExecute不使用这些类型的外壳扩展的 之一,这些情况下就不需要 COM都被初始化:在这种情况下,如下所示 COM应被初始化。尽管如此,在使用此功能之前总是要初始化COM是 的良好惯例。

不希望听起来过于居高临下,有一点可以避免这一点,那就是确保您始终从头到脚阅读文档。

相关问题