首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将CoInitializeEx与ShellExecuteEx结合使用

如何将CoInitializeEx与ShellExecuteEx结合使用
EN

Stack Overflow用户
提问于 2013-03-24 07:59:35
回答 1查看 1.3K关注 0票数 1

我使用WinAPI函数ShellExecuteEx()在Windows中打开一个文件夹。

根据MSDN,在使用CoInitializeEx()之前,我应该始终调用ShellExecuteEx(),但是对于CoInitializeEx()的第二个参数,我应该使用哪些标志

当然,在某些实例中,ShellExecute不使用这些类型的Shell扩展之一,而且这些实例根本不需要初始化COM。尽管如此,在使用此函数之前始终将COM初始化是很好的做法。

代码语言:javascript
复制
CoInitializeEx(NULL, What params should I use?); //COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = NULL;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = _T("explore");
ShExecInfo.lpFile = pszParseName;
ShExecInfo.lpParameters = NULL;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_MAXIMIZE;
ShExecInfo.hInstApp = NULL;

ShellExecuteEx(&ShExecInfo);
CoUninitialize();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-24 08:07:28

CoInitializeEx()为您的应用程序初始化COM-SCM。您至少应该用COINIT_APARTMENTTHREADED调用它,尽管到目前为止您还没有使用代码中的任何COM对象。这意味着调用线程将被放入自己的单元中,对COM对象的调用需要被封送。

如果您查看COINIT_MULTITHREADED,也可以选择调用这里。最好使用此选项,因为它可能会加快性能。COM是一个相当复杂的话题,尤其是关于公寓的话题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15596355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档