我使用WinAPI函数ShellExecuteEx()在Windows中打开一个文件夹。
根据MSDN,在使用CoInitializeEx()之前,我应该始终调用ShellExecuteEx(),但是对于CoInitializeEx()的第二个参数,我应该使用哪些标志
当然,在某些实例中,ShellExecute不使用这些类型的Shell扩展之一,而且这些实例根本不需要初始化COM。尽管如此,在使用此函数之前始终将COM初始化是很好的做法。
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();发布于 2013-03-24 08:07:28
CoInitializeEx()为您的应用程序初始化COM-SCM。您至少应该用COINIT_APARTMENTTHREADED调用它,尽管到目前为止您还没有使用代码中的任何COM对象。这意味着调用线程将被放入自己的单元中,对COM对象的调用需要被封送。
如果您查看COINIT_MULTITHREADED,也可以选择调用这里。最好使用此选项,因为它可能会加快性能。COM是一个相当复杂的话题,尤其是关于公寓的话题。
https://stackoverflow.com/questions/15596355
复制相似问题