ReactOS 0.4.17-dev-116-ga4b6fe9
utils.cpp File Reference
#include "precomp.h"
#include <shellapi.h>
#include <shlwapi.h>
#include <shlobj_undoc.h>
#include <shlguid_undoc.h>
#include <atlstr.h>
#include <shlwapi_undoc.h>
#include <ishellfolder_helpers.h>
#include <strsafe.h>
Include dependency graph for utils.cpp:

Go to the source code of this file.

Classes

struct  RETRY_DATA
 
struct  tagSHDIALOG
 

Macros

#define _ATL_NO_EXCEPTIONS
 
#define IShellFolder_GetDisplayNameOf   _disabled_IShellFolder_GetDisplayNameOf_
 
#define IShellFolder_ParseDisplayName   _disabled_IShellFolder_ParseDisplayName_
 
#define IShellFolder_CompareIDs   _disabled_IShellFolder_CompareIDs_
 
#define FAILED_UNEXPECTEDLY   FAILED /* FIXME: Make shellutils.h usable without ATL */
 

Typedefs

typedef struct tagSHDIALOG SHDIALOG
 
typedef struct tagSHDIALOGPSHDIALOG
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (shell)
 
EXTERN_C LSTATUS WINAPI RegGetValueW (HKEY, LPCWSTR, LPCWSTR, DWORD, LPDWORD, PVOID, LPDWORD)
 
static WORD GetVersionMajorMinor ()
 
static BOOL CharLowerNoDBCSAWorker (PSTR lpString, INT cchMax, BOOL bUppercase)
 
static BOOL CharLowerNoDBCSWWorker (PWSTR lpString, INT cchMax, BOOL bUppercase)
 
EXTERN_C PSTR WINAPI CharLowerNoDBCSA (_Inout_ PSTR lpString)
 
EXTERN_C PWSTR WINAPI CharLowerNoDBCSW (_Inout_ PWSTR lpString)
 
EXTERN_C PSTR WINAPI CharUpperNoDBCSA (_Inout_ PSTR lpString)
 
EXTERN_C PWSTR WINAPI CharUpperNoDBCSW (_Inout_ PWSTR lpString)
 
static HRESULT SHInvokeCommandOnContextMenuInternal (_In_opt_ HWND hWnd, _In_opt_ IUnknown *pUnk, _In_ IContextMenu *pCM, _In_ UINT fCMIC, _In_ UINT fCMF, _In_opt_ LPCSTR pszVerb, _In_opt_ LPCWSTR pwszDir, _In_ bool ForceQCM)
 
EXTERN_C HRESULT WINAPI SHInvokeCommandOnContextMenuEx (_In_opt_ HWND hWnd, _In_opt_ IUnknown *pUnk, _In_ IContextMenu *pCM, _In_ UINT fCMIC, _In_ UINT fCMF, _In_opt_ LPCSTR pszVerb, _In_opt_ LPCWSTR pwszDir)
 
EXTERN_C HRESULT WINAPI SHInvokeCommandOnContextMenu (_In_opt_ HWND hWnd, _In_opt_ IUnknown *pUnk, _In_ IContextMenu *pCM, _In_ UINT fCMIC, _In_opt_ LPCSTR pszVerb)
 
static BOOL IsTextAsciiOnly (PCSTR psz)
 
EXTERN_C HRESULT WINAPI SHInvokeCommandsOnContextMenu (_In_opt_ HWND hwnd, _In_opt_ IUnknown *punkSite, _In_ IContextMenu *pCM, _In_ DWORD fMask, _In_reads_opt_(cVerbs) PCSTR *pVerbs, _In_ UINT cVerbs)
 
EXTERN_C HRESULT WINAPI SHInvokeCommandWithFlagsAndSite (_In_opt_ HWND hWnd, _In_opt_ IUnknown *pUnk, _In_ IShellFolder *pShellFolder, _In_ LPCITEMIDLIST pidl, _In_ UINT fCMIC, _In_opt_ LPCSTR pszVerb)
 
EXTERN_C BOOL WINAPI IContextMenu_Invoke (_In_ IContextMenu *pContextMenu, _In_ HWND hwnd, _In_ LPCSTR lpVerb, _In_ UINT uFlags)
 
static HRESULT ShellExecuteCommand (_In_opt_ HWND hWnd, _In_ PCWSTR Command, _In_opt_ UINT Flags)
 
EXTERN_C HRESULT WINAPI RunRegCommand (_In_opt_ HWND hWnd, _In_ HKEY hKey, _In_opt_ PCWSTR pszSubKey)
 
EXTERN_C HRESULT WINAPI RunIndirectRegCommand (_In_opt_ HWND hWnd, _In_ HKEY hKey, _In_opt_ PCWSTR pszSubKey, _In_ PCWSTR pszVerb)
 
EXTERN_C HRESULT WINAPI SHRunIndirectRegClientCommand (_In_opt_ HWND hWnd, _In_ PCWSTR pszClientType)
 
BOOL WINAPI PathFileExistsDefExtAndAttributesW (_Inout_ LPWSTR pszPath, _In_ DWORD dwWhich, _Out_opt_ LPDWORD pdwFileAttributes)
 
static BOOL SHLWAPI_IsBogusHRESULT (HRESULT hr)
 
EXTERN_C HRESULT WINAPI IShellFolder_GetDisplayNameOf (_In_ IShellFolder *psf, _In_ LPCITEMIDLIST pidl, _In_ SHGDNF uFlags, _Out_ LPSTRRET lpName, _In_ DWORD dwRetryFlags)
 
EXTERN_C HRESULT WINAPI IShellFolder_ParseDisplayName (_In_ IShellFolder *psf, _In_opt_ HWND hwndOwner, _In_opt_ LPBC pbcReserved, _In_ LPOLESTR lpszDisplayName, _Out_opt_ ULONG *pchEaten, _Out_opt_ PIDLIST_RELATIVE *ppidl, _Out_opt_ ULONG *pdwAttributes)
 
EXTERN_C HRESULT WINAPI IShellFolder_CompareIDs (_In_ IShellFolder *psf, _In_ LPARAM lParam, _In_ PCUIDLIST_RELATIVE pidl1, _In_ PCUIDLIST_RELATIVE pidl2)
 
static INT_PTR CALLBACK SHDialogProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
EXTERN_C INT_PTR WINAPI SHDialogBox (_In_opt_ HINSTANCE hInstance, _In_ PCSTR lpTemplateName, _In_opt_ HWND hWndParent, _In_opt_ SHDIALOGPROC fn, _In_opt_ PVOID pThis)
 

Variables

static const RETRY_DATA g_RetryData []
 

Macro Definition Documentation

◆ _ATL_NO_EXCEPTIONS

#define _ATL_NO_EXCEPTIONS

Definition at line 8 of file utils.cpp.

◆ FAILED_UNEXPECTEDLY

#define FAILED_UNEXPECTEDLY   FAILED /* FIXME: Make shellutils.h usable without ATL */

Definition at line 30 of file utils.cpp.

◆ IShellFolder_CompareIDs

#define IShellFolder_CompareIDs   _disabled_IShellFolder_CompareIDs_

Definition at line 15 of file utils.cpp.

◆ IShellFolder_GetDisplayNameOf

#define IShellFolder_GetDisplayNameOf   _disabled_IShellFolder_GetDisplayNameOf_

Definition at line 13 of file utils.cpp.

◆ IShellFolder_ParseDisplayName

#define IShellFolder_ParseDisplayName   _disabled_IShellFolder_ParseDisplayName_

Definition at line 14 of file utils.cpp.

Typedef Documentation

◆ PSHDIALOG

◆ SHDIALOG

Function Documentation

◆ CharLowerNoDBCSA()

EXTERN_C PSTR WINAPI CharLowerNoDBCSA ( _Inout_ PSTR  lpString)

Definition at line 73 of file utils.cpp.

74{
75 return CharLowerNoDBCSAWorker(lpString, 0, FALSE) ? lpString : NULL;
76}
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
static BOOL CharLowerNoDBCSAWorker(PSTR lpString, INT cchMax, BOOL bUppercase)
Definition: utils.cpp:44

◆ CharLowerNoDBCSAWorker()

static BOOL CharLowerNoDBCSAWorker ( PSTR  lpString,
INT  cchMax,
BOOL  bUppercase 
)
static

Definition at line 44 of file utils.cpp.

45{
46 CHAR szBuff[MAX_PATH];
47 INT cch;
48 if (!lpString)
49 return FALSE;
50 cch = cchMax ? cchMax : lstrlenA(lpString);
51 if (FAILED(StringCchCopyA(szBuff, _countof(szBuff), lpString)))
52 return FALSE;
54 szBuff, cch, lpString, cch);
55}
UINT cchMax
#define MAX_PATH
Definition: compat.h:34
INT WINAPI LCMapStringA(LCID lcid, DWORD flags, LPCSTR src, INT srclen, LPSTR dst, INT dstlen)
Definition: locale.c:3834
#define FAILED(hr)
Definition: intsafe.h:51
int WINAPI lstrlenA(LPCSTR lpString)
Definition: lstring.c:145
#define LOCALE_SYSTEM_DEFAULT
char CHAR
Definition: pedump.c:57
_In_ UINT _In_ UINT cch
Definition: shellapi.h:432
#define _countof(array)
Definition: sndvol32.h:70
STRSAFEAPI StringCchCopyA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszSrc)
Definition: strsafe.h:145
int32_t INT
Definition: typedefs.h:58
#define LCMAP_UPPERCASE
Definition: winnls.h:198
#define LCMAP_LOWERCASE
Definition: winnls.h:197

Referenced by CharLowerNoDBCSA(), and CharUpperNoDBCSA().

◆ CharLowerNoDBCSW()

EXTERN_C PWSTR WINAPI CharLowerNoDBCSW ( _Inout_ PWSTR  lpString)

Definition at line 81 of file utils.cpp.

82{
83 return CharLowerNoDBCSWWorker(lpString, 0, FALSE) ? lpString : NULL;
84}
static BOOL CharLowerNoDBCSWWorker(PWSTR lpString, INT cchMax, BOOL bUppercase)
Definition: utils.cpp:57

◆ CharLowerNoDBCSWWorker()

static BOOL CharLowerNoDBCSWWorker ( PWSTR  lpString,
INT  cchMax,
BOOL  bUppercase 
)
static

Definition at line 57 of file utils.cpp.

58{
59 WCHAR szDest[MAX_PATH];
60 INT cch;
61 if (!lpString)
62 return FALSE;
63 cch = cchMax ? cchMax : lstrlenW(lpString);
64 if (FAILED(StringCchCopyW(szDest, _countof(szDest), lpString)))
65 return FALSE;
67 szDest, cch, lpString, cch);
68}
#define lstrlenW
Definition: compat.h:750
INT WINAPI LCMapStringW(LCID lcid, DWORD flags, LPCWSTR src, INT srclen, LPWSTR dst, INT dstlen)
Definition: locale.c:3808
short WCHAR
Definition: pedump.c:58
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:149

Referenced by CharLowerNoDBCSW(), and CharUpperNoDBCSW().

◆ CharUpperNoDBCSA()

EXTERN_C PSTR WINAPI CharUpperNoDBCSA ( _Inout_ PSTR  lpString)

Definition at line 89 of file utils.cpp.

90{
91 return CharLowerNoDBCSAWorker(lpString, 0, TRUE) ? lpString : NULL;
92}
#define TRUE
Definition: types.h:120

◆ CharUpperNoDBCSW()

EXTERN_C PWSTR WINAPI CharUpperNoDBCSW ( _Inout_ PWSTR  lpString)

Definition at line 97 of file utils.cpp.

98{
99 return CharLowerNoDBCSWWorker(lpString, 0, TRUE) ? lpString : NULL;
100}

◆ GetVersionMajorMinor()

static WORD GetVersionMajorMinor ( )
inlinestatic

Definition at line 38 of file utils.cpp.

39{
42}
static const WCHAR version[]
Definition: asmname.c:66
DWORD WINAPI GetVersion(void)
Definition: version.c:1458
unsigned long DWORD
Definition: ntddk_ex.h:95
#define LOBYTE(W)
Definition: jmemdos.c:487
#define HIBYTE(W)
Definition: jmemdos.c:486
#define MAKEWORD(a, b)
Definition: typedefs.h:248

Referenced by SHInvokeCommandOnContextMenuInternal().

◆ IContextMenu_Invoke()

EXTERN_C BOOL WINAPI IContextMenu_Invoke ( _In_ IContextMenu pContextMenu,
_In_ HWND  hwnd,
_In_ LPCSTR  lpVerb,
_In_ UINT  uFlags 
)

Definition at line 355 of file utils.cpp.

360{
361 TRACE("(%p, %p, %s, %u)\n", pContextMenu, hwnd, debugstr_a(lpVerb), uFlags);
363 uFlags, lpVerb, NULL, false);
364 return !FAILED_UNEXPECTEDLY(hr);
365}
HRESULT hr
Definition: delayimp.cpp:573
UINT uFlags
Definition: api.c:59
static HRESULT SHInvokeCommandOnContextMenuInternal(_In_opt_ HWND hWnd, _In_opt_ IUnknown *pUnk, _In_ IContextMenu *pCM, _In_ UINT fCMIC, _In_ UINT fCMF, _In_opt_ LPCSTR pszVerb, _In_opt_ LPCWSTR pwszDir, _In_ bool ForceQCM)
Definition: utils.cpp:103
#define FAILED_UNEXPECTEDLY
Definition: utils.cpp:30
#define debugstr_a
Definition: kernel32.h:31
#define TRACE(s)
Definition: solgame.cpp:4
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023

◆ IShellFolder_CompareIDs()

EXTERN_C HRESULT WINAPI IShellFolder_CompareIDs ( _In_ IShellFolder psf,
_In_ LPARAM  lParam,
_In_ PCUIDLIST_RELATIVE  pidl1,
_In_ PCUIDLIST_RELATIVE  pidl2 
)

Definition at line 606 of file utils.cpp.

611{
612 TRACE("(%p, %p, %p, %p)\n", psf, lParam, pidl1, pidl2);
613
614 if (lParam & ~(SIZE_T)SHCIDS_COLUMNMASK)
615 {
616 /* Try as IShellFolder2 if possible */
617 HRESULT hr = psf->QueryInterface(IID_IShellFolder2, (void **)&psf);
618 if (FAILED(hr))
619 lParam &= SHCIDS_COLUMNMASK;
620 else
621 psf->Release();
622 }
623
624 return psf->CompareIDs(lParam, pidl1, pidl2);
625}
LPARAM lParam
Definition: combotst.c:139
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
nsrefcnt Release()
ULONG_PTR SIZE_T
Definition: typedefs.h:80

◆ IShellFolder_GetDisplayNameOf()

EXTERN_C HRESULT WINAPI IShellFolder_GetDisplayNameOf ( _In_ IShellFolder psf,
_In_ LPCITEMIDLIST  pidl,
_In_ SHGDNF  uFlags,
_Out_ LPSTRRET  lpName,
_In_ DWORD  dwRetryFlags 
)

Definition at line 518 of file utils.cpp.

524{
525 HRESULT hr;
526
527 TRACE("(%p)->(%p, 0x%lX, %p, 0x%lX)\n", psf, pidl, uFlags, lpName, dwRetryFlags);
528
529 hr = psf->GetDisplayNameOf(pidl, uFlags, lpName);
531 return hr;
532
533 dwRetryFlags |= SFGDNO_RETRYALWAYS;
534
535 if ((uFlags & SHGDN_FORPARSING) == 0)
536 dwRetryFlags |= SFGDNO_RETRYWITHFORPARSING;
537
538 // Retry with other flags to get successful results
539 for (SIZE_T iEntry = 0; iEntry < _countof(g_RetryData); ++iEntry)
540 {
541 const RETRY_DATA *pData = &g_RetryData[iEntry];
542 if (!(dwRetryFlags & pData->dwRetryFlags))
543 continue;
544
545 SHGDNF uNewFlags = ((uFlags & ~pData->uRemove) | pData->uAdd);
546 if (uNewFlags == uFlags)
547 continue;
548
549 hr = psf->GetDisplayNameOf(pidl, uNewFlags, lpName);
551 break;
552
553 uFlags = uNewFlags; // Update flags every time
554 }
555
556 return hr;
557}
static const RETRY_DATA g_RetryData[]
Definition: utils.cpp:501
static BOOL SHLWAPI_IsBogusHRESULT(HRESULT hr)
Definition: utils.cpp:489
#define SFGDNO_RETRYWITHFORPARSING
#define SFGDNO_RETRYALWAYS
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
_In_ LPCSTR lpName
Definition: winbase.h:2543

◆ IShellFolder_ParseDisplayName()

EXTERN_C HRESULT WINAPI IShellFolder_ParseDisplayName ( _In_ IShellFolder psf,
_In_opt_ HWND  hwndOwner,
_In_opt_ LPBC  pbcReserved,
_In_ LPOLESTR  lpszDisplayName,
_Out_opt_ ULONG pchEaten,
_Out_opt_ PIDLIST_RELATIVE ppidl,
_Out_opt_ ULONG pdwAttributes 
)

Definition at line 566 of file utils.cpp.

574{
575 ULONG dummy1, dummy2;
576
577 TRACE("(%p)->(%p, %p, %s, %p, %p, %p)\n", psf, hwndOwner, pbcReserved,
578 debugstr_w(lpszDisplayName), pchEaten, ppidl, pdwAttributes);
579
580 if (!pdwAttributes)
581 {
582 dummy1 = 0;
583 pdwAttributes = &dummy1;
584 }
585
586 if (!pchEaten)
587 {
588 dummy2 = 0;
589 pchEaten = &dummy2;
590 }
591
592 if (ppidl)
593 *ppidl = NULL;
594
595 return psf->ParseDisplayName(hwndOwner, pbcReserved, lpszDisplayName, pchEaten,
596 ppidl, pdwAttributes);
597}
#define debugstr_w
Definition: kernel32.h:32
uint32_t ULONG
Definition: typedefs.h:59

◆ IsTextAsciiOnly()

static BOOL IsTextAsciiOnly ( PCSTR  psz)
inlinestatic

Definition at line 219 of file utils.cpp.

220{
221 for (const signed char *pch = (const signed char *)psz; *pch; ++pch)
222 {
223 if (*pch < 0)
224 return FALSE;
225 }
226 return TRUE;
227}
#define pch(ap)
Definition: match.c:418

Referenced by SHInvokeCommandsOnContextMenu().

◆ PathFileExistsDefExtAndAttributesW()

BOOL WINAPI PathFileExistsDefExtAndAttributesW ( _Inout_ LPWSTR  pszPath,
_In_ DWORD  dwWhich,
_Out_opt_ LPDWORD  pdwFileAttributes 
)

Definition at line 459 of file utils.cpp.

463{
464 TRACE("(%s, 0x%lX, %p)\n", debugstr_w(pszPath), dwWhich, pdwFileAttributes);
465
466 if (pdwFileAttributes)
467 *pdwFileAttributes = INVALID_FILE_ATTRIBUTES;
468
469 if (!pszPath)
470 return FALSE;
471
472 if (!dwWhich || (*PathFindExtensionW(pszPath) && (dwWhich & WHICH_OPTIONAL)))
473 return PathFileExistsAndAttributesW(pszPath, pdwFileAttributes);
474
475 if (!PathFileExistsDefExtW(pszPath, dwWhich))
476 {
477 if (pdwFileAttributes)
478 *pdwFileAttributes = INVALID_FILE_ATTRIBUTES;
479 return FALSE;
480 }
481
482 if (pdwFileAttributes)
483 *pdwFileAttributes = GetFileAttributesW(pszPath);
484
485 return TRUE;
486}
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
Definition: fileinfo.c:636
LPWSTR WINAPI PathFindExtensionW(const WCHAR *path)
Definition: path.c:1274
BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD *dwAttr)
Definition: path.c:1879
BOOL WINAPI PathFileExistsDefExtW(LPWSTR lpszPath, DWORD dwWhich)
Definition: path.c:1126
#define WHICH_OPTIONAL
#define INVALID_FILE_ATTRIBUTES
Definition: vfdcmd.c:23

Referenced by START_TEST().

◆ RegGetValueW()

EXTERN_C LSTATUS WINAPI RegGetValueW ( HKEY  hKey,
LPCWSTR  pszSubKey,
LPCWSTR  pszValue,
DWORD  dwFlags,
LPDWORD  pdwType,
PVOID  pvData,
LPDWORD  pcbData 
)

Definition at line 1931 of file reg.c.

1938{
1939 DWORD dwType, cbData = pcbData ? *pcbData : 0;
1940 PVOID pvBuf = NULL;
1941 LONG ret;
1942
1943 TRACE("(%p,%s,%s,%ld,%p,%p,%p=%ld)\n",
1946
1947 if (pvData && !pcbData)
1950 ((dwFlags & RRF_RT_ANY) != RRF_RT_ANY))
1952
1953 if (pszSubKey && pszSubKey[0])
1954 {
1956 if (ret != ERROR_SUCCESS) return ret;
1957 }
1958
1960
1961 /* If we are going to expand we need to read in the whole the value even
1962 * if the passed buffer was too small as the expanded string might be
1963 * smaller than the unexpanded one and could fit into cbData bytes. */
1964 if ((ret == ERROR_SUCCESS || ret == ERROR_MORE_DATA) &&
1965 dwType == REG_EXPAND_SZ && !(dwFlags & RRF_NOEXPAND))
1966 {
1967 do
1968 {
1969 HeapFree(GetProcessHeap(), 0, pvBuf);
1970
1971 pvBuf = HeapAlloc(GetProcessHeap(), 0, cbData);
1972 if (!pvBuf)
1973 {
1975 break;
1976 }
1977
1978 if (ret == ERROR_MORE_DATA || !pvData)
1980 &dwType, pvBuf, &cbData);
1981 else
1982 {
1983 /* Even if cbData was large enough we have to copy the
1984 * string since ExpandEnvironmentStrings can't handle
1985 * overlapping buffers. */
1986 CopyMemory(pvBuf, pvData, cbData);
1987 }
1988
1989 /* Both the type or the value itself could have been modified in
1990 * between so we have to keep retrying until the buffer is large
1991 * enough or we no longer have to expand the value. */
1992 }
1993 while (dwType == REG_EXPAND_SZ && ret == ERROR_MORE_DATA);
1994
1995 if (ret == ERROR_SUCCESS)
1996 {
1997 /* Recheck dwType in case it changed since the first call */
1998 if (dwType == REG_EXPAND_SZ)
1999 {
2001 pcbData ? *pcbData : 0) * sizeof(WCHAR);
2002 dwType = REG_SZ;
2003 if (pvData && pcbData && cbData > *pcbData)
2005 }
2006 else if (pvData)
2007 CopyMemory(pvData, pvBuf, *pcbData);
2008 }
2009
2010 HeapFree(GetProcessHeap(), 0, pvBuf);
2011 }
2012
2013 if (pszSubKey && pszSubKey[0])
2015
2017
2020
2021 if (pdwType)
2022 *pdwType = dwType;
2023
2024 if (pcbData)
2025 *pcbData = cbData;
2026
2027 return ret;
2028}
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define ERROR_MORE_DATA
Definition: dderror.h:13
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
static VOID RegpApplyRestrictions(DWORD dwFlags, DWORD dwType, DWORD cbData, PLONG ret)
Definition: reg.c:1859
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
#define GetProcessHeap()
Definition: compat.h:736
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
Definition: environ.c:520
return ret
Definition: mutex.c:146
FxAutoRegKey hKey
#define REG_SZ
Definition: layer.c:22
#define ZeroMemory
Definition: minwinbase.h:31
#define CopyMemory
Definition: minwinbase.h:29
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
Definition: netsh.h:116
#define KEY_QUERY_VALUE
Definition: nt_native.h:1019
#define REG_EXPAND_SZ
Definition: nt_native.h:1497
long LONG
Definition: pedump.c:60
_In_opt_ _In_opt_ _In_ _In_ DWORD cbData
Definition: shlwapi.h:761
_In_opt_ LPCSTR _In_opt_ LPCSTR _In_ SRRF _Out_opt_ LPDWORD pdwType
Definition: shlwapi.h:783
_In_ _Out_writes_opt_ pcchValueName _Inout_opt_ LPDWORD _Out_opt_ _Out_writes_bytes_to_opt_ pcbData _Inout_opt_ LPDWORD pcbData
Definition: shlwapi.h:757
_In_opt_ LPCSTR pszSubKey
Definition: shlwapi.h:783
_In_opt_ LPCSTR _In_opt_ LPCSTR pszValue
Definition: shlwapi.h:783
#define RRF_NOEXPAND
Definition: winreg.h:72
#define RRF_RT_ANY
Definition: winreg.h:66
#define RRF_ZEROONFAILURE
Definition: winreg.h:73
#define RRF_RT_REG_EXPAND_SZ
Definition: winreg.h:59

Referenced by AddFSClassKeysToArray(), CRegFolderEnum::AddItemsFromKey(), CDefaultContextMenu::AddStaticEntriesForKey(), AssocGetPerceivedType(), CFSExtractIcon_CreateInstance(), check_product_patches(), ComponentInfo_GetGUIDValue(), ComponentInfo_GetUINTValue(), create_monodata(), DoGetProductType(), CDefaultContextMenu::EnumerateDynamicContextHandlerForKey(), CDrvDefExt::ExtraPageProc(), FILEDLG95_MRU_get_slot(), FILEDLG95_MRU_save_filename(), FindExeCplClass(), CDrvDefExt::GeneralPageProc(), get_mono_path_registry(), get_patch_state(), get_stringvalue(), GetCLSIDForFileTypeFromExtension(), CNetConnectionPropertyUi::GetDeviceInstanceID(), GetInterfaceName(), GetRegCustomizedDriveIcon(), GetRegString(), CQueryAssociations::GetString(), HCR_GetClassNameW(), InitFunctionPtrs(), InitializeRecycleBinDlg(), InitIconOverlays(), CFileDefExt::InitOpensWithField(), COpenWithList::IsHidden(), keyboard_layout_has_altgr(), COpenWithList::Load(), load_config_driver(), load_settings(), COpenWithList::LoadFromProgIdKey(), CNewMenu::LoadItem(), LoadKeyboardLayoutW(), COpenWithList::LoadRecommendedFromHKCR(), COpenWithList::LoadRecommendedFromHKCU(), MMDevice_GetPropValue(), OpenKeyFromFileType(), PixelFormatInfo_GetChannelMask(), read_bitmap_patterns(), read_metadata_patterns(), RegQueryDword(), RunRegCommand(), COpenWithList::SetDefaultHandler(), SetupDiBuildDriverInfoList(), SHELL32_AssocGetExtensionDescription(), SHELL32_IsShellFolderNamespaceItemHidden(), SHELL_GetRegCLSID(), SHELL_GetShellExtensionRegCLSID(), SHELL_QueryCLSIDValue(), SHRunIndirectRegClientCommand(), SQLGetPrivateProfileStringW(), test_keyboard_layout_name(), and WshShell3_RegRead().

◆ RunIndirectRegCommand()

EXTERN_C HRESULT WINAPI RunIndirectRegCommand ( _In_opt_ HWND  hWnd,
_In_ HKEY  hKey,
_In_opt_ PCWSTR  pszSubKey,
_In_ PCWSTR  pszVerb 
)

Definition at line 409 of file utils.cpp.

410{
411 WCHAR szKey[MAX_PATH];
412 HRESULT hr;
413 if (pszSubKey)
414 hr = StringCchPrintfW(szKey, _countof(szKey), L"%s\\shell\\%s\\command", pszSubKey, pszVerb);
415 else
416 hr = StringCchPrintfW(szKey, _countof(szKey), L"shell\\%s\\command", pszVerb);
417 return SUCCEEDED(hr) ? RunRegCommand(hWnd, hKey, szKey) : hr;
418}
HWND hWnd
Definition: settings.c:17
EXTERN_C HRESULT WINAPI RunRegCommand(_In_opt_ HWND hWnd, _In_ HKEY hKey, _In_opt_ PCWSTR pszSubKey)
Definition: utils.cpp:395
#define L(x)
Definition: resources.c:13
#define SUCCEEDED(hr)
Definition: intsafe.h:50
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
Definition: strsafe.h:530

Referenced by SHRunIndirectRegClientCommand().

◆ RunRegCommand()

EXTERN_C HRESULT WINAPI RunRegCommand ( _In_opt_ HWND  hWnd,
_In_ HKEY  hKey,
_In_opt_ PCWSTR  pszSubKey 
)

Definition at line 395 of file utils.cpp.

396{
397 WCHAR szCmd[MAX_PATH * 2];
398 DWORD cb = sizeof(szCmd);
400 if (error)
403}
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118
EXTERN_C LSTATUS WINAPI RegGetValueW(HKEY, LPCWSTR, LPCWSTR, DWORD, LPDWORD, PVOID, LPDWORD)
Definition: reg.c:1931
static HRESULT ShellExecuteCommand(_In_opt_ HWND hWnd, _In_ PCWSTR Command, _In_opt_ UINT Flags)
Definition: utils.cpp:371
#define error(str)
Definition: mkdosfs.c:1605
#define SEE_MASK_FLAG_LOG_USAGE
Definition: shellapi.h:55
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
Definition: winerror.h:210
#define RRF_RT_REG_SZ
Definition: winreg.h:58

Referenced by RunIndirectRegCommand().

◆ SHDialogBox()

EXTERN_C INT_PTR WINAPI SHDialogBox ( _In_opt_ HINSTANCE  hInstance,
_In_ PCSTR  lpTemplateName,
_In_opt_ HWND  hWndParent,
_In_opt_ SHDIALOGPROC  fn,
_In_opt_ PVOID  pThis 
)

Definition at line 694 of file utils.cpp.

700{
701 SHDIALOG data = { fn, pThis };
702 return DialogBoxParamA(hInstance, lpTemplateName, hWndParent, SHDialogProc, (LPARAM)&data);
703}
HINSTANCE hInstance
Definition: charmap.c:19
static INT_PTR CALLBACK SHDialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: utils.cpp:640
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
LONG_PTR LPARAM
Definition: minwindef.h:175
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159
INT_PTR WINAPI DialogBoxParamA(_In_opt_ HINSTANCE, _In_ LPCSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)

◆ SHDialogProc()

static INT_PTR CALLBACK SHDialogProc ( HWND  hWnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 640 of file utils.cpp.

641{
644 HWND hwndItem;
645 LRESULT ret;
646
647 if (uMsg == WM_INITDIALOG)
648 {
651 lParam = (LPARAM)pData->pThis;
652 }
653 else
654 {
656 }
657
658 if (pData && pData->fn)
659 {
660 result = pData->fn(pData->pThis, hWnd, uMsg, wParam, lParam);
661 if (result)
662 return result;
663 }
664
665 switch (uMsg)
666 {
667 case WM_INITDIALOG:
668 return TRUE;
669
670 case WM_COMMAND:
671 if (LOWORD(wParam) == IDHELP)
672 return FALSE;
673
674 hwndItem = GetDlgItem(hWnd, LOWORD(wParam));
675 if (!hwndItem)
676 return FALSE;
677
678 ret = SendMessageA(hwndItem, WM_GETDLGCODE, 0, 0);
680 return FALSE;
681
683 return TRUE;
684
685 default:
686 return FALSE;
687 }
688}
WPARAM wParam
Definition: combotst.c:138
struct tagSHDIALOG * PSHDIALOG
GLuint64EXT * result
Definition: glext.h:11304
LONG_PTR LRESULT
Definition: minwindef.h:176
#define LOWORD(l)
Definition: pedump.c:82
#define IDHELP
Definition: resource_2.h:8
int32_t INT_PTR
Definition: typedefs.h:64
#define SetWindowLongPtrA
Definition: winuser.h:5511
#define DWLP_USER
Definition: winuser.h:883
#define WM_COMMAND
Definition: winuser.h:1768
#define DLGC_UNDEFPUSHBUTTON
Definition: winuser.h:2658
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define GetWindowLongPtrA
Definition: winuser.h:4982
#define WM_INITDIALOG
Definition: winuser.h:1767
#define DLGC_DEFPUSHBUTTON
Definition: winuser.h:2657
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define WM_GETDLGCODE
Definition: winuser.h:1717
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)

Referenced by SHDialogBox().

◆ ShellExecuteCommand()

static HRESULT ShellExecuteCommand ( _In_opt_ HWND  hWnd,
_In_ PCWSTR  Command,
_In_opt_ UINT  Flags 
)
static

Definition at line 371 of file utils.cpp.

372{
373 WCHAR szCmd[MAX_PATH * 2];
375 if (len <= 0) // Could not resolve the command, just use the input
376 {
377 HRESULT hr = StringCchCopyW(szCmd, _countof(szCmd), Command);
378 if (FAILED(hr))
379 return hr;
380 }
381 PWSTR pszArgs = PathGetArgsW(szCmd);
382 PathRemoveArgsW(szCmd);
383 PathUnquoteSpacesW(szCmd);
384
385 SHELLEXECUTEINFOW sei = { sizeof(sei), Flags, hWnd, NULL, szCmd, pszArgs };
386 sei.nShow = SW_SHOW;
389}
void WINAPI PathUnquoteSpacesW(WCHAR *path)
Definition: path.c:2006
WCHAR *WINAPI PathGetArgsW(const WCHAR *path)
Definition: path.c:1740
void WINAPI PathRemoveArgsW(LPWSTR lpszPath)
Definition: path.c:782
GLenum GLsizei len
Definition: glext.h:6722
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
Definition: shlexec.cpp:2723
#define PPCF_FORCEQUALIFY
Definition: shlobj.h:2429
LONG WINAPI PathProcessCommand(_In_ LPCWSTR, _Out_writes_(cchDest) LPWSTR, int cchDest, DWORD)
#define PPCF_ADDARGUMENTS
Definition: shlobj.h:2426
Definition: shell.h:41
uint16_t * PWSTR
Definition: typedefs.h:56
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define SW_SHOW
Definition: winuser.h:786
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170

Referenced by RunRegCommand().

◆ SHInvokeCommandOnContextMenu()

EXTERN_C HRESULT WINAPI SHInvokeCommandOnContextMenu ( _In_opt_ HWND  hWnd,
_In_opt_ IUnknown pUnk,
_In_ IContextMenu pCM,
_In_ UINT  fCMIC,
_In_opt_ LPCSTR  pszVerb 
)

Definition at line 208 of file utils.cpp.

214{
215 return SHInvokeCommandOnContextMenuEx(hWnd, pUnk, pCM, fCMIC, CMF_EXTENDEDVERBS, pszVerb, NULL);
216}
EXTERN_C HRESULT WINAPI SHInvokeCommandOnContextMenuEx(_In_opt_ HWND hWnd, _In_opt_ IUnknown *pUnk, _In_ IContextMenu *pCM, _In_ UINT fCMIC, _In_ UINT fCMF, _In_opt_ LPCSTR pszVerb, _In_opt_ LPCWSTR pwszDir)
Definition: utils.cpp:191
static void *static void *static LPDIRECTPLAY IUnknown * pUnk
Definition: dplayx.c:30

Referenced by BrFolder_Delete().

◆ SHInvokeCommandOnContextMenuEx()

EXTERN_C HRESULT WINAPI SHInvokeCommandOnContextMenuEx ( _In_opt_ HWND  hWnd,
_In_opt_ IUnknown pUnk,
_In_ IContextMenu pCM,
_In_ UINT  fCMIC,
_In_ UINT  fCMF,
_In_opt_ LPCSTR  pszVerb,
_In_opt_ LPCWSTR  pwszDir 
)

Definition at line 191 of file utils.cpp.

199{
200 return SHInvokeCommandOnContextMenuInternal(hWnd, pUnk, pCM, fCMIC, fCMF, pszVerb, pwszDir, true);
201}

Referenced by SHInvokeCommandOnContextMenu(), and SHInvokeCommandWithFlagsAndSite().

◆ SHInvokeCommandOnContextMenuInternal()

static HRESULT SHInvokeCommandOnContextMenuInternal ( _In_opt_ HWND  hWnd,
_In_opt_ IUnknown pUnk,
_In_ IContextMenu pCM,
_In_ UINT  fCMIC,
_In_ UINT  fCMF,
_In_opt_ LPCSTR  pszVerb,
_In_opt_ LPCWSTR  pwszDir,
_In_ bool  ForceQCM 
)
static

Definition at line 103 of file utils.cpp.

112{
113 CMINVOKECOMMANDINFOEX info = { sizeof(info), fCMIC, hWnd, pszVerb };
114 INT iDefItem = 0;
115 HMENU hMenu = NULL;
116 HCURSOR hOldCursor;
117 HRESULT hr = S_OK;
118 WCHAR wideverb[MAX_PATH];
119
120 if (!pCM)
121 return E_INVALIDARG;
122
123 hOldCursor = SetCursor(LoadCursorW(NULL, (LPCWSTR)IDC_WAIT));
124 info.nShow = SW_NORMAL;
125 if (pUnk)
127
128 if (IS_INTRESOURCE(pszVerb))
129 {
130 hMenu = CreatePopupMenu();
131 if (hMenu)
132 {
133 hr = pCM->QueryContextMenu(hMenu, 0, 1, MAXSHORT, fCMF | CMF_DEFAULTONLY);
134 iDefItem = GetMenuDefaultItem(hMenu, 0, 0);
135 if (iDefItem != -1)
136 info.lpVerb = MAKEINTRESOURCEA(iDefItem - 1);
137 }
138 info.lpVerbW = MAKEINTRESOURCEW(info.lpVerb);
139 }
140 else
141 {
143 {
144 info.fMask |= CMF_OPTIMIZEFORINVOKE;
145 }
146 if (pszVerb && SHAnsiToUnicode(pszVerb, wideverb, _countof(wideverb)))
147 {
148 info.fMask |= CMIC_MASK_UNICODE;
149 info.lpVerbW = wideverb;
150 }
151 if (ForceQCM)
152 {
153 hMenu = CreatePopupMenu();
154 hr = pCM->QueryContextMenu(hMenu, 0, 1, MAXSHORT, fCMF);
155 }
156 }
157
158 SetCursor(hOldCursor);
159
160 if (!FAILED_UNEXPECTEDLY(hr) && (iDefItem != -1 || info.lpVerb))
161 {
162 if (!hWnd)
163 info.fMask |= CMIC_MASK_FLAG_NO_UI;
164
166 if (pwszDir)
167 {
168 info.fMask |= CMIC_MASK_UNICODE;
169 info.lpDirectoryW = pwszDir;
170 if (SHUnicodeToAnsi(pwszDir, dir, _countof(dir)))
171 info.lpDirectory = dir;
172 }
173
174 hr = pCM->InvokeCommand((LPCMINVOKECOMMANDINFO)&info);
175 if (FAILED_UNEXPECTEDLY(hr)) { /* Diagnostic message */ }
176 }
177
178 if (pUnk)
180 if (hMenu)
181 DestroyMenu(hMenu);
182
183 return hr;
184}
unsigned int dir
Definition: maze.c:112
#define E_INVALIDARG
Definition: ddrawi.h:101
#define IS_INTRESOURCE(x)
Definition: loader.c:613
HRESULT WINAPI IUnknown_SetSite(IUnknown *obj, IUnknown *site)
Definition: ordinal.c:1411
DWORD WINAPI SHAnsiToUnicode(LPCSTR lpSrcStr, LPWSTR lpDstStr, int iLen)
Definition: string.c:2803
INT WINAPI SHUnicodeToAnsi(LPCWSTR lpSrcStr, LPSTR lpDstStr, INT iLen)
Definition: string.c:2927
static WORD GetVersionMajorMinor()
Definition: utils.cpp:38
#define S_OK
Definition: intsafe.h:52
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
#define _WIN32_WINNT_WIN7
Definition: sdkddkver.h:28
const uint16_t * LPCWSTR
Definition: typedefs.h:57
#define MAXSHORT
Definition: umtypes.h:114
HICON HCURSOR
Definition: windef.h:99
HMENU WINAPI CreatePopupMenu(void)
Definition: menu.c:838
UINT WINAPI GetMenuDefaultItem(_In_ HMENU hMenu, _In_ UINT fByPos, _In_ UINT gmdiFlags)
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2474
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define IDC_WAIT
Definition: winuser.h:697
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
#define SW_NORMAL
Definition: winuser.h:780

Referenced by IContextMenu_Invoke(), and SHInvokeCommandOnContextMenuEx().

◆ SHInvokeCommandsOnContextMenu()

EXTERN_C HRESULT WINAPI SHInvokeCommandsOnContextMenu ( _In_opt_ HWND  hwnd,
_In_opt_ IUnknown punkSite,
_In_ IContextMenu pCM,
_In_ DWORD  fMask,
_In_reads_opt_(cVerbs) PCSTR pVerbs,
_In_ UINT  cVerbs 
)

Definition at line 234 of file utils.cpp.

241{
242 HRESULT hr;
243 CMINVOKECOMMANDINFOEX ici;
244 WCHAR szVerbW[MAX_PATH];
245 HMENU hMenu = NULL;
246 UINT iVerb, idDefault = (UINT)-1;
247 PCSTR pszVerbA = NULL;
248
249 if (!pCM)
250 return E_INVALIDARG;
251
252 hMenu = CreatePopupMenu();
253 if (!hMenu)
254 return E_OUTOFMEMORY;
255
256 if (punkSite)
257 IUnknown_SetSite(pCM, punkSite);
258
259 hr = pCM->QueryContextMenu(hMenu, 0, 1, MAXSHORT, (cVerbs ? 0 : CMF_DEFAULTONLY));
260 if (FAILED(hr))
261 goto Cleanup;
262
263 if (!cVerbs)
264 {
265 idDefault = GetMenuDefaultItem(hMenu, FALSE, 0);
266 if (idDefault != (UINT)-1)
267 pszVerbA = MAKEINTRESOURCEA(idDefault - 1);
268 }
269
270 ZeroMemory(&ici, sizeof(ici));
271 ici.cbSize = sizeof(ici);
272 ici.hwnd = hwnd;
273 ici.nShow = SW_SHOWNORMAL;
274
275 iVerb = 0;
276 do
277 {
278 if (cVerbs)
279 pszVerbA = pVerbs[iVerb];
280
281 if (!pszVerbA && idDefault == (UINT)-1)
282 {
283 hr = E_FAIL;
284 break;
285 }
286
287 ici.fMask = fMask;
288 ici.lpVerb = pszVerbA;
289 ici.lpVerbW = NULL;
290
291 if (idDefault == (UINT)-1 && !IS_INTRESOURCE(pszVerbA) && IsTextAsciiOnly(pszVerbA))
292 {
293 size_t ich;
294 for (ich = 0; pszVerbA[ich] && ich + 1 < _countof(szVerbW); ++ich)
295 {
296 szVerbW[ich] = (BYTE)pszVerbA[ich];
297 }
298 szVerbW[ich] = UNICODE_NULL;
299
300 ici.lpVerbW = szVerbW;
301 ici.fMask |= CMIC_MASK_UNICODE;
302 }
303
304 hr = pCM->InvokeCommand((LPCMINVOKECOMMANDINFO)&ici);
305
307 break;
308
309 ++iVerb;
310 } while (iVerb < cVerbs);
311
312Cleanup:
313 if (punkSite)
315 DestroyMenu(hMenu);
316 return hr;
317}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_FAIL
Definition: ddrawi.h:102
static BOOL IsTextAsciiOnly(PCSTR psz)
Definition: utils.cpp:219
static const WCHAR Cleanup[]
Definition: register.c:80
#define UNICODE_NULL
const char * PCSTR
Definition: typedefs.h:52
#define ERROR_CANCELLED
Definition: winerror.h:1055
#define SW_SHOWNORMAL
Definition: winuser.h:781
unsigned char BYTE
Definition: xxhash.c:193

◆ SHInvokeCommandWithFlagsAndSite()

EXTERN_C HRESULT WINAPI SHInvokeCommandWithFlagsAndSite ( _In_opt_ HWND  hWnd,
_In_opt_ IUnknown pUnk,
_In_ IShellFolder pShellFolder,
_In_ LPCITEMIDLIST  pidl,
_In_ UINT  fCMIC,
_In_opt_ LPCSTR  pszVerb 
)

Definition at line 324 of file utils.cpp.

331{
333 if (pShellFolder)
334 {
335 IContextMenu *pCM;
336 hr = pShellFolder->GetUIObjectOf(hWnd, 1, &pidl, IID_IContextMenu, NULL, (void**)&pCM);
337 if (SUCCEEDED(hr))
338 {
339 fCMIC |= CMIC_MASK_FLAG_LOG_USAGE;
340 hr = SHInvokeCommandOnContextMenuEx(hWnd, pUnk, pCM, fCMIC, 0, pszVerb, NULL);
341 pCM->Release();
342 }
343 }
344 return hr;
345}

◆ SHLWAPI_IsBogusHRESULT()

static BOOL SHLWAPI_IsBogusHRESULT ( HRESULT  hr)
inlinestatic

Definition at line 489 of file utils.cpp.

490{
491 return (hr == E_FAIL || hr == E_INVALIDARG || hr == E_NOTIMPL);
492}
#define E_NOTIMPL
Definition: ddrawi.h:99

Referenced by IShellFolder_GetDisplayNameOf().

◆ SHRunIndirectRegClientCommand()

EXTERN_C HRESULT WINAPI SHRunIndirectRegClientCommand ( _In_opt_ HWND  hWnd,
_In_ PCWSTR  pszClientType 
)

Definition at line 424 of file utils.cpp.

425{
426 WCHAR szKey[MAX_PATH], szClient[MAX_PATH];
427 HRESULT hr = StringCchPrintfW(szKey, _countof(szKey), L"Software\\Clients\\%s", pszClientType);
428 if (FAILED(hr))
429 return hr;
430
431 // Find the default client
432 DWORD error, cb;
433 cb = sizeof(szClient);
435 if (error)
436 {
437 cb = sizeof(szClient);
440 if (error)
442 }
443
444 hr = StringCchPrintfW(szKey, _countof(szKey), L"Software\\Clients\\%s\\%s", pszClientType, szClient);
445 if (SUCCEEDED(hr))
447 return hr;
448}
EXTERN_C HRESULT WINAPI RunIndirectRegCommand(_In_opt_ HWND hWnd, _In_ HKEY hKey, _In_opt_ PCWSTR pszSubKey, _In_ PCWSTR pszVerb)
Definition: utils.cpp:409
#define ERROR_BUFFER_OVERFLOW
Definition: winerror.h:307
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define HKEY_CURRENT_USER
Definition: winreg.h:11

Referenced by CTaskSwitchWnd::InvokeRegistryAppKeyCommand().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( shell  )

Variable Documentation

◆ g_RetryData

const RETRY_DATA g_RetryData[]
static
Initial value:
=
{
{ SHGDN_FOREDITING, SHGDN_NORMAL, SFGDNO_RETRYALWAYS },
{ SHGDN_FORADDRESSBAR, SHGDN_NORMAL, SFGDNO_RETRYALWAYS },
{ SHGDN_NORMAL, SHGDN_FORPARSING, SFGDNO_RETRYALWAYS },
{ SHGDN_FORPARSING, SHGDN_NORMAL, SFGDNO_RETRYWITHFORPARSING },
{ SHGDN_INFOLDER, SHGDN_NORMAL, SFGDNO_RETRYALWAYS },
}

Definition at line 501 of file utils.cpp.

Referenced by IShellFolder_GetDisplayNameOf().