1
我正在使用WinAPI函數ShellExecuteEx()
在Windows資源管理器中打開文件夾。如何在ShellExecuteEx中使用CoInitializeEx
根據MSDN我應該始終調用之前CoInitializeEx()
使用ShellExecuteEx()
但我應該用什麼標誌爲CoInitializeEx()
第二個參數?
當然,還有實例,其中的ShellExecute不使用 這些類型的外殼擴展之一,這些實例不會要求 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();
恩,請嘗試在您引用的文本之前立即讀取*。 @WhozCraig UI線程應該使用STA,而不是MTA。 – 2013-03-24 13:30:29
@RaymondChen當然你是對的(我不希望別的事,作爲你的博客的讀者)。我完全失去了他所援引的這種背景形式。 MTA/RPC管理的STA評論是一個普遍性,但是你指出對我來說應該是顯而易見的東西是絕對正確的。我會放下評論。 – WhozCraig 2013-03-24 18:18:41