windows-nt/Source/XPSP1/NT/net/upnp/upnpui/dll/openfold.cpp
2020-09-26 16:20:57 +08:00

71 lines
1.8 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: O P E N F O L D . C P P
//
// Contents: Folder launching code for the connections folder
//
// Notes:
//
// Author: jeffspr 12 Jan 1998
//
//----------------------------------------------------------------------------
#include "pch.h"
#pragma hdrstop
// Undocument shell32 stuff. Sigh.
#define DONT_WANT_SHELLDEBUG 1
#define NO_SHIDLIST 1
#define USE_SHLWAPI_IDLIST
//+---------------------------------------------------------------------------
//
// Function: HrOpenSpecialShellFolder
//
// Purpose: Open one of the standard shell folders by CSIDL id.
//
// Arguments:
// hwnd [in] Window for popups if needed.
// iStandardFolderID [in] CSIDL_ of the folder in question.
//
// Returns:
//
// Author: jeffspr 24 Jan 2000
//
// Notes:
//
HRESULT HrOpenSpecialShellFolder(HWND hwnd, INT iStandardFolderID)
{
HRESULT hr = S_OK;
HCURSOR hcWait = SetCursor(LoadCursor(NULL, IDC_WAIT));
LPITEMIDLIST pidlFolder = NULL;;
hr = SHGetSpecialFolderLocation(hwnd, iStandardFolderID, &pidlFolder);
if (SUCCEEDED(hr))
{
Assert(pidlFolder);
SHELLEXECUTEINFO shei = { 0 };
shei.cbSize = sizeof(shei);
shei.fMask = SEE_MASK_IDLIST | SEE_MASK_INVOKEIDLIST | SEE_MASK_FLAG_DDEWAIT;
shei.nShow = SW_SHOW; // used to be SW_SHOWNORMAL
shei.lpIDList = pidlFolder;
ShellExecuteEx(&shei);
SHFree(pidlFolder);
}
if (hcWait)
{
SetCursor(hcWait);
}
TraceHr(ttidError, FAL, hr, FALSE, "HrOpenConnectionsFolder");
return hr;
}