diff --git a/atom/common/platform_util_win.cc b/atom/common/platform_util_win.cc index 735e974d1f8a..4de5224668b6 100644 --- a/atom/common/platform_util_win.cc +++ b/atom/common/platform_util_win.cc @@ -238,7 +238,7 @@ void ShowItemInFolder(const base::FilePath& full_path) { (GetProcAddress(shell32_base, "SHOpenFolderAndSelectItems")); } if (!open_folder_and_select_itemsPtr) { - ShellExecute(NULL, L"open", dir.value().c_str(), NULL, NULL, SW_SHOW); + ui::win::OpenFolderViaShell(dir); return; } @@ -251,15 +251,19 @@ void ShowItemInFolder(const base::FilePath& full_path) { hr = desktop->ParseDisplayName(NULL, NULL, const_cast(dir.value().c_str()), NULL, &dir_item, NULL); - if (FAILED(hr)) + if (FAILED(hr)) { + ui::win::OpenFolderViaShell(dir); return; + } base::win::ScopedCoMem file_item; hr = desktop->ParseDisplayName(NULL, NULL, const_cast(full_path.value().c_str()), NULL, &file_item, NULL); - if (FAILED(hr)) + if (FAILED(hr)) { + ui::win::OpenFolderViaShell(dir); return; + } const ITEMIDLIST* highlight[] = { file_item }; @@ -271,7 +275,7 @@ void ShowItemInFolder(const base::FilePath& full_path) { // found" even though the file is there. In these cases, ShellExecute() // seems to work as a fallback (although it won't select the file). if (hr == ERROR_FILE_NOT_FOUND) { - ShellExecute(NULL, L"open", dir.value().c_str(), NULL, NULL, SW_SHOW); + ui::win::OpenFolderViaShell(dir); } else { LPTSTR message = NULL; DWORD message_length = FormatMessage( @@ -284,6 +288,8 @@ void ShowItemInFolder(const base::FilePath& full_path) { << " " << reinterpret_cast(&message); if (message) LocalFree(message); + + ui::win::OpenFolderViaShell(dir); } } }