shellapi.h (6.00.3790.3959-Windows 5.0) | | shellapi.h (6.0.6002.18005-Windows 6.0) |
|
/*****************************************************************************\ | | /*****************************************************************************\ |
* * | | * * |
* shellapi.h - SHELL.DLL functions, types, and definitions * | | * shellapi.h - SHELL.DLL functions, types, and definitions * |
* * | | * * |
* Copyright (c) Microsoft Corporation. All rights reserved. * | | * Copyright (c) Microsoft Corporation. All rights reserved. * |
* * | | * * |
\*****************************************************************************/ | | \*****************************************************************************/ |
| | |
#ifndef _INC_SHELLAPI | | #ifndef _INC_SHELLAPI |
#define _INC_SHELLAPI | | #define _INC_SHELLAPI |
| | |
|
| | #include <SpecStrings.h> |
| | |
// | | // |
// Define API decoration for direct importing of DLL references. | | // Define API decoration for direct importing of DLL references. |
// | | // |
#ifndef WINSHELLAPI | | #ifndef WINSHELLAPI |
#if !defined(_SHELL32_) | | #if !defined(_SHELL32_) |
#define WINSHELLAPI DECLSPEC_IMPORT | | #define WINSHELLAPI DECLSPEC_IMPORT |
#else | | #else |
#define WINSHELLAPI | | #define WINSHELLAPI |
#endif | | #endif |
#endif // WINSHELLAPI | | #endif // WINSHELLAPI |
| | |
skipping to change at line 53 | | skipping to change at line 55 |
#if !defined(_WIN64) | | #if !defined(_WIN64) |
#include <pshpack1.h> | | #include <pshpack1.h> |
#endif | | #endif |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
extern "C" { /* Assume C declarations for C++ */ | | extern "C" { /* Assume C declarations for C++ */ |
#endif /* __cplusplus */ | | #endif /* __cplusplus */ |
| | |
DECLARE_HANDLE(HDROP); | | DECLARE_HANDLE(HDROP); |
| | |
|
SHSTDAPI_(UINT) DragQueryFileA(HDROP,UINT,LPSTR,UINT); | | SHSTDAPI_(UINT) DragQueryFileA(HDROP hDrop, UINT iFile, __out_ecount_opt(cch) LP |
SHSTDAPI_(UINT) DragQueryFileW(HDROP,UINT,LPWSTR,UINT); | | STR lpszFile, UINT cch); |
| | SHSTDAPI_(UINT) DragQueryFileW(HDROP hDrop, UINT iFile, __out_ecount_opt(cch) LP |
| | WSTR lpszFile, UINT cch); |
#ifdef UNICODE | | #ifdef UNICODE |
#define DragQueryFile DragQueryFileW | | #define DragQueryFile DragQueryFileW |
#else | | #else |
#define DragQueryFile DragQueryFileA | | #define DragQueryFile DragQueryFileA |
#endif // !UNICODE | | #endif // !UNICODE |
|
SHSTDAPI_(BOOL) DragQueryPoint(HDROP,LPPOINT); | | SHSTDAPI_(BOOL) DragQueryPoint(HDROP hDrop,__out LPPOINT lppt); |
SHSTDAPI_(void) DragFinish(HDROP); | | SHSTDAPI_(void) DragFinish(__in HDROP hDrop); |
SHSTDAPI_(void) DragAcceptFiles(HWND,BOOL); | | SHSTDAPI_(void) DragAcceptFiles(__in HWND hWnd, __in BOOL fAccept); |
| | |
|
SHSTDAPI_(HINSTANCE) ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, | | SHSTDAPI_(HINSTANCE) ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, |
LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd); | | LPCSTR lpParameters, |
SHSTDAPI_(HINSTANCE) ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFil | | LPCSTR lpDirectory, INT nShowCmd); |
e, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd); | | SHSTDAPI_(HINSTANCE) ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFil |
| | e, LPCWSTR lpParameters, |
| | LPCWSTR lpDirectory, INT nShowCmd); |
#ifdef UNICODE | | #ifdef UNICODE |
#define ShellExecute ShellExecuteW | | #define ShellExecute ShellExecuteW |
#else | | #else |
#define ShellExecute ShellExecuteA | | #define ShellExecute ShellExecuteA |
#endif // !UNICODE | | #endif // !UNICODE |
|
SHSTDAPI_(HINSTANCE) FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lp | | SHSTDAPI_(HINSTANCE) FindExecutableA(LPCSTR lpFile, LPCSTR lpDirectory, __out_ec |
Result); | | ount(MAX_PATH) LPSTR lpResult); |
SHSTDAPI_(HINSTANCE) FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR | | SHSTDAPI_(HINSTANCE) FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, __out_ |
lpResult); | | ecount(MAX_PATH) LPWSTR lpResult); |
#ifdef UNICODE | | #ifdef UNICODE |
#define FindExecutable FindExecutableW | | #define FindExecutable FindExecutableW |
#else | | #else |
#define FindExecutable FindExecutableA | | #define FindExecutable FindExecutableA |
#endif // !UNICODE | | #endif // !UNICODE |
|
SHSTDAPI_(LPWSTR *) CommandLineToArgvW(LPCWSTR lpCmdLine, int*pNumArgs); | | SHSTDAPI_(LPWSTR *) CommandLineToArgvW(LPCWSTR lpCmdLine, __out int* pNumArgs); |
| | |
SHSTDAPI_(INT) ShellAboutA(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON h
Icon); | | SHSTDAPI_(INT) ShellAboutA(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON h
Icon); |
SHSTDAPI_(INT) ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON
hIcon); | | SHSTDAPI_(INT) ShellAboutW(HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON
hIcon); |
#ifdef UNICODE | | #ifdef UNICODE |
#define ShellAbout ShellAboutW | | #define ShellAbout ShellAboutW |
#else | | #else |
#define ShellAbout ShellAboutA | | #define ShellAbout ShellAboutA |
#endif // !UNICODE | | #endif // !UNICODE |
SHSTDAPI_(HICON) DuplicateIcon(HINSTANCE hInst, HICON hIcon); | | SHSTDAPI_(HICON) DuplicateIcon(HINSTANCE hInst, HICON hIcon); |
|
SHSTDAPI_(HICON) ExtractAssociatedIconA(HINSTANCE hInst, LPSTR lpIconPath, LPWOR | | SHSTDAPI_(HICON) ExtractAssociatedIconA(HINSTANCE hInst, __inout_ecount(128) LP |
D lpiIcon); | | STR lpIconPath, __inout LPWORD lpiIcon); |
SHSTDAPI_(HICON) ExtractAssociatedIconW(HINSTANCE hInst, LPWSTR lpIconPath, LPWO | | SHSTDAPI_(HICON) ExtractAssociatedIconW(HINSTANCE hInst, __inout_ecount(128) LP |
RD lpiIcon); | | WSTR lpIconPath, __inout LPWORD lpiIcon); |
#ifdef UNICODE | | #ifdef UNICODE |
#define ExtractAssociatedIcon ExtractAssociatedIconW | | #define ExtractAssociatedIcon ExtractAssociatedIconW |
#else | | #else |
#define ExtractAssociatedIcon ExtractAssociatedIconA | | #define ExtractAssociatedIcon ExtractAssociatedIconA |
#endif // !UNICODE | | #endif // !UNICODE |
|
#if (_WIN32_IE >= 0x0601) | | SHSTDAPI_(HICON) ExtractAssociatedIconExA(HINSTANCE hInst, __inout_ecount(128) L |
SHSTDAPI_(HICON) ExtractAssociatedIconExA(HINSTANCE hInst,LPSTR lpIconPath,LPWOR | | PSTR lpIconPath, __inout LPWORD lpiIconIndex, __out LPWORD lpiIconId); |
D lpiIconIndex, LPWORD lpiIconId); | | SHSTDAPI_(HICON) ExtractAssociatedIconExW(HINSTANCE hInst, __inout_ecount(128) L |
SHSTDAPI_(HICON) ExtractAssociatedIconExW(HINSTANCE hInst,LPWSTR lpIconPath,LPWO | | PWSTR lpIconPath, __inout LPWORD lpiIconIndex, __out LPWORD lpiIconId); |
RD lpiIconIndex, LPWORD lpiIconId); | | |
#ifdef UNICODE | | #ifdef UNICODE |
#define ExtractAssociatedIconEx ExtractAssociatedIconExW | | #define ExtractAssociatedIconEx ExtractAssociatedIconExW |
#else | | #else |
#define ExtractAssociatedIconEx ExtractAssociatedIconExA | | #define ExtractAssociatedIconEx ExtractAssociatedIconExA |
#endif // !UNICODE | | #endif // !UNICODE |
|
#endif // (_WIN32_IE >= 0x0601) | | |
SHSTDAPI_(HICON) ExtractIconA(HINSTANCE hInst, LPCSTR lpszExeFileName, UINT nIco
nIndex); | | SHSTDAPI_(HICON) ExtractIconA(HINSTANCE hInst, LPCSTR lpszExeFileName, UINT nIco
nIndex); |
SHSTDAPI_(HICON) ExtractIconW(HINSTANCE hInst, LPCWSTR lpszExeFileName, UINT nIc
onIndex); | | SHSTDAPI_(HICON) ExtractIconW(HINSTANCE hInst, LPCWSTR lpszExeFileName, UINT nIc
onIndex); |
#ifdef UNICODE | | #ifdef UNICODE |
#define ExtractIcon ExtractIconW | | #define ExtractIcon ExtractIconW |
#else | | #else |
#define ExtractIcon ExtractIconA | | #define ExtractIcon ExtractIconA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if(WINVER >= 0x0400) | | #if(WINVER >= 0x0400) |
typedef struct _DRAGINFOA { | | typedef struct _DRAGINFOA { |
| | |
skipping to change at line 150 | | skipping to change at line 152 |
#define ABM_QUERYPOS 0x00000002 | | #define ABM_QUERYPOS 0x00000002 |
#define ABM_SETPOS 0x00000003 | | #define ABM_SETPOS 0x00000003 |
#define ABM_GETSTATE 0x00000004 | | #define ABM_GETSTATE 0x00000004 |
#define ABM_GETTASKBARPOS 0x00000005 | | #define ABM_GETTASKBARPOS 0x00000005 |
#define ABM_ACTIVATE 0x00000006 // lParam == TRUE/FALSE means activate/dea
ctivate | | #define ABM_ACTIVATE 0x00000006 // lParam == TRUE/FALSE means activate/dea
ctivate |
#define ABM_GETAUTOHIDEBAR 0x00000007 | | #define ABM_GETAUTOHIDEBAR 0x00000007 |
#define ABM_SETAUTOHIDEBAR 0x00000008 // this can fail at any time. MUST check
the result | | #define ABM_SETAUTOHIDEBAR 0x00000008 // this can fail at any time. MUST check
the result |
// lParam = TRUE/FALSE Set/Unset | | // lParam = TRUE/FALSE Set/Unset |
// uEdge = what edge | | // uEdge = what edge |
#define ABM_WINDOWPOSCHANGED 0x0000009 | | #define ABM_WINDOWPOSCHANGED 0x0000009 |
|
#define ABM_SETSTATE 0x0000000a | | #if (NTDDI_VERSION >= NTDDI_WINXP) |
| | #define ABM_SETSTATE 0x0000000a |
| | #endif // (NTDDI_VERSION >= NTDDI_WINXP) |
| | |
// these are put in the wparam of callback messages | | // these are put in the wparam of callback messages |
#define ABN_STATECHANGE 0x0000000 | | #define ABN_STATECHANGE 0x0000000 |
#define ABN_POSCHANGED 0x0000001 | | #define ABN_POSCHANGED 0x0000001 |
#define ABN_FULLSCREENAPP 0x0000002 | | #define ABN_FULLSCREENAPP 0x0000002 |
#define ABN_WINDOWARRANGE 0x0000003 // lParam == TRUE means hide | | #define ABN_WINDOWARRANGE 0x0000003 // lParam == TRUE means hide |
| | |
// flags for get state | | // flags for get state |
#define ABS_AUTOHIDE 0x0000001 | | #define ABS_AUTOHIDE 0x0000001 |
#define ABS_ALWAYSONTOP 0x0000002 | | #define ABS_ALWAYSONTOP 0x0000002 |
| | |
skipping to change at line 177 | | skipping to change at line 181 |
typedef struct _AppBarData | | typedef struct _AppBarData |
{ | | { |
DWORD cbSize; | | DWORD cbSize; |
HWND hWnd; | | HWND hWnd; |
UINT uCallbackMessage; | | UINT uCallbackMessage; |
UINT uEdge; | | UINT uEdge; |
RECT rc; | | RECT rc; |
LPARAM lParam; // message specific | | LPARAM lParam; // message specific |
} APPBARDATA, *PAPPBARDATA; | | } APPBARDATA, *PAPPBARDATA; |
| | |
|
SHSTDAPI_(UINT_PTR) SHAppBarMessage(DWORD dwMessage, PAPPBARDATA pData); | | SHSTDAPI_(UINT_PTR) SHAppBarMessage(DWORD dwMessage, __in PAPPBARDATA pData); |
| | |
//// | | //// |
//// EndAppBar | | //// EndAppBar |
//// | | //// |
| | |
|
SHSTDAPI_(DWORD) DoEnvironmentSubstA(LPSTR szString, UINT cchString); | | SHSTDAPI_(DWORD) DoEnvironmentSubstA(__inout_ecount(cchString) LPSTR szString, |
SHSTDAPI_(DWORD) DoEnvironmentSubstW(LPWSTR szString, UINT cchString); | | UINT cchString); |
| | SHSTDAPI_(DWORD) DoEnvironmentSubstW(__inout_ecount(cchString) LPWSTR szString |
| | , UINT cchString); |
#ifdef UNICODE | | #ifdef UNICODE |
#define DoEnvironmentSubst DoEnvironmentSubstW | | #define DoEnvironmentSubst DoEnvironmentSubstW |
#else | | #else |
#define DoEnvironmentSubst DoEnvironmentSubstA | | #define DoEnvironmentSubst DoEnvironmentSubstA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#define EIRESID(x) (-1 * (int)(x)) | | #define EIRESID(x) (-1 * (int)(x)) |
|
SHSTDAPI_(UINT) ExtractIconExA(LPCSTR lpszFile, int nIconIndex, HICON *phiconLar | | SHSTDAPI_(UINT) ExtractIconExA(LPCSTR lpszFile, int nIconIndex, __out_ecount_opt |
ge, HICON *phiconSmall, UINT nIcons); | | (nIcons) HICON *phiconLarge, __out_ecount_opt(nIcons) HICON *phiconSmall, UINT n |
SHSTDAPI_(UINT) ExtractIconExW(LPCWSTR lpszFile, int nIconIndex, HICON *phiconLa | | Icons); |
rge, HICON *phiconSmall, UINT nIcons); | | SHSTDAPI_(UINT) ExtractIconExW(LPCWSTR lpszFile, int nIconIndex, __out_ecount_op |
| | t(nIcons) HICON *phiconLarge, __out_ecount_opt(nIcons) HICON *phiconSmall, UINT |
| | nIcons); |
#ifdef UNICODE | | #ifdef UNICODE |
#define ExtractIconEx ExtractIconExW | | #define ExtractIconEx ExtractIconExW |
#else | | #else |
#define ExtractIconEx ExtractIconExA | | #define ExtractIconEx ExtractIconExA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
|
//// | | // Shell File Operations |
//// Shell File Operations | | |
//// | | |
#ifndef FO_MOVE //these need to be kept in sync with the ones in shlobj.h | | |
| | |
|
#define FO_MOVE 0x0001 | | #define FO_MOVE 0x0001 |
#define FO_COPY 0x0002 | | #define FO_COPY 0x0002 |
#define FO_DELETE 0x0003 | | #define FO_DELETE 0x0003 |
#define FO_RENAME 0x0004 | | #define FO_RENAME 0x0004 |
| | |
| | // SHFILEOPSTRUCT.fFlags and IFileOperation::SetOperationFlags() flag values |
| | |
#define FOF_MULTIDESTFILES 0x0001 | | #define FOF_MULTIDESTFILES 0x0001 |
#define FOF_CONFIRMMOUSE 0x0002 | | #define FOF_CONFIRMMOUSE 0x0002 |
|
#define FOF_SILENT 0x0004 // don't create progress/report | | #define FOF_SILENT 0x0004 // don't display progress UI (confirm |
#define FOF_RENAMEONCOLLISION 0x0008 | | prompts may be displayed still) |
#define FOF_NOCONFIRMATION 0x0010 // Don't prompt the user. | | #define FOF_RENAMEONCOLLISION 0x0008 // automatically rename the source fi |
| | les to avoid the collisions |
| | #define FOF_NOCONFIRMATION 0x0010 // don't display confirmation UI, ass |
| | ume "yes" for cases that can be bypassed, "no" for those that can not |
#define FOF_WANTMAPPINGHANDLE 0x0020 // Fill in SHFILEOPSTRUCT.hNameMappin
gs | | #define FOF_WANTMAPPINGHANDLE 0x0020 // Fill in SHFILEOPSTRUCT.hNameMappin
gs |
|
// Must be freed using SHFreeNameMappings | | // Must be freed using SHFreeNameMapp |
#define FOF_ALLOWUNDO 0x0040 | | ings |
#define FOF_FILESONLY 0x0080 // on *.*, do only files | | #define FOF_ALLOWUNDO 0x0040 // enable undo including Recycle beha |
| | vior for IFileOperation::Delete() |
| | #define FOF_FILESONLY 0x0080 // only operate on the files (non fol |
| | ders), both files and folders are assumed without this |
#define FOF_SIMPLEPROGRESS 0x0100 // means don't show names of files | | #define FOF_SIMPLEPROGRESS 0x0100 // means don't show names of files |
|
#define FOF_NOCONFIRMMKDIR 0x0200 // don't confirm making any needed di | | #define FOF_NOCONFIRMMKDIR 0x0200 // don't dispplay confirmatino UI bef |
rs | | ore making any needed directories, assume "Yes" in these cases |
#define FOF_NOERRORUI 0x0400 // don't put up error UI | | #define FOF_NOERRORUI 0x0400 // don't put up error UI, other UI ma |
#define FOF_NOCOPYSECURITYATTRIBS 0x0800 // dont copy NT file Security Attribu | | y be displayed, progress, confirmations |
tes | | |
#define FOF_NORECURSION 0x1000 // don't recurse into directories. | | |
#if (_WIN32_IE >= 0x0500) | | #if (_WIN32_IE >= 0x0500) |
|
#define FOF_NO_CONNECTED_ELEMENTS 0x2000 // don't operate on connected element | | #define FOF_NOCOPYSECURITYATTRIBS 0x0800 // dont copy file security attributes |
s. | | (ACLs) |
| | #define FOF_NORECURSION 0x1000 // don't recurse into directories for |
| | operations that would recurse |
| | #define FOF_NO_CONNECTED_ELEMENTS 0x2000 // don't operate on connected element |
| | s ("xxx_files" folders that go with .htm files) |
#define FOF_WANTNUKEWARNING 0x4000 // during delete operation, warn if n
uking instead of recycling (partially overrides FOF_NOCONFIRMATION) | | #define FOF_WANTNUKEWARNING 0x4000 // during delete operation, warn if n
uking instead of recycling (partially overrides FOF_NOCONFIRMATION) |
#endif // (_WIN32_IE >= 0x500) | | #endif // (_WIN32_IE >= 0x500) |
#if (_WIN32_WINNT >= 0x0501) | | #if (_WIN32_WINNT >= 0x0501) |
|
#define FOF_NORECURSEREPARSE 0x8000 // treat reparse points as objects, n
ot containers | | #define FOF_NORECURSEREPARSE 0x8000 // deprecated; the operations engine
always does the right thing on FolderLink objects (symlinks, reparse points, fol
der shortcuts) |
#endif // (_WIN32_WINNT >= 0x501) | | #endif // (_WIN32_WINNT >= 0x501) |
|
| | #define FOF_NO_UI (FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERR
ORUI | FOF_NOCONFIRMMKDIR) // don't display any UI at all |
| | |
typedef WORD FILEOP_FLAGS; | | typedef WORD FILEOP_FLAGS; |
| | |
#define PO_DELETE 0x0013 // printer is being deleted | | #define PO_DELETE 0x0013 // printer is being deleted |
#define PO_RENAME 0x0014 // printer is being renamed | | #define PO_RENAME 0x0014 // printer is being renamed |
#define PO_PORTCHANGE 0x0020 // port this printer connected to is being chang
ed | | #define PO_PORTCHANGE 0x0020 // port this printer connected to is being chang
ed |
// if this id is set, the strings received by | | // if this id is set, the strings received by |
// the copyhook are a doubly-null terminated | | // the copyhook are a doubly-null terminated |
// list of strings. The first is the printer | | // list of strings. The first is the printer |
// name and the second is the printer port. | | // name and the second is the printer port. |
#define PO_REN_PORT 0x0034 // PO_RENAME and PO_PORTCHANGE at same time. | | #define PO_REN_PORT 0x0034 // PO_RENAME and PO_PORTCHANGE at same time. |
| | |
// no POF_ flags currently defined | | // no POF_ flags currently defined |
| | |
typedef WORD PRINTEROP_FLAGS; | | typedef WORD PRINTEROP_FLAGS; |
| | |
|
#endif // FO_MOVE | | |
| | |
// implicit parameters are: | | // implicit parameters are: |
// if pFrom or pTo are unqualified names the current directories are | | // if pFrom or pTo are unqualified names the current directories are |
// taken from the global current drive/directory settings managed | | // taken from the global current drive/directory settings managed |
// by Get/SetCurrentDrive/Directory | | // by Get/SetCurrentDrive/Directory |
// | | // |
// the global confirmation settings | | // the global confirmation settings |
| | |
typedef struct _SHFILEOPSTRUCTA | | typedef struct _SHFILEOPSTRUCTA |
{ | | { |
|
HWND hwnd; | | HWND hwnd; |
UINT wFunc; | | UINT wFunc; |
LPCSTR pFrom; | | LPCSTR pFrom; |
LPCSTR pTo; | | LPCSTR pTo; |
FILEOP_FLAGS fFlags; | | FILEOP_FLAGS fFlags; |
BOOL fAnyOperationsAborted; | | BOOL fAnyOperationsAborted; |
LPVOID hNameMappings; | | LPVOID hNameMappings; |
LPCSTR lpszProgressTitle; // only used if FOF_SIMPLEPROGRESS | | LPCSTR lpszProgressTitle; // only used if FOF_SIMPLEPROGRESS |
} SHFILEOPSTRUCTA, *LPSHFILEOPSTRUCTA; | | } SHFILEOPSTRUCTA, *LPSHFILEOPSTRUCTA; |
typedef struct _SHFILEOPSTRUCTW | | typedef struct _SHFILEOPSTRUCTW |
{ | | { |
|
HWND hwnd; | | HWND hwnd; |
UINT wFunc; | | UINT wFunc; |
LPCWSTR pFrom; | | LPCWSTR pFrom; |
LPCWSTR pTo; | | LPCWSTR pTo; |
FILEOP_FLAGS fFlags; | | FILEOP_FLAGS fFlags; |
BOOL fAnyOperationsAborted; | | BOOL fAnyOperationsAborted; |
LPVOID hNameMappings; | | LPVOID hNameMappings; |
LPCWSTR lpszProgressTitle; // only used if FOF_SIMPLEPROGRESS | | LPCWSTR lpszProgressTitle; // only used if FOF_SIMPLEPROGRESS |
} SHFILEOPSTRUCTW, *LPSHFILEOPSTRUCTW; | | } SHFILEOPSTRUCTW, *LPSHFILEOPSTRUCTW; |
#ifdef UNICODE | | #ifdef UNICODE |
typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT; | | typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT; |
typedef LPSHFILEOPSTRUCTW LPSHFILEOPSTRUCT; | | typedef LPSHFILEOPSTRUCTW LPSHFILEOPSTRUCT; |
#else | | #else |
typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT; | | typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT; |
typedef LPSHFILEOPSTRUCTA LPSHFILEOPSTRUCT; | | typedef LPSHFILEOPSTRUCTA LPSHFILEOPSTRUCT; |
#endif // UNICODE | | #endif // UNICODE |
| | |
|
SHSTDAPI_(int) SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp); | | SHSTDAPI_(int) SHFileOperationA(__inout LPSHFILEOPSTRUCTA lpFileOp); |
SHSTDAPI_(int) SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp); | | SHSTDAPI_(int) SHFileOperationW(__inout LPSHFILEOPSTRUCTW lpFileOp); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHFileOperation SHFileOperationW | | #define SHFileOperation SHFileOperationW |
#else | | #else |
#define SHFileOperation SHFileOperationA | | #define SHFileOperation SHFileOperationA |
#endif // !UNICODE | | #endif // !UNICODE |
SHSTDAPI_(void) SHFreeNameMappings(HANDLE hNameMappings); | | SHSTDAPI_(void) SHFreeNameMappings(HANDLE hNameMappings); |
| | |
typedef struct _SHNAMEMAPPINGA | | typedef struct _SHNAMEMAPPINGA |
{ | | { |
LPSTR pszOldPath; | | LPSTR pszOldPath; |
| | |
skipping to change at line 352 | | skipping to change at line 354 |
#define SE_ERR_NOASSOC 31 | | #define SE_ERR_NOASSOC 31 |
| | |
#if(WINVER >= 0x0400) | | #if(WINVER >= 0x0400) |
| | |
// Note CLASSKEY overrides CLASSNAME | | // Note CLASSKEY overrides CLASSNAME |
#define SEE_MASK_CLASSNAME 0x00000001 | | #define SEE_MASK_CLASSNAME 0x00000001 |
#define SEE_MASK_CLASSKEY 0x00000003 | | #define SEE_MASK_CLASSKEY 0x00000003 |
// Note INVOKEIDLIST overrides IDLIST | | // Note INVOKEIDLIST overrides IDLIST |
#define SEE_MASK_IDLIST 0x00000004 | | #define SEE_MASK_IDLIST 0x00000004 |
#define SEE_MASK_INVOKEIDLIST 0x0000000c | | #define SEE_MASK_INVOKEIDLIST 0x0000000c |
|
#define SEE_MASK_ICON 0x00000010 | | #if (NTDDI_VERSION < NTDDI_LONGHORN) |
| | #define SEE_MASK_ICON 0x00000010 // not used |
| | #endif // (NTDDI_VERSION < NTDDI_LONGHORN) |
#define SEE_MASK_HOTKEY 0x00000020 | | #define SEE_MASK_HOTKEY 0x00000020 |
#define SEE_MASK_NOCLOSEPROCESS 0x00000040 | | #define SEE_MASK_NOCLOSEPROCESS 0x00000040 |
#define SEE_MASK_CONNECTNETDRV 0x00000080 | | #define SEE_MASK_CONNECTNETDRV 0x00000080 |
|
#define SEE_MASK_FLAG_DDEWAIT 0x00000100 | | #define SEE_MASK_NOASYNC 0x00000100 |
| | #define SEE_MASK_FLAG_DDEWAIT SEE_MASK_NOASYNC // Use SEE_MASK_NOASYNC inst |
| | ead of SEE_MASK_FLAG_DDEWAIT as it more accuratly describes the behavior |
#define SEE_MASK_DOENVSUBST 0x00000200 | | #define SEE_MASK_DOENVSUBST 0x00000200 |
#define SEE_MASK_FLAG_NO_UI 0x00000400 | | #define SEE_MASK_FLAG_NO_UI 0x00000400 |
#define SEE_MASK_UNICODE 0x00004000 | | #define SEE_MASK_UNICODE 0x00004000 |
#define SEE_MASK_NO_CONSOLE 0x00008000 | | #define SEE_MASK_NO_CONSOLE 0x00008000 |
#define SEE_MASK_ASYNCOK 0x00100000 | | #define SEE_MASK_ASYNCOK 0x00100000 |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
#define SEE_MASK_HMONITOR 0x00200000 | | #define SEE_MASK_HMONITOR 0x00200000 |
|
#if (_WIN32_IE >= 0x0560) | | #endif // (NTDDI_VERSION >= NTDDI_WIN2K) |
| | #if (NTDDI_VERSION >= NTDDI_WINXPSP1) |
#define SEE_MASK_NOZONECHECKS 0x00800000 | | #define SEE_MASK_NOZONECHECKS 0x00800000 |
|
#endif // (_WIN32_IE >= 0x560) | | #endif // (NTDDI_VERSION >= NTDDI_WINXPSP1) |
#if (_WIN32_IE >= 0x0500) | | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
#define SEE_MASK_NOQUERYCLASSSTORE 0x01000000 | | #define SEE_MASK_NOQUERYCLASSSTORE 0x01000000 |
#define SEE_MASK_WAITFORINPUTIDLE 0x02000000 | | #define SEE_MASK_WAITFORINPUTIDLE 0x02000000 |
|
#endif // (_WIN32_IE >= 0x500) | | #endif // (NTDDI_VERSION >= NTDDI_WIN2K) |
#if (_WIN32_IE >= 0x0560) | | #if (NTDDI_VERSION >= NTDDI_WINXP) |
#define SEE_MASK_FLAG_LOG_USAGE 0x04000000 | | #define SEE_MASK_FLAG_LOG_USAGE 0x04000000 |
|
#endif // (_WIN32_IE >= 0x560) | | #endif // (NTDDI_VERSION >= NTDDI_WINXP) |
| | |
// | | // |
// For compilers that don't support nameless unions | | // For compilers that don't support nameless unions |
// | | // |
#ifndef DUMMYUNIONNAME | | #ifndef DUMMYUNIONNAME |
#ifdef NONAMELESSUNION | | #ifdef NONAMELESSUNION |
#define DUMMYUNIONNAME u | | #define DUMMYUNIONNAME u |
#define DUMMYUNIONNAME2 u2 | | #define DUMMYUNIONNAME2 u2 |
#define DUMMYUNIONNAME3 u3 | | #define DUMMYUNIONNAME3 u3 |
#define DUMMYUNIONNAME4 u4 | | #define DUMMYUNIONNAME4 u4 |
#define DUMMYUNIONNAME5 u5 | | #define DUMMYUNIONNAME5 u5 |
#else | | #else |
#define DUMMYUNIONNAME | | #define DUMMYUNIONNAME |
#define DUMMYUNIONNAME2 | | #define DUMMYUNIONNAME2 |
#define DUMMYUNIONNAME3 | | #define DUMMYUNIONNAME3 |
#define DUMMYUNIONNAME4 | | #define DUMMYUNIONNAME4 |
#define DUMMYUNIONNAME5 | | #define DUMMYUNIONNAME5 |
#endif | | #endif |
#endif // DUMMYUNIONNAME | | #endif // DUMMYUNIONNAME |
| | |
|
| | #if defined(_MSC_VER) && (_MSC_VER >= 1200) |
| | #pragma warning(push) |
| | #pragma warning(disable:4201) /* nonstandard extension used : nameless struct/un |
| | ion */ |
| | #pragma once |
| | #endif |
| | |
typedef struct _SHELLEXECUTEINFOA | | typedef struct _SHELLEXECUTEINFOA |
{ | | { |
DWORD cbSize; | | DWORD cbSize; |
ULONG fMask; | | ULONG fMask; |
HWND hwnd; | | HWND hwnd; |
LPCSTR lpVerb; | | LPCSTR lpVerb; |
LPCSTR lpFile; | | LPCSTR lpFile; |
LPCSTR lpParameters; | | LPCSTR lpParameters; |
LPCSTR lpDirectory; | | LPCSTR lpDirectory; |
int nShow; | | int nShow; |
HINSTANCE hInstApp; | | HINSTANCE hInstApp; |
// Optional fields | | // Optional fields |
LPVOID lpIDList; | | LPVOID lpIDList; |
LPCSTR lpClass; | | LPCSTR lpClass; |
HKEY hkeyClass; | | HKEY hkeyClass; |
DWORD dwHotKey; | | DWORD dwHotKey; |
union { | | union { |
HANDLE hIcon; | | HANDLE hIcon; |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
HANDLE hMonitor; | | HANDLE hMonitor; |
|
| | #endif // (NTDDI_VERSION >= NTDDI_WIN2K) |
} DUMMYUNIONNAME; | | } DUMMYUNIONNAME; |
HANDLE hProcess; | | HANDLE hProcess; |
} SHELLEXECUTEINFOA, *LPSHELLEXECUTEINFOA; | | } SHELLEXECUTEINFOA, *LPSHELLEXECUTEINFOA; |
typedef struct _SHELLEXECUTEINFOW | | typedef struct _SHELLEXECUTEINFOW |
{ | | { |
DWORD cbSize; | | DWORD cbSize; |
ULONG fMask; | | ULONG fMask; |
HWND hwnd; | | HWND hwnd; |
LPCWSTR lpVerb; | | LPCWSTR lpVerb; |
LPCWSTR lpFile; | | LPCWSTR lpFile; |
| | |
skipping to change at line 433 | | skipping to change at line 448 |
LPCWSTR lpDirectory; | | LPCWSTR lpDirectory; |
int nShow; | | int nShow; |
HINSTANCE hInstApp; | | HINSTANCE hInstApp; |
// Optional fields | | // Optional fields |
LPVOID lpIDList; | | LPVOID lpIDList; |
LPCWSTR lpClass; | | LPCWSTR lpClass; |
HKEY hkeyClass; | | HKEY hkeyClass; |
DWORD dwHotKey; | | DWORD dwHotKey; |
union { | | union { |
HANDLE hIcon; | | HANDLE hIcon; |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
HANDLE hMonitor; | | HANDLE hMonitor; |
|
| | #endif // (NTDDI_VERSION >= NTDDI_WIN2K) |
} DUMMYUNIONNAME; | | } DUMMYUNIONNAME; |
HANDLE hProcess; | | HANDLE hProcess; |
} SHELLEXECUTEINFOW, *LPSHELLEXECUTEINFOW; | | } SHELLEXECUTEINFOW, *LPSHELLEXECUTEINFOW; |
#ifdef UNICODE | | #ifdef UNICODE |
typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO; | | typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO; |
typedef LPSHELLEXECUTEINFOW LPSHELLEXECUTEINFO; | | typedef LPSHELLEXECUTEINFOW LPSHELLEXECUTEINFO; |
#else | | #else |
typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO; | | typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO; |
typedef LPSHELLEXECUTEINFOA LPSHELLEXECUTEINFO; | | typedef LPSHELLEXECUTEINFOA LPSHELLEXECUTEINFO; |
#endif // UNICODE | | #endif // UNICODE |
| | |
|
SHSTDAPI_(BOOL) ShellExecuteExA(LPSHELLEXECUTEINFOA lpExecInfo); | | SHSTDAPI_(BOOL) ShellExecuteExA(__inout LPSHELLEXECUTEINFOA lpExecInfo); |
SHSTDAPI_(BOOL) ShellExecuteExW(LPSHELLEXECUTEINFOW lpExecInfo); | | SHSTDAPI_(BOOL) ShellExecuteExW(__inout LPSHELLEXECUTEINFOW lpExecInfo); |
#ifdef UNICODE | | #ifdef UNICODE |
#define ShellExecuteEx ShellExecuteExW | | #define ShellExecuteEx ShellExecuteExW |
#else | | #else |
#define ShellExecuteEx ShellExecuteExA | | #define ShellExecuteEx ShellExecuteExA |
#endif // !UNICODE | | #endif // !UNICODE |
|
SHSTDAPI_(void) WinExecErrorA(HWND hwnd, int error, LPCSTR lpstrFileName, LPCSTR | | |
lpstrTitle); | | |
SHSTDAPI_(void) WinExecErrorW(HWND hwnd, int error, LPCWSTR lpstrFileName, LPCWS | | |
TR lpstrTitle); | | |
#ifdef UNICODE | | |
#define WinExecError WinExecErrorW | | |
#else | | |
#define WinExecError WinExecErrorA | | |
#endif // !UNICODE | | |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
// | | // |
// SHCreateProcessAsUser() | | // SHCreateProcessAsUser() |
typedef struct _SHCREATEPROCESSINFOW | | typedef struct _SHCREATEPROCESSINFOW |
{ | | { |
DWORD cbSize; | | DWORD cbSize; |
ULONG fMask; | | ULONG fMask; |
HWND hwnd; | | HWND hwnd; |
LPCWSTR pszFile; | | LPCWSTR pszFile; |
LPCWSTR pszParameters; | | LPCWSTR pszParameters; |
LPCWSTR pszCurrentDirectory; | | LPCWSTR pszCurrentDirectory; |
|
IN HANDLE hUserToken; | | HANDLE hUserToken; |
IN LPSECURITY_ATTRIBUTES lpProcessAttributes; | | LPSECURITY_ATTRIBUTES lpProcessAttributes; |
IN LPSECURITY_ATTRIBUTES lpThreadAttributes; | | LPSECURITY_ATTRIBUTES lpThreadAttributes; |
IN BOOL bInheritHandles; | | BOOL bInheritHandles; |
IN DWORD dwCreationFlags; | | DWORD dwCreationFlags; |
IN LPSTARTUPINFOW lpStartupInfo; | | LPSTARTUPINFOW lpStartupInfo; |
OUT LPPROCESS_INFORMATION lpProcessInformation; | | LPPROCESS_INFORMATION lpProcessInformation; |
} SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW; | | } SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW; |
| | |
|
SHSTDAPI_(BOOL) SHCreateProcessAsUserW(PSHCREATEPROCESSINFOW pscpi); | | SHSTDAPI_(BOOL) SHCreateProcessAsUserW(__inout PSHCREATEPROCESSINFOW pscpi); |
| | #endif // (NTDDI_VERSION >= NTDDI_WIN2K) |
| | |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
| | SHSTDAPI SHEvaluateSystemCommandTemplate(PCWSTR pszCmdTemplate, __out PWSTR *pps |
| | zApplication, __out_opt PWSTR *ppszCommandLine, __out_opt PWSTR *ppszParameters) |
| | ; |
| | // |
| | // SHEvaluateSystemCommandTemplate() |
| | // * enforces stricter validation before calling CreateProcess(). may al |
| | so be |
| | // used before calling ShellExecute(). |
| | // * should be used when caller wants the deterministic behavior from a c |
| | ommand template |
| | // regardless of execution context. it ignores the current process |
| | state, |
| | // such as the %PATH%, GetCurrentDirectory(), and parent process di |
| | rectory. |
| | // * should be used when the command is hardcoded. |
| | // * is used by ShellExecute() when handling file associations from HKCR. |
| | // * reduces CreateProcess() commandline exploits |
| | // * is not designed for processing user input, and may generate unexpect |
| | ed failures. |
| | // |
| | // INPUT: |
| | // pszCmdTemplate = command line, this may or may not include parameters |
| | . |
| | // if the parameters are substitution parameters then t |
| | his API |
| | // should be called before parameters have been replace |
| | d. |
| | // (check the examples below to see sample supported in |
| | puts.) |
| | // |
| | // OUTPUT on return: S_OK |
| | // ppszApplication = verified path to the Application. this should be pa |
| | ssed as the lpApplication |
| | // parameter to CreateProcess() or the lpFile parameter |
| | to ShellExecute(). |
| | // (allocated using CoTaskMemAlloc(), free with CoTaskM |
| | emFree()) |
| | // |
| | // ppszCommandLine = OPTIONAL - use if planning to call CreateProcess(). |
| | // resulting command line template. parameters should |
| | be replaced based on this template, |
| | // and then passed as the lpCommandLine parameter to Cr |
| | eateProcess(). |
| | // it is guaranteed to be of a form that PathGetArgs() |
| | will always succeed correctly. |
| | // (allocated using CoTaskMemAlloc(), free with CoTaskM |
| | emFree()) |
| | // |
| | // ppszParameters = OPTIONAL - use if planning to call ShellExecute(). |
| | // resulting parameter list template. parameters shoul |
| | d be replaced based on this template, |
| | // and then passed as the lpParameters parameter to She |
| | llExecute(). |
| | // NOTE: identical to PathGetArgs(*ppszCommandLine). |
| | // (allocated using CoTaskMemAlloc(), free with CoTaskM |
| | emFree()) |
| | // |
| | // OUTPUT on return: FAILED() |
| | // all outputs will be NULL'ed on failure |
| | // |
| | // NOTES: the parsing logic to determine a valid Application path is non-trivi |
| | al, although |
| | // the extension is not required and if missing will be completed |
| | // in the following standard order: { .PIF, .COM, .EXE, .BAT, .CMD |
| | } |
| | // |
| | // Relative Paths are System Paths - if the first token has no path qualifi |
| | ers |
| | // then the token is first checked to see if a key of the same name |
| | has |
| | // been installed under HKLM\Software\Microsoft\Windows\CurrentVers |
| | ion\App Paths. |
| | // if the key or default value does not exist, it is assumed to be |
| | a child |
| | // of the system directories. the following directories will be se |
| | arched |
| | // in order for the relative token: { CSIDL_SYSTEM, CSIDL_WINDOWS } |
| | // |
| | // Prefer Quoted Paths - if the first token in pszCmdTemplate is quoted and |
| | appears |
| | // to be an absolute path then the token is the only possible resul |
| | t. |
| | // |
| | // Limit Forms of Unquoted Paths - if the first token is unquoted and appea |
| | rs |
| | // to be an absolute path, then it is subject to more stringent lim |
| | itations. |
| | // if the token is a substring of CSIDL_PROGRAM_FILES or does not |
| | // exist on the file system, then SHEvaluateSystemCommandTemplate() |
| | will |
| | // attempt to complete using a token delimited by the first space o |
| | f the |
| | // last valid path segment (usually the file name). if this token |
| | also doesnt exist, |
| | // then the next space will be used, etc. |
| | // |
| | // USAGE: used before calling into CreateProcess() or ShellExecute(), call |
| | ers |
| | // would typically look like the following: |
| | /* #if 0 // SAMPLE CODE |
| | HRESULT MyCreateProcessPriv(PCWSTR pszCmd) |
| | { |
| | PWSTR pszApp; |
| | PWSTR pszCmdLine; |
| | HRESULT hr = SHEvaluateSystemCommandTemplate(pszCmd, &pszApp, &pszCmdLine); |
| | if (SUCCEEDED(hr)) |
| | { |
| | // if this was a real template, maybe some kind of wnsprintf() first? |
| | PROCESS_INFORMATION pi; |
| | STARTUPINFO si = {0}; |
| | si.cb = sizeof(startup); |
| | si.wShowWindow = SW_SHOWNORMAL; |
| | |
| | if (CreateProcess(pszApp, pszCmdLine, NULL, NULL, FALSE, |
| | CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &si, &pi)) |
| | { |
| | // we are good |
| | ASSERT(hr == S_OK); |
| | CloseHandle(pi.hProcess); |
| | CloseHandle(pi.hThread); |
| | } |
| | else |
| | { |
| | hr = HRESULT_FROM_WIN32(GetLastError()); |
| | } |
| | |
| | CoTaskMemFree(pszApp); |
| | CoTaskMemFree(pszCmdLine); |
| | } |
| | return hr; |
| | } |
| | |
| | HRESULT MyShellExec(PCWSTR pszCmd) |
| | { |
| | PWSTR pszApp; |
| | PWSTR pszCmdLine; |
| | HRESULT hr = SHEvaluateSystemCommandTemplate(pszCmd, &pszApp, &pszCmdLine); |
| | if (SUCCEEDED(hr)) |
| | { |
| | // if this was a real template, maybe some kind of wnsprintf() first? |
| | SHELLEXECUTEINFOW sei = { |
| | sizeof(sei), // cbSize; |
| | 0, // fMask |
| | NULL, // hwnd |
| | NULL, // lpVerb |
| | pszApp, // lpFile |
| | PathGetArgs(pszCmdLine), // lpParameters |
| | NULL, // lpDirectory |
| | SW_SHOWNORMAL, // nShow |
| | 0, // hInstApp |
| | NULL, // lpIDList |
| | NULL, // lpClass |
| | NULL, // hkeyClass |
| | 0, // dwHotKey |
| | NULL, // hIcon |
| | NULL // hProcess |
| | }; |
| | |
| | if (ShellExecuteEx(&sei)) |
| | { |
| | // we are good |
| | ASSERT(hr == S_OK); |
| | } |
| | else |
| | { |
| | hr = HRESULT_FROM_WIN32(GetLastError()); |
| | } |
| | |
| | CoTaskMemFree(pszApp); |
| | CoTaskMemFree(pszCmdLine); |
| | } |
| | return hr; |
| | } |
| | #endif // 0 // SAMPLE CODE |
| | */ |
| | |
| | // EXAMPLE: Each example will show an input parameter and the results returne |
| | d by |
| | // SHEvaluateSystemCommandTemplate(). Also included is the alterna |
| | te result |
| | // of what CreateProcess() would have created if pszCmdTemplate wer |
| | e |
| | // passed directly as lpCommandLine and lpApplication were NULL. |
| | // (results marked with an asterisk (*) indicate differences.) |
| | // |
| | // Assume for the examples that the following paths and values exist: |
| | // |
| | // SHGetFolderPath() values: |
| | // CSIDL_SYSTEM = C:\windows\system32 |
| | // CSIDL_WINDOWS = C:\windows |
| | // CSIDL_PROGRAM_FILES = C:\Program Files |
| | // |
| | // Environment settings |
| | // GetModuleFileName(NULL) = C:\Program Files\Example\sample.exe |
| | // GetCurrentDirectory() = \\server\share\foo |
| | // HKLM\...\App Paths\pbrush.exe = C:\windows\system32\mspaint.exe |
| | // HKLM\...\App Paths\mycl.exe = C:\Program Files\Compilers\mycl.exe |
| | // PATH = c:\windows\system32;C:\windows;c:\;C:\Pr |
| | ogram Files\Compilers\ |
| | // |
| | // Valid Application paths: |
| | // C:\Program Files\Internet Explorer\iexplore.exe |
| | // C:\windows\system32\rundll32.exe |
| | // C:\windows\system32\notepad.exe |
| | // C:\windows\notepad.exe |
| | // C:\Program Files\Example\sample.exe |
| | // C:\Program Files\Compilers\cl.exe |
| | // C:\Other Programs\prog.exe |
| | // |
| | // Suspicious (possibly hostile) Application paths: |
| | // C:\Program.exe |
| | // C:\Program Files\Internet.exe |
| | // C:\Program Files\Example\regedit.bat |
| | // C:\mycl.exe |
| | // \\server\share\foo\rundll32.exe |
| | // \\server\share\foo\myapp.exe |
| | // |
| | // |
| | // Relative Path Example #1 |
| | // pszCmdTemplate = notepad.exe %1 |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\windows\system32\notepad.exe |
| | // pszCommandLine = "notepad.exe" %1 |
| | // CreateProcess() would return TRUE |
| | // new process = C:\windows\system32\notepad.exe |
| | // |
| | // Relative Path Example #2 |
| | // pszCmdTemplate = rundll32.exe shell32.dll,RunDll |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\windows\system32\rundll32.exe |
| | // pszCommandLine = "rundll32.exe" shell32.dll,RunDll |
| | // * CreateProcess() would return TRUE |
| | // new process = \\server\share\foo\rundll32.exe |
| | // |
| | // Relative Path Example #3 |
| | // pszCmdTemplate = regedit %1 |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\windows\system32\regedit.exe |
| | // pszCommandLine = "regedit.exe" %1 |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Program Files\Example\regedit.bat |
| | // |
| | // Relative Path Example #4 |
| | // pszCmdTemplate = pbrush "%1" |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\windows\system32\mspaint.exe |
| | // pszCommandLine = "mspaint.exe" "%1" |
| | // * CreateProcess() would return FALSE |
| | // |
| | // Relative Path Example #5 |
| | // pszCmdTemplate = mycl "%1" "%2" |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\Program Files\Compilers\mycl.exe |
| | // pszCommandLine = "mycl.exe" "%1" "%2" |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\mycl.exe |
| | // |
| | // Relative Path Example #6 |
| | // pszCmdTemplate = myapp.exe |
| | // SHEvaluateSystemCommandTemplate() returns: CO_E_APPNOTFOUND |
| | // * CreateProcess() would return TRUE |
| | // new process = \\server\share\foo\myapp.exe |
| | // |
| | // Quoted Path Example #1 |
| | // pszCmdTemplate = "C:\Program Files\Internet Explorer\iexplore.exe |
| | " -nohome |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\Program Files\Internet Explorer\iexplore. |
| | exe |
| | // pszCommandLine = "C:\Program Files\Internet Explorer\iexplore |
| | .exe" -nohome |
| | // CreateProcess() would return TRUE |
| | // new process = C:\Program Files\Internet Explorer\iexplore.exe |
| | // |
| | // Quoted Path Example #2 |
| | // pszCmdTemplate = "C:\Program Files\Internet" -url |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\Program Files\Internet.exe |
| | // pszCommandLine = "C:\Program Files\Internet.exe" -url |
| | // CreateProcess() would return TRUE |
| | // new process = C:\Program Files\internet.exe |
| | // |
| | // Quoted Path Example #3 |
| | // pszCmdTemplate = "C:\Program" -url |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\Program.exe |
| | // pszCommandLine = "C:\Program.exe" -url |
| | // CreateProcess() would return TRUE |
| | // new process = C:\Program.exe |
| | // |
| | // Unquoted Example #1 |
| | // pszCmdTemplate = C:\Program Files\Internet Explorer\iexplore.exe |
| | -nohome |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\Program Files\Internet Explorer\iexplore. |
| | exe |
| | // pszCommandLine = "C:\Program Files\Internet Explorer\iexplore |
| | .exe" -nohome |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Program.exe |
| | // |
| | // Unquoted Example #2 |
| | // pszCmdTemplate = C:\Program Files\Internet Explorer\iexplore.exe |
| | -url fool.htm |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\Program Files\Internet Explorer\iexplore. |
| | exe |
| | // pszCommandLine = "C:\Program Files\Internet Explorer\iexplore |
| | .exe" -url fool.htm |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Program.exe |
| | // |
| | // Unquoted Example #3 |
| | // pszCmdTemplate = C:\Program Files\Internet Explorer\iexplore.exe |
| | -url C:\fool.htm |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\Program Files\Internet Explorer\iexplore. |
| | exe |
| | // pszCommandLine = "C:\Program Files\Internet Explorer\iexplore |
| | .exe" -url C:\fool.htm |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Program.exe |
| | // |
| | // Unquoted Example #4 |
| | // pszCmdTemplate = C:\Program Files\Internet -url |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\Program Files\Internet.exe |
| | // pszCommandLine = "C:\Program Files\Internet.exe" -url |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Program.exe |
| | // |
| | // Unquoted Example #5 |
| | // pszCmdTemplate = C:\Other Programs\prog.exe -go %1 \fool %2 |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\Other Programs\prog.exe |
| | // pszCommandLine = "C:\Other Programs\prog.exe" %1 \fool %2 |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Other Programs\prog.exe |
| | // |
| | // Unquoted Example #6 |
| | // pszCmdTemplate = C:\Other Programs\prog.exe -go "\fool" "%1" |
| | // SHEvaluateSystemCommandTemplate() returns: S_OK |
| | // pszApplication = C:\Other Programs\prog.exe |
| | // pszCommandLine = "C:\Other Programs\prog.exe" -go "\fool" "%1 |
| | " |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Other Programs\prog.exe |
| | // |
| | // Unquoted Example #7 |
| | // pszCmdTemplate = C:\Program Files\Internet Explorer\iexplore.exe |
| | -url \fool.htm |
| | // SHEvaluateSystemCommandTemplate() returns: CO_E_APPNOTFOUND |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Program.exe |
| | // |
| | // Unquoted Example #8 |
| | // pszCmdTemplate = C:\Program -url |
| | // SHEvaluateSystemCommandTemplate() returns: CO_E_APPNOTFOUND |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Program.exe |
| | // |
| | // Unquoted Example #9 |
| | // pszCmdTemplate = C:\Other Programs\prog.exe -go \fool us |
| | // SHEvaluateSystemCommandTemplate() returns: CO_E_APPNOTFOUND |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Other Programs\prog.exe |
| | // |
| | // Unquoted Example #10 |
| | // pszCmdTemplate = C:\Other Programs\prog.exe -go \fool %1 |
| | // SHEvaluateSystemCommandTemplate() returns: CO_E_APPNOTFOUND |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Other Programs\prog.exe |
| | // |
| | // Unquoted Example #11 |
| | // pszCmdTemplate = C:\Program "%1" |
| | // SHEvaluateSystemCommandTemplate() returns: E_ACCESSDENIED |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Program.exe |
| | // |
| | // Unquoted Example #12 |
| | // pszCmdTemplate = C:\Program |
| | // SHEvaluateSystemCommandTemplate() returns: E_ACCESSDENIED |
| | // * CreateProcess() would return TRUE |
| | // new process = C:\Program.exe |
| | // |
| | |
| | // used for implementing IShellFolder::GetUIObject(IID_IQueryAssociations) |
| | // designed for namespace extensions with registered extensible types |
| | // SHCreateDefaultContextMenu() and others use IQueryAssociations to build up d |
| | ata sets |
| | |
| | typedef enum ASSOCCLASS |
| | { // which other members are used |
| | ASSOCCLASS_SHELL_KEY = 0, // hkeyClass |
| | ASSOCCLASS_PROGID_KEY, // hkeyClass |
| | ASSOCCLASS_PROGID_STR, // pszClass (HKCR\pszClass) |
| | ASSOCCLASS_CLSID_KEY, // hkeyClass |
| | ASSOCCLASS_CLSID_STR, // pszClass (HKCR\CLSID\pszClass) |
| | ASSOCCLASS_APP_KEY, // hkeyClass |
| | ASSOCCLASS_APP_STR, // pszClass (HKCR\Applications\PathFindFileName |
| | (pszClass)) |
| | ASSOCCLASS_SYSTEM_STR, // pszClass |
| | ASSOCCLASS_FOLDER, // none |
| | ASSOCCLASS_STAR, // none |
| | } ASSOCCLASS; |
| | typedef struct ASSOCIATIONELEMENT_ |
| | { |
| | ASSOCCLASS ac; // required |
| | HKEY hkClass; // may be NULL |
| | PCWSTR pszClass; // may be NULL |
| | } ASSOCIATIONELEMENT; |
| | |
| | // the object returned from this API implements IQueryAssociations |
| | |
| | SHSTDAPI AssocCreateForClasses(__in const ASSOCIATIONELEMENT *rgClasses, ULONG c |
| | Classes, REFIID riid, __out void **ppv); |
| | |
| | /* #if 0 // SAMPLE CODE |
| | HRESULT CCustomFolder::_AssocCreate(PCUITEMID_CHILD pidl, REFIID riid, __out voi |
| | d **ppv) |
| | { |
| | *ppv = NULL; |
| | ASSOCIATIONELEMENT rgAssoc[] = |
| | { |
| | { ASSOCCLASS_PROGID_STR, NULL, CCustomFolder::_MapChildToType(pidl)}, |
| | { ASSOCCLASS_FOLDER, NULL, NULL}, |
| | }; |
| | if (CCustomFolder::_IsFolder(pidl)) |
| | { |
| | return AssocCreateForClasses(rgAssoc, ARRAYSIZE(rgAssoc), riid, ppv); |
| | } |
| | else |
| | { |
| | // skip FOLDER at the end |
| | return AssocCreateForClasses(rgAssoc, ARRAYSIZE(rgAssoc)-1, riid, ppv); |
| | } |
| | } |
| | |
| | HRESULT CCustomFolder::GetUIObjectOf(...) |
| | { |
| | // validate parameters |
| | if (riid == IID_IQueryAssociations) |
| | { |
| | hr = _AssocCreate(apidl[0], riid, ppv); |
| | } |
| | // else if ... |
| | } |
| | #endif // SAMPLE CODE |
| | */ |
| | |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
//// | | //// |
//// End ShellExecuteEx and family | | //// End ShellExecuteEx and family |
//// | | //// |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
// | | // |
// RecycleBin | | // RecycleBin |
// | | // |
| | |
// struct for query recycle bin info | | // struct for query recycle bin info |
typedef struct _SHQUERYRBINFO { | | typedef struct _SHQUERYRBINFO { |
DWORD cbSize; | | DWORD cbSize; |
#if !defined(_MAC) || defined(_MAC_INT_64) | | #if !defined(_MAC) || defined(_MAC_INT_64) |
__int64 i64Size; | | __int64 i64Size; |
__int64 i64NumItems; | | __int64 i64NumItems; |
| | |
skipping to change at line 507 | | skipping to change at line 916 |
DWORDLONG i64NumItems; | | DWORDLONG i64NumItems; |
#endif | | #endif |
} SHQUERYRBINFO, *LPSHQUERYRBINFO; | | } SHQUERYRBINFO, *LPSHQUERYRBINFO; |
| | |
// flags for SHEmptyRecycleBin | | // flags for SHEmptyRecycleBin |
// | | // |
#define SHERB_NOCONFIRMATION 0x00000001 | | #define SHERB_NOCONFIRMATION 0x00000001 |
#define SHERB_NOPROGRESSUI 0x00000002 | | #define SHERB_NOPROGRESSUI 0x00000002 |
#define SHERB_NOSOUND 0x00000004 | | #define SHERB_NOSOUND 0x00000004 |
| | |
|
SHSTDAPI SHQueryRecycleBinA(LPCSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo); | | SHSTDAPI SHQueryRecycleBinA(LPCSTR pszRootPath, __inout LPSHQUERYRBINFO pSHQuery |
SHSTDAPI SHQueryRecycleBinW(LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo) | | RBInfo); |
; | | SHSTDAPI SHQueryRecycleBinW(LPCWSTR pszRootPath, __inout LPSHQUERYRBINFO pSHQuer |
| | yRBInfo); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHQueryRecycleBin SHQueryRecycleBinW | | #define SHQueryRecycleBin SHQueryRecycleBinW |
#else | | #else |
#define SHQueryRecycleBin SHQueryRecycleBinA | | #define SHQueryRecycleBin SHQueryRecycleBinA |
#endif // !UNICODE | | #endif // !UNICODE |
SHSTDAPI SHEmptyRecycleBinA(HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags); | | SHSTDAPI SHEmptyRecycleBinA(HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags); |
SHSTDAPI SHEmptyRecycleBinW(HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags); | | SHSTDAPI SHEmptyRecycleBinW(HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHEmptyRecycleBin SHEmptyRecycleBinW | | #define SHEmptyRecycleBin SHEmptyRecycleBinW |
#else | | #else |
#define SHEmptyRecycleBin SHEmptyRecycleBinA | | #define SHEmptyRecycleBin SHEmptyRecycleBinA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
//// | | //// |
//// end of RecycleBin | | //// end of RecycleBin |
|
| | #endif // (NTDDI_VERSION >= NTDDI_WIN2K) |
| | |
//// | | //// |
|
//// Tray notification definitions | | //// Taskbar notification definitions |
//// | | //// |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | typedef enum |
| | { |
| | QUNS_NOT_PRESENT = 1, // The user is not present. Heuristi |
| | c check for modes like: screen saver, locked machine, non-active FUS session |
| | QUNS_BUSY = 2, // The user is busy. Heuristic check |
| | for modes like: full-screen app |
| | QUNS_RUNNING_D3D_FULL_SCREEN = 3, // full-screen (exlusive-mode) D3D ap |
| | p |
| | QUNS_PRESENTATION_MODE = 4, // Windows presentation mode (laptop |
| | feature) is turned on |
| | QUNS_ACCEPTS_NOTIFICATIONS = 5, // none of the above |
| | } QUERY_USER_NOTIFICATION_STATE; |
| | |
| | SHSTDAPI SHQueryUserNotificationState(__out QUERY_USER_NOTIFICATION_STATE *pquns |
| | ); |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
typedef struct _NOTIFYICONDATAA { | | typedef struct _NOTIFYICONDATAA { |
|
DWORD cbSize; | | DWORD cbSize; |
HWND hWnd; | | HWND hWnd; |
UINT uID; | | UINT uID; |
UINT uFlags; | | UINT uFlags; |
UINT uCallbackMessage; | | UINT uCallbackMessage; |
HICON hIcon; | | HICON hIcon; |
#if (_WIN32_IE < 0x0500) | | #if (NTDDI_VERSION < NTDDI_WIN2K) |
CHAR szTip[64]; | | CHAR szTip[64]; |
#else | | |
CHAR szTip[128]; | | |
#endif | | #endif |
|
#if (_WIN32_IE >= 0x0500) | | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
DWORD dwState; | | CHAR szTip[128]; |
DWORD dwStateMask; | | DWORD dwState; |
CHAR szInfo[256]; | | DWORD dwStateMask; |
union { | | CHAR szInfo[256]; |
UINT uTimeout; | | union { |
UINT uVersion; | | UINT uTimeout; |
} DUMMYUNIONNAME; | | UINT uVersion; // used with NIM_SETVERSION, values 0, 3 and 4 |
CHAR szInfoTitle[64]; | | } DUMMYUNIONNAME; |
DWORD dwInfoFlags; | | CHAR szInfoTitle[64]; |
| | DWORD dwInfoFlags; |
#endif | | #endif |
|
#if (_WIN32_IE >= 0x600) | | #if (NTDDI_VERSION >= NTDDI_WINXP) |
GUID guidItem; | | GUID guidItem; |
| | #endif |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | HICON hBalloonIcon; |
#endif | | #endif |
} NOTIFYICONDATAA, *PNOTIFYICONDATAA; | | } NOTIFYICONDATAA, *PNOTIFYICONDATAA; |
typedef struct _NOTIFYICONDATAW { | | typedef struct _NOTIFYICONDATAW { |
|
DWORD cbSize; | | DWORD cbSize; |
HWND hWnd; | | HWND hWnd; |
UINT uID; | | UINT uID; |
UINT uFlags; | | UINT uFlags; |
UINT uCallbackMessage; | | UINT uCallbackMessage; |
HICON hIcon; | | HICON hIcon; |
#if (_WIN32_IE < 0x0500) | | #if (NTDDI_VERSION < NTDDI_WIN2K) |
WCHAR szTip[64]; | | WCHAR szTip[64]; |
#else | | |
WCHAR szTip[128]; | | |
#endif | | #endif |
|
#if (_WIN32_IE >= 0x0500) | | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
DWORD dwState; | | WCHAR szTip[128]; |
DWORD dwStateMask; | | DWORD dwState; |
WCHAR szInfo[256]; | | DWORD dwStateMask; |
union { | | WCHAR szInfo[256]; |
UINT uTimeout; | | union { |
UINT uVersion; | | UINT uTimeout; |
} DUMMYUNIONNAME; | | UINT uVersion; // used with NIM_SETVERSION, values 0, 3 and 4 |
WCHAR szInfoTitle[64]; | | } DUMMYUNIONNAME; |
DWORD dwInfoFlags; | | WCHAR szInfoTitle[64]; |
| | DWORD dwInfoFlags; |
#endif | | #endif |
|
#if (_WIN32_IE >= 0x600) | | #if (NTDDI_VERSION >= NTDDI_WINXP) |
GUID guidItem; | | GUID guidItem; |
| | #endif |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | HICON hBalloonIcon; |
#endif | | #endif |
} NOTIFYICONDATAW, *PNOTIFYICONDATAW; | | } NOTIFYICONDATAW, *PNOTIFYICONDATAW; |
#ifdef UNICODE | | #ifdef UNICODE |
typedef NOTIFYICONDATAW NOTIFYICONDATA; | | typedef NOTIFYICONDATAW NOTIFYICONDATA; |
typedef PNOTIFYICONDATAW PNOTIFYICONDATA; | | typedef PNOTIFYICONDATAW PNOTIFYICONDATA; |
#else | | #else |
typedef NOTIFYICONDATAA NOTIFYICONDATA; | | typedef NOTIFYICONDATAA NOTIFYICONDATA; |
typedef PNOTIFYICONDATAA PNOTIFYICONDATA; | | typedef PNOTIFYICONDATAA PNOTIFYICONDATA; |
#endif // UNICODE | | #endif // UNICODE |
| | |
| | |
skipping to change at line 607 | | skipping to change at line 1034 |
#endif | | #endif |
| | |
#define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem) | | #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem) |
#define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem) | | #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem) |
#ifdef UNICODE | | #ifdef UNICODE |
#define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE | | #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE |
#else | | #else |
#define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE | | #define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE |
#endif | | #endif |
| | |
|
| | #define NOTIFYICONDATAA_V3_SIZE FIELD_OFFSET(NOTIFYICONDATAA, hBalloonIcon) |
| | #define NOTIFYICONDATAW_V3_SIZE FIELD_OFFSET(NOTIFYICONDATAW, hBalloonIcon) |
| | #ifdef UNICODE |
| | #define NOTIFYICONDATA_V3_SIZE NOTIFYICONDATAW_V3_SIZE |
| | #else |
| | #define NOTIFYICONDATA_V3_SIZE NOTIFYICONDATAA_V3_SIZE |
| | #endif |
| | |
#if (_WIN32_IE >= 0x0500) | | #if (_WIN32_IE >= 0x0500) |
#define NIN_SELECT (WM_USER + 0) | | #define NIN_SELECT (WM_USER + 0) |
#define NINF_KEY 0x1 | | #define NINF_KEY 0x1 |
#define NIN_KEYSELECT (NIN_SELECT | NINF_KEY) | | #define NIN_KEYSELECT (NIN_SELECT | NINF_KEY) |
#endif | | #endif |
| | |
#if (_WIN32_IE >= 0x0501) | | #if (_WIN32_IE >= 0x0501) |
|
#define NIN_BALLOONSHOW (WM_USER + 2) | | #define NIN_BALLOONSHOW (WM_USER + 2) |
#define NIN_BALLOONHIDE (WM_USER + 3) | | #define NIN_BALLOONHIDE (WM_USER + 3) |
#define NIN_BALLOONTIMEOUT (WM_USER + 4) | | #define NIN_BALLOONTIMEOUT (WM_USER + 4) |
#define NIN_BALLOONUSERCLICK (WM_USER + 5) | | #define NIN_BALLOONUSERCLICK (WM_USER + 5) |
#endif | | #endif |
|
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #define NIN_POPUPOPEN (WM_USER + 6) |
| | #define NIN_POPUPCLOSE (WM_USER + 7) |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
#define NIM_ADD 0x00000000 | | #define NIM_ADD 0x00000000 |
#define NIM_MODIFY 0x00000001 | | #define NIM_MODIFY 0x00000001 |
#define NIM_DELETE 0x00000002 | | #define NIM_DELETE 0x00000002 |
#if (_WIN32_IE >= 0x0500) | | #if (_WIN32_IE >= 0x0500) |
#define NIM_SETFOCUS 0x00000003 | | #define NIM_SETFOCUS 0x00000003 |
#define NIM_SETVERSION 0x00000004 | | #define NIM_SETVERSION 0x00000004 |
|
#define NOTIFYICON_VERSION 3 | | // set NOTIFYICONDATA.uVersion with 0, 3 or 4 |
| | // please read the documentation on the behavior difference that the different v |
| | ersions imply |
| | #define NOTIFYICON_VERSION 3 |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #define NOTIFYICON_VERSION_4 4 |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
#endif | | #endif |
| | |
#define NIF_MESSAGE 0x00000001 | | #define NIF_MESSAGE 0x00000001 |
#define NIF_ICON 0x00000002 | | #define NIF_ICON 0x00000002 |
#define NIF_TIP 0x00000004 | | #define NIF_TIP 0x00000004 |
#if (_WIN32_IE >= 0x0500) | | #if (_WIN32_IE >= 0x0500) |
#define NIF_STATE 0x00000008 | | #define NIF_STATE 0x00000008 |
#define NIF_INFO 0x00000010 | | #define NIF_INFO 0x00000010 |
#endif | | #endif |
#if (_WIN32_IE >= 0x600) | | #if (_WIN32_IE >= 0x600) |
#define NIF_GUID 0x00000020 | | #define NIF_GUID 0x00000020 |
#endif | | #endif |
|
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #define NIF_REALTIME 0x00000040 |
| | #define NIF_SHOWTIP 0x00000080 |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
#if (_WIN32_IE >= 0x0500) | | #if (_WIN32_IE >= 0x0500) |
#define NIS_HIDDEN 0x00000001 | | #define NIS_HIDDEN 0x00000001 |
#define NIS_SHAREDICON 0x00000002 | | #define NIS_SHAREDICON 0x00000002 |
| | |
// says this is the source of a shared icon | | // says this is the source of a shared icon |
| | |
// Notify Icon Infotip flags | | // Notify Icon Infotip flags |
#define NIIF_NONE 0x00000000 | | #define NIIF_NONE 0x00000000 |
// icon flags are mutually exclusive | | // icon flags are mutually exclusive |
// and take only the lowest 2 bits | | // and take only the lowest 2 bits |
#define NIIF_INFO 0x00000001 | | #define NIIF_INFO 0x00000001 |
#define NIIF_WARNING 0x00000002 | | #define NIIF_WARNING 0x00000002 |
#define NIIF_ERROR 0x00000003 | | #define NIIF_ERROR 0x00000003 |
|
#if (_WIN32_IE >= 0x0600) | | #if (NTDDI_VERSION >= NTDDI_XPSP2) // also available in NTDDI_WS03SP1 |
#define NIIF_USER 0x00000004 | | #define NIIF_USER 0x00000004 |
|
#endif | | #endif // (NTDDI_VERSION >= NTDDI_XPSP2) |
#define NIIF_ICON_MASK 0x0000000F | | #define NIIF_ICON_MASK 0x0000000F |
#if (_WIN32_IE >= 0x0501) | | #if (_WIN32_IE >= 0x0501) |
#define NIIF_NOSOUND 0x00000010 | | #define NIIF_NOSOUND 0x00000010 |
#endif | | #endif |
#endif | | #endif |
|
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #define NIIF_LARGE_ICON 0x00000020 |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
|
SHSTDAPI_(BOOL) Shell_NotifyIconA(DWORD dwMessage, PNOTIFYICONDATAA lpData); | | SHSTDAPI_(BOOL) Shell_NotifyIconA(DWORD dwMessage, __in PNOTIFYICONDATAA lpData) |
SHSTDAPI_(BOOL) Shell_NotifyIconW(DWORD dwMessage, PNOTIFYICONDATAW lpData); | | ; |
| | SHSTDAPI_(BOOL) Shell_NotifyIconW(DWORD dwMessage, __in PNOTIFYICONDATAW lpData) |
| | ; |
#ifdef UNICODE | | #ifdef UNICODE |
#define Shell_NotifyIcon Shell_NotifyIconW | | #define Shell_NotifyIcon Shell_NotifyIconW |
#else | | #else |
#define Shell_NotifyIcon Shell_NotifyIconA | | #define Shell_NotifyIcon Shell_NotifyIconA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
//// | | //// |
|
//// End Tray Notification Icons | | //// End Taskbar Notification Icons |
//// | | //// |
| | |
#ifndef SHFILEINFO_DEFINED | | #ifndef SHFILEINFO_DEFINED |
#define SHFILEINFO_DEFINED | | #define SHFILEINFO_DEFINED |
//// | | //// |
//// Begin SHGetFileInfo | | //// Begin SHGetFileInfo |
//// | | //// |
| | |
/* | | /* |
* The SHGetFileInfo API provides an easy way to get attributes | | * The SHGetFileInfo API provides an easy way to get attributes |
| | |
skipping to change at line 730 | | skipping to change at line 1181 |
| | |
#define SHGFI_ICON 0x000000100 // get icon | | #define SHGFI_ICON 0x000000100 // get icon |
#define SHGFI_DISPLAYNAME 0x000000200 // get display name | | #define SHGFI_DISPLAYNAME 0x000000200 // get display name |
#define SHGFI_TYPENAME 0x000000400 // get type name | | #define SHGFI_TYPENAME 0x000000400 // get type name |
#define SHGFI_ATTRIBUTES 0x000000800 // get attributes | | #define SHGFI_ATTRIBUTES 0x000000800 // get attributes |
#define SHGFI_ICONLOCATION 0x000001000 // get icon location | | #define SHGFI_ICONLOCATION 0x000001000 // get icon location |
#define SHGFI_EXETYPE 0x000002000 // return exe type | | #define SHGFI_EXETYPE 0x000002000 // return exe type |
#define SHGFI_SYSICONINDEX 0x000004000 // get system icon index | | #define SHGFI_SYSICONINDEX 0x000004000 // get system icon index |
#define SHGFI_LINKOVERLAY 0x000008000 // put a link overlay on icon | | #define SHGFI_LINKOVERLAY 0x000008000 // put a link overlay on icon |
#define SHGFI_SELECTED 0x000010000 // show icon in selected state | | #define SHGFI_SELECTED 0x000010000 // show icon in selected state |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
#define SHGFI_ATTR_SPECIFIED 0x000020000 // get only specified attributes | | #define SHGFI_ATTR_SPECIFIED 0x000020000 // get only specified attributes |
|
| | #endif // (NTDDI_VERSION >= NTDDI_WIN2K) |
#define SHGFI_LARGEICON 0x000000000 // get large icon | | #define SHGFI_LARGEICON 0x000000000 // get large icon |
#define SHGFI_SMALLICON 0x000000001 // get small icon | | #define SHGFI_SMALLICON 0x000000001 // get small icon |
#define SHGFI_OPENICON 0x000000002 // get open icon | | #define SHGFI_OPENICON 0x000000002 // get open icon |
#define SHGFI_SHELLICONSIZE 0x000000004 // get shell size icon | | #define SHGFI_SHELLICONSIZE 0x000000004 // get shell size icon |
#define SHGFI_PIDL 0x000000008 // pszPath is a pidl | | #define SHGFI_PIDL 0x000000008 // pszPath is a pidl |
#define SHGFI_USEFILEATTRIBUTES 0x000000010 // use passed dwFileAttribute | | #define SHGFI_USEFILEATTRIBUTES 0x000000010 // use passed dwFileAttribute |
| | |
#if (_WIN32_IE >= 0x0500) | | #if (_WIN32_IE >= 0x0500) |
#define SHGFI_ADDOVERLAYS 0x000000020 // apply the appropriate overlay
s | | #define SHGFI_ADDOVERLAYS 0x000000020 // apply the appropriate overlay
s |
#define SHGFI_OVERLAYINDEX 0x000000040 // Get the index of the overlay | | #define SHGFI_OVERLAYINDEX 0x000000040 // Get the index of the overlay |
// in the upper 8 bits of the iI
con | | // in the upper 8 bits of the iI
con |
#endif | | #endif |
| | |
|
SHSTDAPI_(DWORD_PTR) SHGetFileInfoA(LPCSTR pszPath, DWORD dwFileAttributes, SHFI | | SHSTDAPI_(DWORD_PTR) SHGetFileInfoA(LPCSTR pszPath, DWORD dwFileAttributes, __in |
LEINFOA *psfi, UINT cbFileInfo, UINT uFlags); | | out_bcount_opt(cbFileInfo) SHFILEINFOA *psfi, |
SHSTDAPI_(DWORD_PTR) SHGetFileInfoW(LPCWSTR pszPath, DWORD dwFileAttributes, SHF | | UINT cbFileInfo, UINT uFlags); |
ILEINFOW *psfi, UINT cbFileInfo, UINT uFlags); | | SHSTDAPI_(DWORD_PTR) SHGetFileInfoW(LPCWSTR pszPath, DWORD dwFileAttributes, __i |
| | nout_bcount_opt(cbFileInfo) SHFILEINFOW *psfi, |
| | UINT cbFileInfo, UINT uFlags); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHGetFileInfo SHGetFileInfoW | | #define SHGetFileInfo SHGetFileInfoW |
#else | | #else |
#define SHGetFileInfo SHGetFileInfoA | | #define SHGetFileInfo SHGetFileInfoA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | typedef struct _SHSTOCKICONINFO |
| | { |
| | DWORD cbSize; |
| | HICON hIcon; |
| | int iSysImageIndex; |
| | int iIcon; |
| | WCHAR szPath[MAX_PATH]; |
| | } SHSTOCKICONINFO; |
| | |
| | #define SHGSI_ICONLOCATION 0 // you always get the icon location |
| | #define SHGSI_ICON SHGFI_ICON |
| | #define SHGSI_SYSICONINDEX SHGFI_SYSICONINDEX |
| | #define SHGSI_LINKOVERLAY SHGFI_LINKOVERLAY |
| | #define SHGSI_SELECTED SHGFI_SELECTED |
| | #define SHGSI_LARGEICON SHGFI_LARGEICON |
| | #define SHGSI_SMALLICON SHGFI_SMALLICON |
| | #define SHGSI_SHELLICONSIZE SHGFI_SHELLICONSIZE |
| | |
| | // Shell icons |
| | |
| | typedef enum SHSTOCKICONID |
| | { |
| | SIID_DOCNOASSOC = 0, // document (blank page), no associated progra |
| | m |
| | SIID_DOCASSOC = 1, // document with an associated program |
| | SIID_APPLICATION = 2, // generic application with no custom icon |
| | SIID_FOLDER = 3, // folder (closed) |
| | SIID_FOLDEROPEN = 4, // folder (open) |
| | SIID_DRIVE525 = 5, // 5.25" floppy disk drive |
| | SIID_DRIVE35 = 6, // 3.5" floppy disk drive |
| | SIID_DRIVEREMOVE = 7, // removable drive |
| | SIID_DRIVEFIXED = 8, // fixed (hard disk) drive |
| | SIID_DRIVENET = 9, // network drive |
| | SIID_DRIVENETDISABLED = 10, // disconnected network drive |
| | SIID_DRIVECD = 11, // CD drive |
| | SIID_DRIVERAM = 12, // RAM disk drive |
| | SIID_WORLD = 13, // entire network |
| | SIID_SERVER = 15, // a computer on the network |
| | SIID_PRINTER = 16, // printer |
| | SIID_MYNETWORK = 17, // My network places |
| | SIID_FIND = 22, // Find |
| | SIID_HELP = 23, // Help |
| | SIID_SHARE = 28, // overlay for shared items |
| | SIID_LINK = 29, // overlay for shortcuts to items |
| | SIID_SLOWFILE = 30, // overlay for slow items |
| | SIID_RECYCLER = 31, // empty recycle bin |
| | SIID_RECYCLERFULL = 32, // full recycle bin |
| | SIID_MEDIACDAUDIO = 40, // Audio CD Media |
| | SIID_LOCK = 47, // Security lock |
| | SIID_AUTOLIST = 49, // AutoList |
| | SIID_PRINTERNET = 50, // Network printer |
| | SIID_SERVERSHARE = 51, // Server share |
| | SIID_PRINTERFAX = 52, // Fax printer |
| | SIID_PRINTERFAXNET = 53, // Networked Fax Printer |
| | SIID_PRINTERFILE = 54, // Print to File |
| | SIID_STACK = 55, // Stack |
| | SIID_MEDIASVCD = 56, // SVCD Media |
| | SIID_STUFFEDFOLDER = 57, // Folder containing other items |
| | SIID_DRIVEUNKNOWN = 58, // Unknown drive |
| | SIID_DRIVEDVD = 59, // DVD Drive |
| | SIID_MEDIADVD = 60, // DVD Media |
| | SIID_MEDIADVDRAM = 61, // DVD-RAM Media |
| | SIID_MEDIADVDRW = 62, // DVD-RW Media |
| | SIID_MEDIADVDR = 63, // DVD-R Media |
| | SIID_MEDIADVDROM = 64, // DVD-ROM Media |
| | SIID_MEDIACDAUDIOPLUS = 65, // CD+ (Enhanced CD) Media |
| | SIID_MEDIACDRW = 66, // CD-RW Media |
| | SIID_MEDIACDR = 67, // CD-R Media |
| | SIID_MEDIACDBURN = 68, // Burning CD |
| | SIID_MEDIABLANKCD = 69, // Blank CD Media |
| | SIID_MEDIACDROM = 70, // CD-ROM Media |
| | SIID_AUDIOFILES = 71, // Audio files |
| | SIID_IMAGEFILES = 72, // Image files |
| | SIID_VIDEOFILES = 73, // Video files |
| | SIID_MIXEDFILES = 74, // Mixed files |
| | SIID_FOLDERBACK = 75, // Folder back |
| | SIID_FOLDERFRONT = 76, // Folder front |
| | SIID_SHIELD = 77, // Security shield. Use for UAC prompts only. |
| | SIID_WARNING = 78, // Warning |
| | SIID_INFO = 79, // Informational |
| | SIID_ERROR = 80, // Error |
| | SIID_KEY = 81, // Key / Secure |
| | SIID_SOFTWARE = 82, // Software |
| | SIID_RENAME = 83, // Rename |
| | SIID_DELETE = 84, // Delete |
| | SIID_MEDIAAUDIODVD = 85, // Audio DVD Media |
| | SIID_MEDIAMOVIEDVD = 86, // Movie DVD Media |
| | SIID_MEDIAENHANCEDCD = 87, // Enhanced CD Media |
| | SIID_MEDIAENHANCEDDVD = 88, // Enhanced DVD Media |
| | SIID_MEDIAHDDVD = 89, // HD-DVD Media |
| | SIID_MEDIABLURAY = 90, // BluRay Media |
| | SIID_MEDIAVCD = 91, // VCD Media |
| | SIID_MEDIADVDPLUSR = 92, // DVD+R Media |
| | SIID_MEDIADVDPLUSRW = 93, // DVD+RW Media |
| | SIID_DESKTOPPC = 94, // desktop computer |
| | SIID_MOBILEPC = 95, // mobile computer (laptop/notebook) |
| | SIID_USERS = 96, // users |
| | SIID_MEDIASMARTMEDIA = 97, // Smart Media |
| | SIID_MEDIACOMPACTFLASH = 98, // Compact Flash |
| | SIID_DEVICECELLPHONE = 99, // Cell phone |
| | SIID_DEVICECAMERA = 100, // Camera |
| | SIID_DEVICEVIDEOCAMERA = 101, // Video camera |
| | SIID_DEVICEAUDIOPLAYER = 102, // Audio player |
| | SIID_NETWORKCONNECT = 103, // Connect to network |
| | SIID_INTERNET = 104, // Internet |
| | SIID_ZIPFILE = 105, // ZIP file |
| | SIID_SETTINGS = 106, // Settings |
| | SIID_MAX_ICONS = 107, |
| | } SHSTOCKICONID; |
| | |
| | #define SIID_INVALID ((SHSTOCKICONID)-1) |
| | |
| | SHSTDAPI SHGetStockIconInfo(SHSTOCKICONID siid, UINT uFlags, __inout SHSTOCKICON |
| | INFO *psii); |
| | |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
#define SHGetDiskFreeSpace SHGetDiskFreeSpaceEx | | #define SHGetDiskFreeSpace SHGetDiskFreeSpaceEx |
| | |
|
SHSTDAPI_(BOOL) SHGetDiskFreeSpaceExA(LPCSTR pszDirectoryName, ULARGE_INTEGER* p | | SHSTDAPI_(BOOL) SHGetDiskFreeSpaceExA(LPCSTR pszDirectoryName, __out_opt ULARGE_ |
ulFreeBytesAvailableToCaller, ULARGE_INTEGER* pulTotalNumberOfBytes, ULARGE_INTE | | INTEGER* pulFreeBytesAvailableToCaller, |
GER* pulTotalNumberOfFreeBytes); | | __out_opt ULARGE_INTEGER* pulTotalNumberOfBytes, __out_opt ULARGE_INTEGER* p |
SHSTDAPI_(BOOL) SHGetDiskFreeSpaceExW(LPCWSTR pszDirectoryName, ULARGE_INTEGER* | | ulTotalNumberOfFreeBytes); |
pulFreeBytesAvailableToCaller, ULARGE_INTEGER* pulTotalNumberOfBytes, ULARGE_INT | | SHSTDAPI_(BOOL) SHGetDiskFreeSpaceExW(LPCWSTR pszDirectoryName, __out_opt ULARGE |
EGER* pulTotalNumberOfFreeBytes); | | _INTEGER* pulFreeBytesAvailableToCaller, |
| | __out_opt ULARGE_INTEGER* pulTotalNumberOfBytes, __out_opt ULARGE_INTEGER* p |
| | ulTotalNumberOfFreeBytes); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHGetDiskFreeSpaceEx SHGetDiskFreeSpaceExW | | #define SHGetDiskFreeSpaceEx SHGetDiskFreeSpaceExW |
#else | | #else |
#define SHGetDiskFreeSpaceEx SHGetDiskFreeSpaceExA | | #define SHGetDiskFreeSpaceEx SHGetDiskFreeSpaceExA |
#endif // !UNICODE | | #endif // !UNICODE |
|
SHSTDAPI_(BOOL) SHGetNewLinkInfoA(LPCSTR pszLinkTo, LPCSTR pszDir, LPSTR pszName | | SHSTDAPI_(BOOL) SHGetNewLinkInfoA(__in LPCSTR pszLinkTo, __in LPCSTR pszDir, __o |
, BOOL *pfMustCopy, UINT uFlags); | | ut_ecount(MAX_PATH) LPSTR pszName, __out BOOL *pfMustCopy, __in UINT uFlags); |
SHSTDAPI_(BOOL) SHGetNewLinkInfoW(LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszN | | SHSTDAPI_(BOOL) SHGetNewLinkInfoW(__in LPCWSTR pszLinkTo, __in LPCWSTR pszDir, _ |
ame, BOOL *pfMustCopy, UINT uFlags); | | _out_ecount(MAX_PATH) LPWSTR pszName, __out BOOL *pfMustCopy, __in UINT uFlags); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHGetNewLinkInfo SHGetNewLinkInfoW | | #define SHGetNewLinkInfo SHGetNewLinkInfoW |
#else | | #else |
#define SHGetNewLinkInfo SHGetNewLinkInfoA | | #define SHGetNewLinkInfo SHGetNewLinkInfoA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#define SHGNLI_PIDL 0x000000001 // pszLinkTo is a pidl | | #define SHGNLI_PIDL 0x000000001 // pszLinkTo is a pidl |
#define SHGNLI_PREFIXNAME 0x000000002 // Make name "Shortcut to xxx" | | #define SHGNLI_PREFIXNAME 0x000000002 // Make name "Shortcut to xxx" |
#define SHGNLI_NOUNIQUE 0x000000004 // don't do the unique name gene
ration | | #define SHGNLI_NOUNIQUE 0x000000004 // don't do the unique name gene
ration |
#if (_WIN32_IE >= 0x0501) | | #if (_WIN32_IE >= 0x0501) |
#define SHGNLI_NOLNK 0x000000008 // don't add ".lnk" extension | | #define SHGNLI_NOLNK 0x000000008 // don't add ".lnk" extension |
#endif // _WIN2_IE >= 0x0501 | | #endif // _WIN2_IE >= 0x0501 |
|
| | #if (_WIN32_IE >= 0x0600) |
| | #define SHGNLI_NOLOCNAME 0x000000010 // use non localized (parsing) n |
| | ame from the target |
| | #endif |
| | #endif // (NTDDI_VERSION >= NTDDI_WIN2K) |
| | |
//// | | //// |
//// End SHGetFileInfo | | //// End SHGetFileInfo |
//// | | //// |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
// Printer stuff | | // Printer stuff |
#define PRINTACTION_OPEN 0 | | #define PRINTACTION_OPEN 0 |
#define PRINTACTION_PROPERTIES 1 | | #define PRINTACTION_PROPERTIES 1 |
#define PRINTACTION_NETINSTALL 2 | | #define PRINTACTION_NETINSTALL 2 |
#define PRINTACTION_NETINSTALLLINK 3 | | #define PRINTACTION_NETINSTALLLINK 3 |
#define PRINTACTION_TESTPAGE 4 | | #define PRINTACTION_TESTPAGE 4 |
#define PRINTACTION_OPENNETPRN 5 | | #define PRINTACTION_OPENNETPRN 5 |
#ifdef WINNT | | #ifdef WINNT |
#define PRINTACTION_DOCUMENTDEFAULTS 6 | | #define PRINTACTION_DOCUMENTDEFAULTS 6 |
#define PRINTACTION_SERVERPROPERTIES 7 | | #define PRINTACTION_SERVERPROPERTIES 7 |
#endif | | #endif |
| | |
SHSTDAPI_(BOOL) SHInvokePrinterCommandA(HWND hwnd, UINT uAction, LPCSTR lpBuf1,
LPCSTR lpBuf2, BOOL fModal); | | SHSTDAPI_(BOOL) SHInvokePrinterCommandA(HWND hwnd, UINT uAction, LPCSTR lpBuf1,
LPCSTR lpBuf2, BOOL fModal); |
SHSTDAPI_(BOOL) SHInvokePrinterCommandW(HWND hwnd, UINT uAction, LPCWSTR lpBuf1,
LPCWSTR lpBuf2, BOOL fModal); | | SHSTDAPI_(BOOL) SHInvokePrinterCommandW(HWND hwnd, UINT uAction, LPCWSTR lpBuf1,
LPCWSTR lpBuf2, BOOL fModal); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHInvokePrinterCommand SHInvokePrinterCommandW | | #define SHInvokePrinterCommand SHInvokePrinterCommandW |
#else | | #else |
#define SHInvokePrinterCommand SHInvokePrinterCommandA | | #define SHInvokePrinterCommand SHInvokePrinterCommandA |
#endif // !UNICODE | | #endif // !UNICODE |
|
| | #endif // (NTDDI_VERSION >= NTDDI_WIN2K) |
| | |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | typedef struct _OPEN_PRINTER_PROPS_INFOA |
| | { |
| | DWORD dwSize; |
| | LPSTR pszSheetName; |
| | UINT uSheetIndex; |
| | DWORD dwFlags; |
| | BOOL bModal; |
| | } OPEN_PRINTER_PROPS_INFOA, *POPEN_PRINTER_PROPS_INFOA; |
| | typedef struct _OPEN_PRINTER_PROPS_INFOW |
| | { |
| | DWORD dwSize; |
| | LPWSTR pszSheetName; |
| | UINT uSheetIndex; |
| | DWORD dwFlags; |
| | BOOL bModal; |
| | } OPEN_PRINTER_PROPS_INFOW, *POPEN_PRINTER_PROPS_INFOW; |
| | #ifdef UNICODE |
| | typedef OPEN_PRINTER_PROPS_INFOW OPEN_PRINTER_PROPS_INFO; |
| | typedef POPEN_PRINTER_PROPS_INFOW POPEN_PRINTER_PROPS_INFO; |
| | #else |
| | typedef OPEN_PRINTER_PROPS_INFOA OPEN_PRINTER_PROPS_INFO; |
| | typedef POPEN_PRINTER_PROPS_INFOA POPEN_PRINTER_PROPS_INFO; |
| | #endif // UNICODE |
| | #define PRINT_PROP_FORCE_NAME 0x01 |
| | #endif // (NTDDI_VERSION >= NTDDI_WIN2K) |
| | |
#endif /* WINVER >= 0x0400 */ | | #endif /* WINVER >= 0x0400 */ |
| | |
#if (_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0500) | | #if (_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0500) |
| | |
// | | // |
// The SHLoadNonloadedIconOverlayIdentifiers API causes the shell's | | // The SHLoadNonloadedIconOverlayIdentifiers API causes the shell's |
// icon overlay manager to load any registered icon overlay | | // icon overlay manager to load any registered icon overlay |
// identifers that are not currently loaded. This is useful if an | | // identifers that are not currently loaded. This is useful if an |
// overlay identifier did not load at shell startup but is needed | | // overlay identifier did not load at shell startup but is needed |
| | |
skipping to change at line 837 | | skipping to change at line 1444 |
// S_OK File/directory is available offline, unless | | // S_OK File/directory is available offline, unless |
// OFFLINE_STATUS_INCOMPLETE is returned. | | // OFFLINE_STATUS_INCOMPLETE is returned. |
// E_INVALIDARG Path is invalid, or not a net path | | // E_INVALIDARG Path is invalid, or not a net path |
// E_FAIL File/directory is not available offline | | // E_FAIL File/directory is not available offline |
// | | // |
// Notes: | | // Notes: |
// OFFLINE_STATUS_INCOMPLETE is never returned for directories. | | // OFFLINE_STATUS_INCOMPLETE is never returned for directories. |
// Both OFFLINE_STATUS_LOCAL and OFFLINE_STATUS_REMOTE may be returned, | | // Both OFFLINE_STATUS_LOCAL and OFFLINE_STATUS_REMOTE may be returned, |
// indicating "open in both places." This is common when the server is onlin
e. | | // indicating "open in both places." This is common when the server is onlin
e. |
// | | // |
|
SHSTDAPI SHIsFileAvailableOffline(LPCWSTR pwszPath, LPDWORD pdwStatus); | | SHSTDAPI SHIsFileAvailableOffline(__in LPCWSTR pwszPath, __out_opt LPDWORD pdwSt
atus); |
| | |
#define OFFLINE_STATUS_LOCAL 0x0001 // If open, it's open locally | | #define OFFLINE_STATUS_LOCAL 0x0001 // If open, it's open locally |
#define OFFLINE_STATUS_REMOTE 0x0002 // If open, it's open remotely | | #define OFFLINE_STATUS_REMOTE 0x0002 // If open, it's open remotely |
#define OFFLINE_STATUS_INCOMPLETE 0x0004 // The local copy is currently imcom
plete. | | #define OFFLINE_STATUS_INCOMPLETE 0x0004 // The local copy is currently imcom
plete. |
// The file will not be available of
fline | | // The file will not be available of
fline |
// until it has been synchronized. | | // until it has been synchronized. |
| | |
#endif | | #endif |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
// sets the specified path to use the string resource | | // sets the specified path to use the string resource |
// as the UI instead of the file system name | | // as the UI instead of the file system name |
|
SHSTDAPI SHSetLocalizedName(LPWSTR pszPath, LPCWSTR pszResModule, int idsRes); | | SHSTDAPI SHSetLocalizedName(LPCWSTR pszPath, LPCWSTR pszResModule, int idsRes); |
| | #endif // (NTDDI_VERSION >= NTDDI_WINXP) |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | // sets the specified path to use the string resource |
| | // as the UI instead of the file system name |
| | SHSTDAPI SHRemoveLocalizedName(LPCWSTR pszPath); |
| | // gets the string resource for the specified path |
| | SHSTDAPI SHGetLocalizedName(__in LPCWSTR pszPath, __out_ecount(cch) LPWSTR pszRe |
| | sModule, UINT cch, __out int *pidsRes); |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
//====== ShellMessageBox ================================================ | | //====== ShellMessageBox ================================================ |
| | |
// If lpcTitle is NULL, the title is taken from hWnd | | // If lpcTitle is NULL, the title is taken from hWnd |
// If lpcText is NULL, this is assumed to be an Out Of Memory message | | // If lpcText is NULL, this is assumed to be an Out Of Memory message |
// If the selector of lpcTitle or lpcText is NULL, the offset should be a | | // If the selector of lpcTitle or lpcText is NULL, the offset should be a |
// string resource ID | | // string resource ID |
// The variable arguments must all be 32-bit values (even if fewer bits | | // The variable arguments must all be 32-bit values (even if fewer bits |
// are actually used) | | // are actually used) |
// lpcText (or whatever string resource it causes to be loaded) should | | // lpcText (or whatever string resource it causes to be loaded) should |
// be a formatting string similar to wsprintf except that only the | | // be a formatting string similar to wsprintf except that only the |
// following formats are available: | | // following formats are available: |
// %% formats to a single '%' | | // %% formats to a single '%' |
// %nn%s the nn-th arg is a string which is inserted | | // %nn%s the nn-th arg is a string which is inserted |
// %nn%ld the nn-th arg is a DWORD, and formatted decimal | | // %nn%ld the nn-th arg is a DWORD, and formatted decimal |
// %nn%lx the nn-th arg is a DWORD, and formatted hex | | // %nn%lx the nn-th arg is a DWORD, and formatted hex |
// note that lengths are allowed on the %s, %ld, and %lx, just | | // note that lengths are allowed on the %s, %ld, and %lx, just |
// like wsprintf | | // like wsprintf |
// | | // |
|
#if (_WIN32_IE >= 0x0601) | | |
| | |
|
int _cdecl ShellMessageBoxA( | | #if !defined(_SHLWAPI_) |
HINSTANCE hAppInst, | | #define LWSTDAPIV_(type) EXTERN_C DECLSPEC_IMPORT type STDAPIVCALLTYPE |
HWND hWnd, | | #else |
LPCSTR lpcText, | | #define LWSTDAPIV_(type) STDAPIV_(type) |
LPCSTR lpcTitle, | | #endif |
UINT fuStyle, | | |
...); | | LWSTDAPIV_(int) ShellMessageBoxA( |
int _cdecl ShellMessageBoxW( | | __in_opt HINSTANCE hAppInst, |
HINSTANCE hAppInst, | | __in_opt HWND hWnd, |
HWND hWnd, | | __in LPCSTR lpcText, |
LPCWSTR lpcText, | | __in_opt LPCSTR lpcTitle, |
LPCWSTR lpcTitle, | | __in UINT fuStyle, ...); |
UINT fuStyle, | | LWSTDAPIV_(int) ShellMessageBoxW( |
...); | | __in_opt HINSTANCE hAppInst, |
| | __in_opt HWND hWnd, |
| | __in LPCWSTR lpcText, |
| | __in_opt LPCWSTR lpcTitle, |
| | __in UINT fuStyle, ...); |
#ifdef UNICODE | | #ifdef UNICODE |
#define ShellMessageBox ShellMessageBoxW | | #define ShellMessageBox ShellMessageBoxW |
#else | | #else |
#define ShellMessageBox ShellMessageBoxA | | #define ShellMessageBox ShellMessageBoxA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
|
#endif // (_WIN32_IE >= 0x0601) | | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
| | |
#if (_WIN32_IE >= 0x0601) | | |
SHSTDAPI_(BOOL) IsLFNDriveA(LPCSTR pszPath); | | SHSTDAPI_(BOOL) IsLFNDriveA(LPCSTR pszPath); |
SHSTDAPI_(BOOL) IsLFNDriveW(LPCWSTR pszPath); | | SHSTDAPI_(BOOL) IsLFNDriveW(LPCWSTR pszPath); |
#ifdef UNICODE | | #ifdef UNICODE |
#define IsLFNDrive IsLFNDriveW | | #define IsLFNDrive IsLFNDriveW |
#else | | #else |
#define IsLFNDrive IsLFNDriveA | | #define IsLFNDrive IsLFNDriveA |
#endif // !UNICODE | | #endif // !UNICODE |
|
#endif // (_WIN32_IE >= 0x0601) | | #endif // (NTDDI_VERSION >= NTDDI_WIN2K) |
| | |
#if _WIN32_IE >= 0x0600 | | #if _WIN32_IE >= 0x0600 |
| | |
|
STDAPI SHEnumerateUnreadMailAccountsA(HKEY hKeyUser, DWORD dwIndex, LPS | | STDAPI SHEnumerateUnreadMailAccountsA(HKEY hKeyUser, DWORD dwIndex, __o |
TR pszMailAddress, int cchMailAddress); | | ut_ecount(cchMailAddress) LPSTR pszMailAddress, int cchMailAddress); |
STDAPI SHEnumerateUnreadMailAccountsW(HKEY hKeyUser, DWORD dwIndex, LPW | | STDAPI SHEnumerateUnreadMailAccountsW(HKEY hKeyUser, DWORD dwIndex, __o |
STR pszMailAddress, int cchMailAddress); | | ut_ecount(cchMailAddress) LPWSTR pszMailAddress, int cchMailAddress); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHEnumerateUnreadMailAccounts SHEnumerateUnreadMailAccountsW | | #define SHEnumerateUnreadMailAccounts SHEnumerateUnreadMailAccountsW |
#else | | #else |
#define SHEnumerateUnreadMailAccounts SHEnumerateUnreadMailAccountsA | | #define SHEnumerateUnreadMailAccounts SHEnumerateUnreadMailAccountsA |
#endif // !UNICODE | | #endif // !UNICODE |
|
STDAPI SHGetUnreadMailCountA(HKEY hKeyUser, LPCSTR pszMailAddress, DWOR | | STDAPI SHGetUnreadMailCountA(HKEY hKeyUser, LPCSTR pszMailAddress, __ou |
D *pdwCount, FILETIME *pFileTime, LPSTR pszShellExecuteCommand, int cchShellExec | | t_opt DWORD *pdwCount, __out_opt FILETIME *pFileTime, __out_ecount_opt(cchShellE |
uteCommand); | | xecuteCommand) LPSTR pszShellExecuteCommand, int cchShellExecuteCommand); |
STDAPI SHGetUnreadMailCountW(HKEY hKeyUser, LPCWSTR pszMailAddress, DWO | | STDAPI SHGetUnreadMailCountW(HKEY hKeyUser, LPCWSTR pszMailAddress, __o |
RD *pdwCount, FILETIME *pFileTime, LPWSTR pszShellExecuteCommand, int cchShellEx | | ut_opt DWORD *pdwCount, __out_opt FILETIME *pFileTime, __out_ecount_opt(cchShell |
ecuteCommand); | | ExecuteCommand) LPWSTR pszShellExecuteCommand, int cchShellExecuteCommand); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHGetUnreadMailCount SHGetUnreadMailCountW | | #define SHGetUnreadMailCount SHGetUnreadMailCountW |
#else | | #else |
#define SHGetUnreadMailCount SHGetUnreadMailCountA | | #define SHGetUnreadMailCount SHGetUnreadMailCountA |
#endif // !UNICODE | | #endif // !UNICODE |
STDAPI SHSetUnreadMailCountA(LPCSTR pszMailAddress, DWORD dwCount, LPCS
TR pszShellExecuteCommand); | | STDAPI SHSetUnreadMailCountA(LPCSTR pszMailAddress, DWORD dwCount, LPCS
TR pszShellExecuteCommand); |
STDAPI SHSetUnreadMailCountW(LPCWSTR pszMailAddress, DWORD dwCount, LPC
WSTR pszShellExecuteCommand); | | STDAPI SHSetUnreadMailCountW(LPCWSTR pszMailAddress, DWORD dwCount, LPC
WSTR pszShellExecuteCommand); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHSetUnreadMailCount SHSetUnreadMailCountW | | #define SHSetUnreadMailCount SHSetUnreadMailCountW |
#else | | #else |
#define SHSetUnreadMailCount SHSetUnreadMailCountA | | #define SHSetUnreadMailCount SHSetUnreadMailCountA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#endif /* _WIN32_IE >= 0x0600 */ | | #endif /* _WIN32_IE >= 0x0600 */ |
| | |
#if (_WIN32_IE >= 0x0601) | | #if (_WIN32_IE >= 0x0601) |
|
STDAPI_(BOOL) SHTestTokenMembership(HANDLE hToken, ULONG ulRID); | | STDAPI_(BOOL) SHTestTokenMembership(__in_opt HANDLE hToken, __in ULONG ulRID); |
#endif // (_WIN32_IE >= 0x0601) | | #endif // (_WIN32_IE >= 0x0601) |
| | |
#if _WIN32_IE >= 0x0600 | | #if _WIN32_IE >= 0x0600 |
| | |
|
STDAPI SHGetImageList(int iImageList, REFIID riid, void **ppvObj); | | #if (NTDDI_VERSION >= NTDDI_WINXP) |
| | SHSTDAPI SHGetImageList(int iImageList, REFIID riid, __out void **ppvObj); |
| | #endif // (NTDDI_VERSION >= NTDDI_WINXP) |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
#define SHIL_LARGE 0 // normally 32x32 | | #define SHIL_LARGE 0 // normally 32x32 |
#define SHIL_SMALL 1 // normally 16x16 | | #define SHIL_SMALL 1 // normally 16x16 |
#define SHIL_EXTRALARGE 2 | | #define SHIL_EXTRALARGE 2 |
#define SHIL_SYSSMALL 3 // like SHIL_SMALL, but tracks system small icon
metric correctly | | #define SHIL_SYSSMALL 3 // like SHIL_SMALL, but tracks system small icon
metric correctly |
|
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #define SHIL_JUMBO 4 // normally 256x256 |
| | #define SHIL_LAST SHIL_JUMBO |
| | #else |
#define SHIL_LAST SHIL_SYSSMALL | | #define SHIL_LAST SHIL_SYSSMALL |
|
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #endif // (NTDDI_VERSION >= NTDDI_WINXP) |
| | |
// Function call types for ntshrui folder sharing helpers | | // Function call types for ntshrui folder sharing helpers |
|
typedef HRESULT (STDMETHODCALLTYPE *PFNCANSHAREFOLDERW)(IN LPCWSTR pszPath); | | typedef HRESULT (STDMETHODCALLTYPE *PFNCANSHAREFOLDERW)(LPCWSTR pszPath); |
typedef HRESULT (STDMETHODCALLTYPE *PFNSHOWSHAREFOLDERUIW)(IN HWND hwndParent, I | | typedef HRESULT (STDMETHODCALLTYPE *PFNSHOWSHAREFOLDERUIW)(HWND hwndParent, LPCW |
N LPCWSTR pszPath); | | STR pszPath); |
| | |
#endif /* _WIN32_IE >= 0x0600 */ | | #endif /* _WIN32_IE >= 0x0600 */ |
| | |
#ifdef __cplusplus | | #ifdef __cplusplus |
} | | } |
#endif /* __cplusplus */ | | #endif /* __cplusplus */ |
| | |
#if !defined(_WIN64) | | #if !defined(_WIN64) |
#include <poppack.h> | | #include <poppack.h> |
#endif | | #endif |
| | |
|
| | #if defined(_MSC_VER) && (_MSC_VER >= 1200) |
| | #pragma warning(pop) |
| | #endif |
| | |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | // API for new Network Address Control |
| | |
| | // Instantiation |
| | #define WC_NETADDRESS L"msctls_netaddress" |
| | SHSTDAPI_(BOOL) InitNetworkAddressControl(); |
| | |
| | // Address Control Messages |
| | |
| | // NCM_GETADDRESS returns the type of address that is present in the |
| | // control (based on TBD Net Address flags). If the input string has |
| | // not been validated using this message will force the validation of |
| | // the input string. The WPARAM is a BOOL to determine to show the |
| | // balloon tip. The LPARAM is a pointer to the structure to fill in |
| | // with the address type and address string. |
| | #define NCM_GETADDRESS (WM_USER+1) |
| | #define NetAddr_GetAddress(hwnd,pv) \ |
| | (HRESULT)SNDMSG(hwnd,NCM_GETADDRESS,0,(LPARAM)pv) |
| | typedef struct tagNC_ADDRESS |
| | { |
| | struct NET_ADDRESS_INFO_ *pAddrInfo; // defined in iphlpapi.h |
| | USHORT PortNumber; |
| | BYTE PrefixLength; |
| | } NC_ADDRESS, *PNC_ADDRESS; |
| | |
| | // NCM_SETALLOWTYPE sets the type of addresses that the control will allow. |
| | // The address flags are defined in iphlpapi.h |
| | #define NCM_SETALLOWTYPE (WM_USER+2) |
| | #define NetAddr_SetAllowType(hwnd,addrMask) \ |
| | (HRESULT)SNDMSG(hwnd,NCM_SETALLOWTYPE,(WPARAM)addrMask,0) |
| | // NCM_GETALLOWTYPE returns the currently allowed type mask. |
| | #define NCM_GETALLOWTYPE (WM_USER+3) |
| | #define NetAddr_GetAllowType(hwnd) \ |
| | (DWORD)SNDMSG(hwnd,NCM_GETALLOWTYPE,0,0) |
| | |
| | // NCM_DISPLAYERRORTIP displays the error balloon tip with the correct |
| | // error string (based on the last failure from the NCM_GETADDRESS call |
| | #define NCM_DISPLAYERRORTIP (WM_USER+4) |
| | #define NetAddr_DisplayErrorTip(hwnd) \ |
| | (HRESULT)SNDMSG(hwnd,NCM_DISPLAYERRORTIP,0,0) |
| | |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | // Returns the type of media (CD, DVD, Blank, etc) that is in the drive. |
| | // dwMediaContent is set to a combination of ARCONTENT flags. |
| | STDAPI SHGetDriveMedia(LPCWSTR pszDrive, __out DWORD *pdwMediaContent); |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
| | // CPL task apis |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
| | // Windows Parental Controls (WPC) query apis |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
#endif /* _INC_SHELLAPI */ | | #endif /* _INC_SHELLAPI */ |
| | |
End of changes. 89 change blocks. |
212 lines changed or deleted | | 986 lines changed or added |
|
shlobj.h (6.00.3790.3959-Windows 5.0) | | shlobj.h (6.0.6002.18005-Windows 6.0) |
| | |
skipping to change at line 12 | | skipping to change at line 12 |
// | | // |
// Copyright (c) Microsoft Corporation. All rights reserved. | | // Copyright (c) Microsoft Corporation. All rights reserved. |
// | | // |
// File: shlobj.h | | // File: shlobj.h |
// | | // |
//=========================================================================== | | //=========================================================================== |
| | |
#ifndef _SHLOBJ_H_ | | #ifndef _SHLOBJ_H_ |
#define _SHLOBJ_H_ | | #define _SHLOBJ_H_ |
| | |
|
#ifndef _WINRESRC_ | | |
#ifndef _WIN32_IE | | |
#define _WIN32_IE 0x0501 | | |
#else | | |
#if (_WIN32_IE < 0x0400) && defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0500) | | |
#error _WIN32_IE setting conflicts with _WIN32_WINNT setting | | |
#endif | | |
#endif | | |
#endif | | |
| | |
#ifndef SNDMSG | | #ifndef SNDMSG |
#ifdef __cplusplus | | #ifdef __cplusplus |
#define SNDMSG ::SendMessage | | #define SNDMSG ::SendMessage |
#else | | #else |
#define SNDMSG SendMessage | | #define SNDMSG SendMessage |
#endif | | #endif |
#endif // ifndef SNDMSG | | #endif // ifndef SNDMSG |
| | |
// | | // |
// Define API decoration for direct importing of DLL references. | | // Define API decoration for direct importing of DLL references. |
| | |
skipping to change at line 103 | | skipping to change at line 93 |
#include <prsht.h> | | #include <prsht.h> |
#endif | | #endif |
#ifndef _INC_COMMCTRL | | #ifndef _INC_COMMCTRL |
#include <commctrl.h> // for LPTBBUTTON | | #include <commctrl.h> // for LPTBBUTTON |
#endif | | #endif |
| | |
#ifndef INITGUID | | #ifndef INITGUID |
#include <shlguid.h> | | #include <shlguid.h> |
#endif /* !INITGUID */ | | #endif /* !INITGUID */ |
| | |
|
#include <pshpack1.h> /* Assume byte packing throughout */ | | |
| | |
#ifdef __cplusplus | | |
extern "C" { /* Assume C declarations for C++ */ | | |
#endif /* __cplusplus */ | | |
| | |
#include <shtypes.h> | | #include <shtypes.h> |
|
| | |
#include <shobjidl.h> | | #include <shobjidl.h> |
| | |
|
//=========================================================================== | | #if defined(_MSC_VER) && (_MSC_VER >= 1200) |
// | | #pragma once |
// Task allocator API | | #endif |
// | | |
// All the shell extensions MUST use the task allocator (see OLE 2.0 | | |
// programming guild for its definition) when they allocate or free | | |
// memory objects (mostly ITEMIDLIST) that are returned across any | | |
// shell interfaces. There are two ways to access the task allocator | | |
// from a shell extension depending on whether or not it is linked with | | |
// OLE32.DLL or not (purely for efficiency). | | |
// | | |
// (1) A shell extension which calls any OLE API (i.e., linked with | | |
// OLE32.DLL) should call OLE's task allocator (by retrieving | | |
// the task allocator by calling CoGetMalloc API). | | |
// | | |
// (2) A shell extension which does not call any OLE API (i.e., not linked | | |
// with OLE32.DLL) should call the shell task allocator API (defined | | |
// below), so that the shell can quickly loads it when OLE32.DLL is not | | |
// loaded by any application at that point. | | |
// | | |
// Notes: | | |
// In next version of Windowso release, SHGetMalloc will be replaced by | | |
// the following macro. | | |
// | | |
// #define SHGetMalloc(ppmem) CoGetMalloc(MEMCTX_TASK, ppmem) | | |
// | | |
//=========================================================================== | | |
| | |
|
SHSTDAPI SHGetMalloc(LPMALLOC * ppMalloc); | | #ifdef __cplusplus |
| | extern "C" { /* Assume C declarations for C++ */ |
| | #endif /* __cplusplus */ |
| | |
|
#if (_WIN32_IE >= 0x0601) | | #include <pshpack1.h> /* Assume byte packing throughout */ |
SHSTDAPI_(void *) SHAlloc(SIZE_T cb); | | |
SHSTDAPI_(void) SHFree(void * pv); | | |
#endif // (_WIN32_IE >= 0x0601) | | |
| | |
//=========================================================================== | | //=========================================================================== |
// | | // |
|
// IContextMenu interface | | // Legacy exports that are no longer needed, call the COM API instead |
// | | |
// [OverView] | | |
// | | |
// The shell uses the IContextMenu interface in following three cases. | | |
// | | |
// case-1: The shell is loading context menu extensions. | | |
// | | |
// When the user clicks the right mouse button on an item within the shell's | | |
// name space (i.g., file, directory, server, work-group, etc.), it creates | | |
// the default context menu for its type, then loads context menu extensions | | |
// that are registered for that type (and its base type) so that they can | | |
// add extra menu items. Those context menu extensions are registered at | | |
// HKCR\{ProgID}\shellex\ContextMenuHandlers. | | |
// | | |
// case-2: The shell is retrieving a context menu of sub-folders in extended | | |
// name-space. | | |
// | | |
// When the explorer's name space is extended by name space extensions, | | |
// the shell calls their IShellFolder::GetUIObjectOf to get the IContextMenu | | |
// objects when it creates context menus for folders under those extended | | |
// name spaces. | | |
// | | |
// case-3: The shell is loading non-default drag and drop handler for directorie | | |
s. | | |
// | | |
// When the user performed a non-default drag and drop onto one of file | | |
// system folders (i.e., directories), it loads shell extensions that are | | |
// registered at HKCR\{ProgID}\DragDropHandlers. | | |
// | | |
// | | |
// [Member functions] | | |
// | | |
// | | |
// IContextMenu::QueryContextMenu | | |
// | | |
// This member function may insert one or more menuitems to the specified | | |
// menu (hmenu) at the specified location (indexMenu which is never be -1). | | |
// The IDs of those menuitem must be in the specified range (idCmdFirst and | | |
// idCmdLast). It returns the maximum menuitem ID offset (ushort) in the | | |
// 'code' field (low word) of the scode. | | |
// | | |
// The uFlags specify the context. It may have one or more of following | | |
// flags. | | |
// | | |
// CMF_DEFAULTONLY: This flag is passed if the user is invoking the default | | |
// action (typically by double-clicking, case 1 and 2 only). Context menu | | |
// extensions (case 1) should not add any menu items, and returns NOERROR. | | |
// | | |
// CMF_VERBSONLY: The explorer passes this flag if it is constructing | | |
// a context menu for a short-cut object (case 1 and case 2 only). If this | | |
// flag is passed, it should not add any menu-items that is not appropriate | | |
// from a short-cut. | | |
// A good example is the "Delete" menuitem, which confuses the user | | |
// because it is not clear whether it deletes the link source item or the | | |
// link itself. | | |
// | | |
// CMF_EXPLORER: The explorer passes this flag if it has the left-side pane | | |
// (case 1 and 2 only). Context menu extensions should ignore this flag. | | |
// | | |
// High word (16-bit) are reserved for context specific communications | | |
// and the rest of flags (13-bit) are reserved by the system. | | |
// | | |
// | | |
// IContextMenu::InvokeCommand | | |
// | | |
// This member is called when the user has selected one of menuitems that | | |
// are inserted by previous QueryContextMenu member. In this case, the | | |
// LOWORD(lpici->lpVerb) contains the menuitem ID offset (menuitem ID - | | |
// idCmdFirst). | | |
// | | |
// This member function may also be called programmatically. In such a case, | | |
// lpici->lpVerb specifies the canonical name of the command to be invoked, | | |
// which is typically retrieved by GetCommandString member previously. | | |
// | | |
// Parameters in lpci: | | |
// cbSize -- Specifies the size of this structure (sizeof(*lpci)) | | |
// hwnd -- Specifies the owner window for any message/dialog box. | | |
// fMask -- Specifies whether or not dwHotkey/hIcon paramter is valid. | | |
// lpVerb -- Specifies the command to be invoked. | | |
// lpParameters -- Parameters (optional) | | |
// lpDirectory -- Working directory (optional) | | |
// nShow -- Specifies the flag to be passed to ShowWindow (SW_*). | | |
// dwHotKey -- Hot key to be assigned to the app after invoked (optional). | | |
// hIcon -- Specifies the icon (optional). | | |
// hMonitor -- Specifies the default monitor (optional). | | |
// | | |
// | | |
// IContextMenu::GetCommandString | | |
// | | |
// This member function is called by the explorer either to get the | | |
// canonical (language independent) command name (uFlags == GCS_VERB) or | | |
// the help text ((uFlags & GCS_HELPTEXT) != 0) for the specified command. | | |
// The retrieved canonical string may be passed to its InvokeCommand | | |
// member function to invoke a command programmatically. The explorer | | |
// displays the help texts in its status bar; therefore, the length of | | |
// the help text should be reasonably short (<40 characters). | | |
// | | |
// Parameters: | | |
// idCmd -- Specifies menuitem ID offset (from idCmdFirst) | | |
// uFlags -- Either GCS_VERB or GCS_HELPTEXT | | |
// pwReserved -- Reserved (must pass NULL when calling, must ignore when calle | | |
d) | | |
// pszName -- Specifies the string buffer. | | |
// cchMax -- Specifies the size of the string buffer. | | |
// | | // |
//=========================================================================== | | //=========================================================================== |
| | |
|
// QueryContextMenu uFlags | | SHSTDAPI SHGetMalloc(__out IMalloc **ppMalloc); // CoGetMalloc(MEMCTX_TASK,ppMal |
#define CMF_NORMAL 0x00000000 | | loc) |
#define CMF_DEFAULTONLY 0x00000001 | | SHSTDAPI_(void *) SHAlloc(SIZE_T cb); // CoTaskMemAlloc(cb) |
#define CMF_VERBSONLY 0x00000002 | | SHSTDAPI_(void) SHFree(__in_opt void * pv); // CoTaskMemFree(pv) |
#define CMF_EXPLORE 0x00000004 | | |
#define CMF_NOVERBS 0x00000008 | | |
#define CMF_CANRENAME 0x00000010 | | |
#define CMF_NODEFAULT 0x00000020 | | |
#define CMF_INCLUDESTATIC 0x00000040 | | |
#define CMF_EXTENDEDVERBS 0x00000100 // rarely used verbs | | |
#define CMF_RESERVED 0xffff0000 // View specific | | |
| | |
// GetCommandString uFlags | | |
#define GCS_VERBA 0x00000000 // canonical verb | | |
#define GCS_HELPTEXTA 0x00000001 // help text (for status bar) | | |
#define GCS_VALIDATEA 0x00000002 // validate command exists | | |
#define GCS_VERBW 0x00000004 // canonical verb (unicode) | | |
#define GCS_HELPTEXTW 0x00000005 // help text (unicode version) | | |
#define GCS_VALIDATEW 0x00000006 // validate command exists (unicode) | | |
#define GCS_UNICODE 0x00000004 // for bit testing - Unicode string | | |
| | |
#ifdef UNICODE | | |
#define GCS_VERB GCS_VERBW | | |
#define GCS_HELPTEXT GCS_HELPTEXTW | | |
#define GCS_VALIDATE GCS_VALIDATEW | | |
#else | | |
#define GCS_VERB GCS_VERBA | | |
#define GCS_HELPTEXT GCS_HELPTEXTA | | |
#define GCS_VALIDATE GCS_VALIDATEA | | |
#endif | | |
| | |
#define CMDSTR_NEWFOLDERA "NewFolder" | | |
#define CMDSTR_VIEWLISTA "ViewList" | | |
#define CMDSTR_VIEWDETAILSA "ViewDetails" | | |
#define CMDSTR_NEWFOLDERW L"NewFolder" | | |
#define CMDSTR_VIEWLISTW L"ViewList" | | |
#define CMDSTR_VIEWDETAILSW L"ViewDetails" | | |
| | |
#ifdef UNICODE | | |
#define CMDSTR_NEWFOLDER CMDSTR_NEWFOLDERW | | |
#define CMDSTR_VIEWLIST CMDSTR_VIEWLISTW | | |
#define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILSW | | |
#else | | |
#define CMDSTR_NEWFOLDER CMDSTR_NEWFOLDERA | | |
#define CMDSTR_VIEWLIST CMDSTR_VIEWLISTA | | |
#define CMDSTR_VIEWDETAILS CMDSTR_VIEWDETAILSA | | |
#endif | | |
| | |
#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY | | |
#define CMIC_MASK_ICON SEE_MASK_ICON | | |
#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI | | |
#define CMIC_MASK_UNICODE SEE_MASK_UNICODE | | |
#define CMIC_MASK_NO_CONSOLE SEE_MASK_NO_CONSOLE | | |
#define CMIC_MASK_HASLINKNAME SEE_MASK_HASLINKNAME | | |
#define CMIC_MASK_FLAG_SEP_VDM SEE_MASK_FLAG_SEPVDM | | |
#define CMIC_MASK_HASTITLE SEE_MASK_HASTITLE | | |
#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK | | |
#if (_WIN32_IE >= 0x0603) | | |
#define CMIC_MASK_NOZONECHECKS SEE_MASK_NOZONECHECKS | | |
#endif // (_WIN32_IE >= 0x0603) | | |
| | |
#if (_WIN32_IE >= 0x0501) | | |
#define CMIC_MASK_SHIFT_DOWN 0x10000000 | | |
#define CMIC_MASK_CONTROL_DOWN 0x40000000 | | |
#endif // (_WIN32_IE >= 0x501) | | |
#if (_WIN32_IE >= 0x0560) | | |
#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE | | |
#define CMIC_MASK_NOZONECHECKS SEE_MASK_NOZONECHECKS | | |
#endif // (_WIN32_IE >= 0x560) | | |
| | |
#if (_WIN32_IE >= 0x0400) | | |
#define CMIC_MASK_PTINVOKE 0x20000000 | | |
#endif | | |
| | |
#include <pshpack8.h> | | |
| | |
//NOTE: When SEE_MASK_HMONITOR is set, hIcon is treated as hMonitor | | |
typedef struct _CMINVOKECOMMANDINFO { | | |
DWORD cbSize; // sizeof(CMINVOKECOMMANDINFO) | | |
DWORD fMask; // any combination of CMIC_MASK_* | | |
HWND hwnd; // might be NULL (indicating no owner window) | | |
LPCSTR lpVerb; // either a string or MAKEINTRESOURCE(idOffset) | | |
LPCSTR lpParameters; // might be NULL (indicating no parameter) | | |
LPCSTR lpDirectory; // might be NULL (indicating no specific directory) | | |
int nShow; // one of SW_ values for ShowWindow() API | | |
| | |
DWORD dwHotKey; | | |
HANDLE hIcon; | | |
} CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO; | | |
| | |
typedef struct _CMInvokeCommandInfoEx { | | |
DWORD cbSize; // must be sizeof(CMINVOKECOMMANDINFOEX) | | |
DWORD fMask; // any combination of CMIC_MASK_* | | |
HWND hwnd; // might be NULL (indicating no owner window) | | |
LPCSTR lpVerb; // either a string or MAKEINTRESOURCE(idOffset) | | |
LPCSTR lpParameters; // might be NULL (indicating no parameter) | | |
LPCSTR lpDirectory; // might be NULL (indicating no specific directory) | | |
int nShow; // one of SW_ values for ShowWindow() API | | |
| | |
DWORD dwHotKey; | | |
| | |
HANDLE hIcon; | | |
LPCSTR lpTitle; // For CreateProcess-StartupInfo.lpTitle | | |
LPCWSTR lpVerbW; // Unicode verb (for those who can use it) | | |
LPCWSTR lpParametersW; // Unicode parameters (for those who can use it) | | |
LPCWSTR lpDirectoryW; // Unicode directory (for those who can use it) | | |
LPCWSTR lpTitleW; // Unicode title (for those who can use it) | | |
#if (_WIN32_IE >= 0x0400) | | |
POINT ptInvoke; // Point where it's invoked | | |
#endif | | |
} CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX; | | |
| | |
#include <poppack.h> /* Return to byte packing */ | | |
| | |
#undef INTERFACE | | |
#define INTERFACE IContextMenu | | |
| | |
DECLARE_INTERFACE_(IContextMenu, IUnknown) | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | |
| | |
STDMETHOD(QueryContextMenu)(THIS_ | | |
HMENU hmenu, | | |
UINT indexMenu, | | |
UINT idCmdFirst, | | |
UINT idCmdLast, | | |
UINT uFlags) PURE; | | |
| | |
STDMETHOD(InvokeCommand)(THIS_ | | |
LPCMINVOKECOMMANDINFO lpici) PURE; | | |
| | |
STDMETHOD(GetCommandString)(THIS_ | | |
UINT_PTR idCmd, | | |
UINT uType, | | |
UINT * pwReserved, | | |
LPSTR pszName, | | |
UINT cchMax) PURE; | | |
}; | | |
| | |
typedef IContextMenu * LPCONTEXTMENU; | | |
| | |
// | | |
// IContextMenu2 (IContextMenu with one new member) | | |
// | | |
// IContextMenu2::HandleMenuMsg | | |
// | | |
// This function is called, if the client of IContextMenu is aware of | | |
// IContextMenu2 interface and receives one of following messages while | | |
// it is calling TrackPopupMenu (in the window proc of hwnd): | | |
// WM_INITPOPUP, WM_DRAWITEM and WM_MEASUREITEM | | |
// The callee may handle these messages to draw owner draw menuitems. | | |
// | | |
| | |
#undef INTERFACE | | |
#define INTERFACE IContextMenu2 | | |
| | |
DECLARE_INTERFACE_(IContextMenu2, IContextMenu) | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | |
| | |
// *** IContextMenu methods *** | | |
| | |
STDMETHOD(QueryContextMenu)(THIS_ | | |
HMENU hmenu, | | |
UINT indexMenu, | | |
UINT idCmdFirst, | | |
UINT idCmdLast, | | |
UINT uFlags) PURE; | | |
| | |
STDMETHOD(InvokeCommand)(THIS_ | | |
LPCMINVOKECOMMANDINFO lpici) PURE; | | |
| | |
STDMETHOD(GetCommandString)(THIS_ | | |
UINT_PTR idCmd, | | |
UINT uType, | | |
UINT * pwReserved, | | |
LPSTR pszName, | | |
UINT cchMax) PURE; | | |
| | |
// *** IContextMenu2 methods *** | | |
| | |
STDMETHOD(HandleMenuMsg)(THIS_ | | |
UINT uMsg, | | |
WPARAM wParam, | | |
LPARAM lParam) PURE; | | |
}; | | |
| | |
typedef IContextMenu2 * LPCONTEXTMENU2; | | |
| | |
// | | |
// IContextMenu3 (IContextMenu with one new member) | | |
// | | |
// IContextMenu3::HandleMenuMsg2 | | |
// | | |
// This function is called, if the client of IContextMenu is aware of | | |
// IContextMenu3 interface and receives a menu message while | | |
// it is calling TrackPopupMenu (in the window proc of hwnd): | | |
// | | |
| | |
#undef INTERFACE | | |
#define INTERFACE IContextMenu3 | | |
| | |
DECLARE_INTERFACE_(IContextMenu3, IContextMenu2) | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | |
| | |
// *** IContextMenu methods *** | | |
| | |
STDMETHOD(QueryContextMenu)(THIS_ | | |
HMENU hmenu, | | |
UINT indexMenu, | | |
UINT idCmdFirst, | | |
UINT idCmdLast, | | |
UINT uFlags) PURE; | | |
| | |
STDMETHOD(InvokeCommand)(THIS_ | | |
LPCMINVOKECOMMANDINFO lpici) PURE; | | |
| | |
STDMETHOD(GetCommandString)(THIS_ | | |
UINT_PTR idCmd, | | |
UINT uType, | | |
UINT * pwReserved, | | |
LPSTR pszName, | | |
UINT cchMax) PURE; | | |
| | |
// *** IContextMenu2 methods *** | | |
| | |
STDMETHOD(HandleMenuMsg)(THIS_ | | |
UINT uMsg, | | |
WPARAM wParam, | | |
LPARAM lParam) PURE; | | |
| | |
// *** IContextMenu3 methods *** | | |
| | |
STDMETHOD(HandleMenuMsg2)(THIS_ | | |
UINT uMsg, | | |
WPARAM wParam, | | |
LPARAM lParam, | | |
LRESULT* plResult) PURE; | | |
}; | | |
| | |
typedef IContextMenu3 * LPCONTEXTMENU3; | | |
| | |
#if (_WIN32_IE >= 0x0500) | | |
#undef INTERFACE | | |
#define INTERFACE IPersistFolder3 | | |
| | |
#define CSIDL_FLAG_PFTI_TRACKTARGET CSIDL_FLAG_DONT_VERIFY | | |
| | |
// DESCRIPTION: PERSIST_FOLDER_TARGET_INFO | | |
// This stucture is used for Folder Shortcuts which allow the shell to | | |
// have a file system folder act like another area in the name space. | | |
// One of pidlTargetFolder, szTargetParsingName, or csidl needs to | | |
// specify the destination name space. | | |
// | | |
// pidlTargetFolder: This is a full pidl to the target folder. Can be NULL in t | | |
he IPersistFolder3::InitializeEx() | | |
// call but not in the GetFolderTargetInfo() return structure. | | |
// szTargetParsingName: Empty string if not specified. Ortherwise, it is the par | | |
sible name | | |
// to the target. This name can be parsed by IShellFolder | | |
:: | | |
// ParsedName() from the desktop. | | |
// szNetworkProvider: Can be an empty string. If not empty, it specifies the ty | | |
pe of network | | |
// provider that will be used when binding to the target. Th | | |
is is used | | |
// for performance optimizations for the WNet APIs. | | |
// dwAttributes: -1 if not known. These are the SFGAO_ flags for IShellFolder:: | | |
GetAttributesOf() | | |
// csidl: This is -1 if it's not used. This can be used instead of pidlTargetFo | | |
lder or | | |
// szTargetParsingName to indicate the TargetFolder. See the list of CSI | | |
DL_ folders | | |
// below. CSIDL_FLAG_PFTI_TRACKTARGET means that the IShellFolder's targ | | |
et folder | | |
// should change if the user changes the target of the underlying CSIDL v | | |
alue. | | |
// You can also pass CSIDL_FLAG_CREATE to indicate that the target folder | | |
// should be created if it does not exist. No other CSIDL_FLAG_* values | | |
are supported. | | |
| | |
#include <pshpack8.h> | | |
| | |
typedef struct | | |
{ | | |
LPITEMIDLIST pidlTargetFolder; // pidl for the folder we want | | |
to intiailize | | |
WCHAR szTargetParsingName[MAX_PATH]; // optional parsing name for t | | |
he target | | |
WCHAR szNetworkProvider[MAX_PATH]; // optional network provider | | |
DWORD dwAttributes; // optional FILE_ATTRIBUTES_ f | | |
lags (-1 if not used) | | |
int csidl; // optional folder index (SHGe | | |
tFolderPath()) -1 if not used | | |
} PERSIST_FOLDER_TARGET_INFO; | | |
| | |
#include <poppack.h> /* Return to byte packing */ | | |
| | |
// DESCRIPTION: IPersistFolder3 | | |
// This interface is implemented by an IShellFolder object that wants non-def | | |
ault | | |
// handling of Folder Shortcuts. In general, shell name space extensions should | | |
use | | |
// pidlRoot (the alias pidl) as their location in the name space and pass it to | | |
public | | |
// APIs, such as ShellExecute(). The one exception is that pidlTarget should be | | |
used | | |
// when sending ChangeNotifies or registering to listen for change notifies | | |
// (see SFVM_GETNOTIFY). | | |
// | | |
// InitializeEx: This method initializes an IShellFolder and specifies where | | |
// it is rooted in the name space. | | |
// pbc: May be NULL. | | |
// pidlRoot: This is the same parameter as IPersistFolder::Initialize(). Ca | | |
ller allocates | | |
// and frees this parameter. | | |
// ppfti: May be NULL, in which case this is the same as a call to IPersist | | |
Folder::Initialize(). | | |
// Otherwise this is a Folder Shortcut and this structure specifies | | |
the target | | |
// folder and it's attributes. | | |
// GetFolderTargetInfo: This is used by the caller to find information about | | |
// the folder shortcut. This structure may not be initialized by th | | |
e caller, | | |
// so the callee needs to initialize every member. The callee alloc | | |
ates | | |
// pidlTargetFolder and the caller will free it. Filling in pidlTar | | |
getFolder is | | |
// ALWAYS required. | | |
DECLARE_INTERFACE_(IPersistFolder3, IPersistFolder2) | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG,AddRef)(THIS) PURE; | | |
STDMETHOD_(ULONG,Release)(THIS) PURE; | | |
| | |
// *** IPersist methods *** | | |
STDMETHOD(GetClassID)(THIS_ LPCLSID lpClassID) PURE; | | |
| | |
// *** IPersistFolder methods *** | | |
STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST pidl) PURE; | | |
| | |
// *** IPersistFolder2 methods *** | | |
STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST *ppidl) PURE; | | |
| | |
// *** IPersistFolder3 methods *** | | |
STDMETHOD(InitializeEx)(THIS_ IBindCtx *pbc, LPCITEMIDLIST pidlRoot, const P | | |
ERSIST_FOLDER_TARGET_INFO *ppfti) PURE; | | |
STDMETHOD(GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO *ppfti) PURE | | |
; | | |
}; | | |
| | |
#endif | | |
| | |
// | | |
| | |
//=========================================================================== | | //=========================================================================== |
// | | // |
// IExtractIcon interface | | // IExtractIcon interface |
// | | // |
// This interface is used in two different places in the shell. | | // This interface is used in two different places in the shell. |
// | | // |
// Case-1: Icons of sub-folders for the scope-pane of the explorer. | | // Case-1: Icons of sub-folders for the scope-pane of the explorer. |
// | | // |
// It is used by the explorer to get the "icon location" of | | // It is used by the explorer to get the "icon location" of |
| | |
skipping to change at line 626 | | skipping to change at line 147 |
// Case-2: Extracting an icon image from a file | | // Case-2: Extracting an icon image from a file |
// | | // |
// It is used by the shell when it extracts an icon image | | // It is used by the shell when it extracts an icon image |
// from a file. When the shell is extracting an icon from a file, | | // from a file. When the shell is extracting an icon from a file, |
// it does following: | | // it does following: |
// (1) creates the icon extraction handler object (by getting its CLSID | | // (1) creates the icon extraction handler object (by getting its CLSID |
// under the {ProgID}\shell\ExtractIconHanler key and calling | | // under the {ProgID}\shell\ExtractIconHanler key and calling |
// CoCreateInstance requesting for IExtractIcon interface). | | // CoCreateInstance requesting for IExtractIcon interface). |
// (2) Calls IExtractIcon::GetIconLocation. | | // (2) Calls IExtractIcon::GetIconLocation. |
// (3) Then, calls IExtractIcon::ExtractIcon with the location/index pair. | | // (3) Then, calls IExtractIcon::ExtractIcon with the location/index pair. |
|
// (4) If (3) returns NOERROR, it uses the returned icon. | | // (4) If (3) returns S_OK, it uses the returned icon. |
// (5) Otherwise, it recursively calls this logic with new location | | // (5) Otherwise, it recursively calls this logic with new location |
// assuming that the location string contains a fully qualified path name. | | // assuming that the location string contains a fully qualified path name. |
// | | // |
// From extension programmer's point of view, there are only two cases | | // From extension programmer's point of view, there are only two cases |
// where they provide implementations of IExtractIcon: | | // where they provide implementations of IExtractIcon: |
// Case-1) providing explorer extensions (i.e., IShellFolder). | | // Case-1) providing explorer extensions (i.e., IShellFolder). |
// Case-2) providing per-instance icons for some types of files. | | // Case-2) providing per-instance icons for some types of files. |
// | | // |
// Because Case-1 is described above, we'll explain only Case-2 here. | | // Because Case-1 is described above, we'll explain only Case-2 here. |
// | | // |
| | |
skipping to change at line 671 | | skipping to change at line 192 |
// | | // |
// This function returns an icon location. | | // This function returns an icon location. |
// | | // |
// Parameters: | | // Parameters: |
// uFlags [in] -- Specifies if it is opened or not (GIL_OPENICON or 0) | | // uFlags [in] -- Specifies if it is opened or not (GIL_OPENICON or 0) |
// szIconFile [out] -- Specifies the string buffer buffer for a location name. | | // szIconFile [out] -- Specifies the string buffer buffer for a location name. |
// cchMax [in] -- Specifies the size of szIconFile (almost always MAX_PAT
H) | | // cchMax [in] -- Specifies the size of szIconFile (almost always MAX_PAT
H) |
// piIndex [out] -- Sepcifies the address of UINT for the index. | | // piIndex [out] -- Sepcifies the address of UINT for the index. |
// pwFlags [out] -- Returns GIL_* flags | | // pwFlags [out] -- Returns GIL_* flags |
// Returns: | | // Returns: |
|
// NOERROR, if it returns a valid location; S_FALSE, if the shell use a | | // S_OK, if it returns a valid location; S_FALSE, if the shell use a |
// default icon. | | // default icon. |
// | | // |
// Notes: The location may or may not be a path to a file. The caller can | | // Notes: The location may or may not be a path to a file. The caller can |
// not assume anything unless the subsequent Extract member call returns | | // not assume anything unless the subsequent Extract member call returns |
// S_FALSE. | | // S_FALSE. |
// | | // |
// if the returned location is not a path to a file, GIL_NOTFILENAME should | | // if the returned location is not a path to a file, GIL_NOTFILENAME should |
// be set in the returned flags. | | // be set in the returned flags. |
// | | // |
// IExtractIcon::Extract | | // IExtractIcon::Extract |
| | |
skipping to change at line 694 | | skipping to change at line 215 |
// | | // |
// Parameters: | | // Parameters: |
// pszFile [in] -- Specifies the icon location (typically a path to a file). | | // pszFile [in] -- Specifies the icon location (typically a path to a file). |
// nIconIndex [in] -- Specifies the icon index. | | // nIconIndex [in] -- Specifies the icon index. |
// phiconLarge [out] -- Specifies the HICON variable for large icon. | | // phiconLarge [out] -- Specifies the HICON variable for large icon. |
// phiconSmall [out] -- Specifies the HICON variable for small icon. | | // phiconSmall [out] -- Specifies the HICON variable for small icon. |
// nIconSize [in] -- Specifies the size icon required (size of large icon) | | // nIconSize [in] -- Specifies the size icon required (size of large icon) |
// LOWORD is the requested large icon size | | // LOWORD is the requested large icon size |
// HIWORD is the requested small icon size | | // HIWORD is the requested small icon size |
// Returns: | | // Returns: |
|
// NOERROR, if it extracted the from the file. | | // S_OK, if it extracted the from the file. |
// S_FALSE, if the caller should extract from the file specified in the | | // S_FALSE, if the caller should extract from the file specified in the |
// location. | | // location. |
// | | // |
//=========================================================================== | | //=========================================================================== |
| | |
// GetIconLocation() input flags | | // GetIconLocation() input flags |
| | |
|
#define GIL_OPENICON 0x0001 // allows containers to specify an "open" l | | #define GIL_OPENICON 0x0001 // allows containers to specify an " |
ook | | open" look |
#define GIL_FORSHELL 0x0002 // icon is to be displayed in a ShellFolder | | #define GIL_FORSHELL 0x0002 // icon is to be displayed in a Shel |
#define GIL_ASYNC 0x0020 // this is an async extract, return E_PENDI | | lFolder |
NG | | #define GIL_ASYNC 0x0020 // this is an async extract, return |
#define GIL_DEFAULTICON 0x0040 // get the default icon location if the fin | | E_PENDING |
al one takes too long to get | | #define GIL_DEFAULTICON 0x0040 // get the default icon location if |
#define GIL_FORSHORTCUT 0x0080 // the icon is for a shortcut to the object | | the final one takes too long to get |
| | #define GIL_FORSHORTCUT 0x0080 // the icon is for a shortcut to the |
| | object |
| | #define GIL_CHECKSHIELD 0x0200 // return GIL_SHIELD or GIL_FORCENOS |
| | HIELD, don't block if GIL_ASYNC is set |
| | |
// GetIconLocation() return flags | | // GetIconLocation() return flags |
| | |
|
#define GIL_SIMULATEDOC 0x0001 // simulate this document icon for this | | #define GIL_SIMULATEDOC 0x0001 // simulate this document icon for this |
#define GIL_PERINSTANCE 0x0002 // icons from this class are per instance ( | | #define GIL_PERINSTANCE 0x0002 // icons from this class are per instance |
each file has its own) | | (each file has its own) |
#define GIL_PERCLASS 0x0004 // icons from this class per class (shared | | #define GIL_PERCLASS 0x0004 // icons from this class per class (shared |
for all files of this type) | | for all files of this type) |
#define GIL_NOTFILENAME 0x0008 // location is not a filename, must call :: | | #define GIL_NOTFILENAME 0x0008 // location is not a filename, must call : |
ExtractIcon | | :ExtractIcon |
#define GIL_DONTCACHE 0x0010 // this icon should not be cached | | #define GIL_DONTCACHE 0x0010 // this icon should not be cached |
| | #define GIL_SHIELD 0x0200 // icon should be "stamped" with the LUA s |
| | hield |
| | #define GIL_FORCENOSHIELD 0x0400 // icon must *not* be "stamped" with the L |
| | UA shield |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IExtractIconA | | #define INTERFACE IExtractIconA |
| | |
|
DECLARE_INTERFACE_(IExtractIconA, IUnknown) // exic | | DECLARE_INTERFACE_IID_(IExtractIconA, IUnknown, "000214eb-0000-0000-c000-0000000
00046") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IExtractIcon methods *** | | // *** IExtractIcon methods *** |
STDMETHOD(GetIconLocation)(THIS_ | | STDMETHOD(GetIconLocation)(THIS_ |
|
UINT uFlags, | | UINT uFlags, |
LPSTR szIconFile, | | __out_ecount(cchMax) LPSTR szIconFile, |
UINT cchMax, | | UINT cchMax, |
int * piIndex, | | __out int * piIndex, |
UINT * pwFlags) PURE; | | __out UINT * pwFlags) PURE; |
| | |
STDMETHOD(Extract)(THIS_ | | STDMETHOD(Extract)(THIS_ |
|
LPCSTR pszFile, | | LPCSTR pszFile, |
UINT nIconIndex, | | UINT nIconIndex, |
HICON *phiconLarge, | | __out_opt HICON *phiconLarge, |
HICON *phiconSmall, | | __out_opt HICON *phiconSmall, |
UINT nIconSize) PURE; | | UINT nIconSize) PURE; |
}; | | }; |
| | |
typedef IExtractIconA * LPEXTRACTICONA; | | typedef IExtractIconA * LPEXTRACTICONA; |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IExtractIconW | | #define INTERFACE IExtractIconW |
| | |
|
DECLARE_INTERFACE_(IExtractIconW, IUnknown) // exic | | DECLARE_INTERFACE_IID_(IExtractIconW, IUnknown, "000214fa-0000-0000-c000-0000000
00046") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IExtractIcon methods *** | | // *** IExtractIcon methods *** |
STDMETHOD(GetIconLocation)(THIS_ | | STDMETHOD(GetIconLocation)(THIS_ |
|
UINT uFlags, | | UINT uFlags, |
LPWSTR szIconFile, | | __out_ecount(cchMax) LPWSTR pszIconFile, |
UINT cchMax, | | UINT cchMax, |
int * piIndex, | | __out int * piIndex, |
UINT * pwFlags) PURE; | | __out UINT * pwFlags) PURE; |
| | |
STDMETHOD(Extract)(THIS_ | | STDMETHOD(Extract)(THIS_ |
|
LPCWSTR pszFile, | | LPCWSTR pszFile, |
UINT nIconIndex, | | UINT nIconIndex, |
HICON *phiconLarge, | | __out_opt HICON *phiconLarge, |
HICON *phiconSmall, | | __out_opt HICON *phiconSmall, |
UINT nIconSize) PURE; | | UINT nIconSize) PURE; |
}; | | }; |
| | |
typedef IExtractIconW * LPEXTRACTICONW; | | typedef IExtractIconW * LPEXTRACTICONW; |
| | |
#ifdef UNICODE | | #ifdef UNICODE |
#define IExtractIcon IExtractIconW | | #define IExtractIcon IExtractIconW |
#define IExtractIconVtbl IExtractIconWVtbl | | #define IExtractIconVtbl IExtractIconWVtbl |
#define LPEXTRACTICON LPEXTRACTICONW | | #define LPEXTRACTICON LPEXTRACTICONW |
#else | | #else |
#define IExtractIcon IExtractIconA | | #define IExtractIcon IExtractIconA |
#define IExtractIconVtbl IExtractIconAVtbl | | #define IExtractIconVtbl IExtractIconAVtbl |
#define LPEXTRACTICON LPEXTRACTICONA | | #define LPEXTRACTICON LPEXTRACTICONA |
#endif | | #endif |
| | |
//=========================================================================== | | //=========================================================================== |
// | | // |
|
// IShellIcon Interface | | |
// | | |
// used to get a icon index for a IShellFolder object. | | |
// | | |
// this interface can be implemented by a IShellFolder, as a quick way to | | |
// return the icon for a object in the folder. | | |
// | | |
// a instance of this interface is only created once for the folder, unlike | | |
// IExtractIcon witch is created once for each object. | | |
// | | |
// if a ShellFolder does not implement this interface, the standard | | |
// GetUIObject(....IExtractIcon) method will be used to get a icon | | |
// for all objects. | | |
// | | |
// the following standard imagelist indexs can be returned: | | |
// | | |
// 0 document (blank page) (not associated) | | |
// 1 document (with stuff on the page) | | |
// 2 application (exe, com, bat) | | |
// 3 folder (plain) | | |
// 4 folder (open) | | |
// | | |
// IShellIcon:GetIconOf(pidl, flags, lpIconIndex) | | |
// | | |
// pidl object to get icon for. | | |
// flags GIL_* input flags (GIL_OPEN, ...) | | |
// lpIconIndex place to return icon index. | | |
// | | |
// returns: | | |
// NOERROR, if lpIconIndex contains the correct system imagelist index. | | |
// S_FALSE, if unable to get icon for this object, go through | | |
// GetUIObject, IExtractIcon, methods. | | |
// | | |
//=========================================================================== | | |
| | |
#undef INTERFACE | | |
#define INTERFACE IShellIcon | | |
| | |
DECLARE_INTERFACE_(IShellIcon, IUnknown) // shi | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | |
| | |
// *** IShellIcon methods *** | | |
STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST pidl, UINT flags, | | |
LPINT lpIconIndex) PURE; | | |
}; | | |
| | |
typedef IShellIcon *LPSHELLICON; | | |
| | |
//=========================================================================== | | |
// | | |
// IShellIconOverlayIdentifier | | // IShellIconOverlayIdentifier |
// | | // |
// Used to identify a file as a member of the group of files that have this spec
ific | | // Used to identify a file as a member of the group of files that have this spec
ific |
// icon overlay | | // icon overlay |
// | | // |
// Users can create new IconOverlayIdentifiers and place them in the following r
egistry | | // Users can create new IconOverlayIdentifiers and place them in the following r
egistry |
// location together with the Icon overlay image and their priority. | | // location together with the Icon overlay image and their priority. |
// HKEY_LOCAL_MACHINE "Software\\Microsoft\\Windows\\CurrentVersion\\ShellIconOv
erlayIdentifiers" | | // HKEY_LOCAL_MACHINE "Software\\Microsoft\\Windows\\CurrentVersion\\ShellIconOv
erlayIdentifiers" |
// | | // |
// The shell will enumerate through all IconOverlayIdentifiers at start, and pri
oritize | | // The shell will enumerate through all IconOverlayIdentifiers at start, and pri
oritize |
| | |
skipping to change at line 873 | | skipping to change at line 343 |
// dwFlags defined below | | // dwFlags defined below |
// | | // |
// IShellIconOverlayIdentifier::GetPriority(int * pIPriority) PURE; | | // IShellIconOverlayIdentifier::GetPriority(int * pIPriority) PURE; |
// pIPriority the priority of this Overlay Identifier | | // pIPriority the priority of this Overlay Identifier |
// | | // |
//=========================================================================== | | //=========================================================================== |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IShellIconOverlayIdentifier | | #define INTERFACE IShellIconOverlayIdentifier |
| | |
|
DECLARE_INTERFACE_(IShellIconOverlayIdentifier, IUnknown) | | DECLARE_INTERFACE_IID_(IShellIconOverlayIdentifier, IUnknown, "0c6c4200-c589-11d
0-999a-00c04fd655e1") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IShellIconOverlayIdentifier methods *** | | // *** IShellIconOverlayIdentifier methods *** |
STDMETHOD (IsMemberOf)(THIS_ LPCWSTR pwszPath, DWORD dwAttrib) PURE; | | STDMETHOD (IsMemberOf)(THIS_ LPCWSTR pwszPath, DWORD dwAttrib) PURE; |
|
STDMETHOD (GetOverlayInfo)(THIS_ LPWSTR pwszIconFile, int cchMax, int * pInd | | STDMETHOD (GetOverlayInfo)(THIS_ __out_ecount(cchMax) LPWSTR pwszIconFile, i |
ex, DWORD * pdwFlags) PURE; | | nt cchMax, __out int * pIndex, __out DWORD * pdwFlags) PURE; |
STDMETHOD (GetPriority)(THIS_ int * pIPriority) PURE; | | STDMETHOD (GetPriority)(THIS_ __out int * pIPriority) PURE; |
}; | | }; |
| | |
#define ISIOI_ICONFILE 0x00000001 // path is returned throug
h pwszIconFile | | #define ISIOI_ICONFILE 0x00000001 // path is returned throug
h pwszIconFile |
#define ISIOI_ICONINDEX 0x00000002 // icon index in pwszIconF
ile is returned through pIndex | | #define ISIOI_ICONINDEX 0x00000002 // icon index in pwszIconF
ile is returned through pIndex |
| | |
//=========================================================================== | | //=========================================================================== |
// | | // |
// IShellIconOverlayManager | | // IShellIconOverlayManager |
// | | // |
// Used to return the icon overlay information including OverlayIndex, Image Ind
ex or Priority for an IShellFolder object. | | // Used to return the icon overlay information including OverlayIndex, Image Ind
ex or Priority for an IShellFolder object. |
| | |
skipping to change at line 919 | | skipping to change at line 389 |
// It will reload the icons into the imagelist, when passed SIOM_ICONINDEX | | // It will reload the icons into the imagelist, when passed SIOM_ICONINDEX |
// IShellIconOverlayManager::LoadNonloadedOverlayIdentifiers() | | // IShellIconOverlayManager::LoadNonloadedOverlayIdentifiers() |
// This method loads any registered overlay identifiers (handlers) that | | // This method loads any registered overlay identifiers (handlers) that |
// are not currently loaded. | | // are not currently loaded. |
// IShellIconOverlayManager::OverlayIndexFromImageIndex(int iImage, int *piIndex
, BOOL fAdd) | | // IShellIconOverlayManager::OverlayIndexFromImageIndex(int iImage, int *piIndex
, BOOL fAdd) |
// iImage existing shell image list index to look for | | // iImage existing shell image list index to look for |
// piIndex returned overlay index | | // piIndex returned overlay index |
// fAdd Add image if not already present? | | // fAdd Add image if not already present? |
//=========================================================================== | | //=========================================================================== |
| | |
|
#if (_WIN32_IE >= 0x0601) | | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IShellIconOverlayManager | | #define INTERFACE IShellIconOverlayManager |
| | |
|
DECLARE_INTERFACE_(IShellIconOverlayManager, IUnknown) | | DECLARE_INTERFACE_IID_(IShellIconOverlayManager, IUnknown, "f10b5e34-dd3b-42a7-a
a7d-2f4ec54bb09b") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IShellIconOverlayManager methods *** | | // *** IShellIconOverlayManager methods *** |
|
STDMETHOD(GetFileOverlayInfo)(THIS_ LPCWSTR pwszPath, DWORD dwAttrib, int * | | STDMETHOD(GetFileOverlayInfo)(THIS_ __in LPCWSTR pwszPath, DWORD dwAttrib, _ |
pIndex, DWORD dwflags) PURE; | | _out int * pIndex, DWORD dwflags) PURE; |
STDMETHOD(GetReservedOverlayInfo)(THIS_ LPCWSTR pwszPath, DWORD dwAttrib, in | | STDMETHOD(GetReservedOverlayInfo)(THIS_ __in_opt LPCWSTR pwszPath, DWORD dwA |
t * pIndex, DWORD dwflags, int iReservedID) PURE; | | ttrib, __out int * pIndex, DWORD dwflags, int iReservedID) PURE; |
STDMETHOD(RefreshOverlayImages)(THIS_ DWORD dwFlags) PURE; | | STDMETHOD(RefreshOverlayImages)(THIS_ DWORD dwFlags) PURE; |
STDMETHOD(LoadNonloadedOverlayIdentifiers)(THIS) PURE; | | STDMETHOD(LoadNonloadedOverlayIdentifiers)(THIS) PURE; |
|
STDMETHOD(OverlayIndexFromImageIndex)(THIS_ int iImage, int * piIndex, BOOL
fAdd) PURE; | | STDMETHOD(OverlayIndexFromImageIndex)(THIS_ int iImage, __out int * piIndex,
BOOL fAdd) PURE; |
}; | | }; |
|
| | |
#define SIOM_OVERLAYINDEX 1 | | #define SIOM_OVERLAYINDEX 1 |
#define SIOM_ICONINDEX 2 | | #define SIOM_ICONINDEX 2 |
// #define SIOM_PRIORITY 3 | | // #define SIOM_PRIORITY 3 |
#define SIOM_RESERVED_SHARED 0 | | #define SIOM_RESERVED_SHARED 0 |
#define SIOM_RESERVED_LINK 1 | | #define SIOM_RESERVED_LINK 1 |
#define SIOM_RESERVED_SLOWFILE 2 | | #define SIOM_RESERVED_SLOWFILE 2 |
|
#endif // (_WIN32_IE >= 0x0601) | | |
| | |
//=========================================================================== | | //=========================================================================== |
// | | // |
// IShellIconOverlay | | // IShellIconOverlay |
// | | // |
// Used to return the icon overlay index or its icon index for an IShellFolder o
bject, | | // Used to return the icon overlay index or its icon index for an IShellFolder o
bject, |
// this is always implemented with IShellFolder | | // this is always implemented with IShellFolder |
// | | // |
// IShellIconOverlay:GetOverlayIndex(LPCITEMIDLIST pidl, DWORD * pdwIndex) | | // IShellIconOverlay:GetOverlayIndex(LPCITEMIDLIST pidl, DWORD * pdwIndex) |
// pidl object to identify icon overlay for. | | // pidl object to identify icon overlay for. |
| | |
skipping to change at line 971 | | skipping to change at line 440 |
// returns: | | // returns: |
// S_OK, if the index of an Overlay is found | | // S_OK, if the index of an Overlay is found |
// S_FALSE, if no Overlay exists for this file | | // S_FALSE, if no Overlay exists for this file |
// E_FAIL, if pidl is bad | | // E_FAIL, if pidl is bad |
// | | // |
//=========================================================================== | | //=========================================================================== |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IShellIconOverlay | | #define INTERFACE IShellIconOverlay |
| | |
|
DECLARE_INTERFACE_(IShellIconOverlay, IUnknown) | | DECLARE_INTERFACE_IID_(IShellIconOverlay, IUnknown, "7d688a70-c613-11d0-999b-00c
04fd655e1") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IShellIconOverlay methods *** | | // *** IShellIconOverlay methods *** |
|
STDMETHOD(GetOverlayIndex)(THIS_ LPCITEMIDLIST pidl, int * pIndex) PURE; | | STDMETHOD(GetOverlayIndex)(THIS_ PCUITEMID_CHILD pidl, __inout int * pIndex) |
STDMETHOD(GetOverlayIconIndex)(THIS_ LPCITEMIDLIST pidl, int * pIconIndex) P | | PURE; |
URE; | | STDMETHOD(GetOverlayIconIndex)(THIS_ PCUITEMID_CHILD pidl, __inout int * pIc |
| | onIndex) PURE; |
}; | | }; |
| | |
|
| | #define OI_DEFAULT 0x00000000 |
#define OI_ASYNC 0xFFFFEEEE | | #define OI_ASYNC 0xFFFFEEEE |
| | |
//------------------------------------------------------------------------- | | //------------------------------------------------------------------------- |
// | | // |
// SHGetIconOverlayIndex | | // SHGetIconOverlayIndex |
// | | // |
// This function takes the path and icon/res id to the icon and convert it into | | // This function takes the path and icon/res id to the icon and convert it into |
// an overlay index in the system image list. | | // an overlay index in the system image list. |
// Note: there are totally only 15 slots for system image overlays, some of whic
h | | // Note: there are totally only 15 slots for system image overlays, some of whic
h |
// was reserved by the system, or taken by the overlayidentifiers, so it's possi
ble | | // was reserved by the system, or taken by the overlayidentifiers, so it's possi
ble |
| | |
skipping to change at line 1014 | | skipping to change at line 484 |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHGetIconOverlayIndex SHGetIconOverlayIndexW | | #define SHGetIconOverlayIndex SHGetIconOverlayIndexW |
#else | | #else |
#define SHGetIconOverlayIndex SHGetIconOverlayIndexA | | #define SHGetIconOverlayIndex SHGetIconOverlayIndexA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
#if (_WIN32_IE >= 0x0400) | | #if (_WIN32_IE >= 0x0400) |
| | |
// IShellLinkDataList::GetFlags()/SetFlags() | | // IShellLinkDataList::GetFlags()/SetFlags() |
typedef enum { | | typedef enum { |
|
SLDF_HAS_ID_LIST = 0x00000001, // Shell link saved with ID list | | SLDF_HAS_ID_LIST = 0x00000001, // Shell link sa |
SLDF_HAS_LINK_INFO = 0x00000002, // Shell link saved with LinkInfo | | ved with ID list |
SLDF_HAS_NAME = 0x00000004, | | SLDF_HAS_LINK_INFO = 0x00000002, // Shell link sa |
SLDF_HAS_RELPATH = 0x00000008, | | ved with LinkInfo |
SLDF_HAS_WORKINGDIR = 0x00000010, | | SLDF_HAS_NAME = 0x00000004, |
SLDF_HAS_ARGS = 0x00000020, | | SLDF_HAS_RELPATH = 0x00000008, |
SLDF_HAS_ICONLOCATION = 0x00000040, | | SLDF_HAS_WORKINGDIR = 0x00000010, |
SLDF_UNICODE = 0x00000080, // the strings are unicode | | SLDF_HAS_ARGS = 0x00000020, |
SLDF_FORCE_NO_LINKINFO = 0x00000100, // don't create a LINKINFO (make a d | | SLDF_HAS_ICONLOCATION = 0x00000040, |
umb link) | | SLDF_UNICODE = 0x00000080, // the strings a |
SLDF_HAS_EXP_SZ = 0x00000200, // the link contains expandable env | | re unicode |
strings | | SLDF_FORCE_NO_LINKINFO = 0x00000100, // disable LINKI |
SLDF_RUN_IN_SEPARATE = 0x00000400, // Run the 16-bit target exe in a se | | NFO tracking information (used to track network drives and compute UNC paths if |
parate VDM/WOW | | one exists) |
SLDF_HAS_LOGO3ID = 0x00000800, // this link is a special Logo3/MSIC | | SLDF_HAS_EXP_SZ = 0x00000200, // the link cont |
D link | | ains expandable env strings |
SLDF_HAS_DARWINID = 0x00001000, // this link is a special Darwin lin | | SLDF_RUN_IN_SEPARATE = 0x00000400, // Run the 16-bi |
k | | t target exe in a separate VDM/WOW |
SLDF_RUNAS_USER = 0x00002000, // Run this link as a different user | | #if (NTDDI_VERSION < NTDDI_LONGHORN) |
SLDF_HAS_EXP_ICON_SZ = 0x00004000, // contains expandable env string fo | | SLDF_HAS_LOGO3ID = 0x00000800, // not used anym |
r icon path | | ore |
SLDF_NO_PIDL_ALIAS = 0x00008000, // don't ever resolve to a logical l | | #endif |
ocation | | SLDF_HAS_DARWINID = 0x00001000, // MSI (Darwin) |
SLDF_FORCE_UNCNAME = 0x00010000, // make GetPath() prefer the UNC nam | | link that can be installed on demand |
e to the local name | | SLDF_RUNAS_USER = 0x00002000, // Run target as |
SLDF_RUN_WITH_SHIMLAYER = 0x00020000, // Launch the target of this link w/ | | a different user |
shim layer active | | SLDF_HAS_EXP_ICON_SZ = 0x00004000, // contains expa |
SLDF_RESERVED = 0x80000000, // Reserved-- so we can use the low | | ndable env string for icon path |
word as an index value in the future | | #if (NTDDI_VERSION >= NTDDI_WINXP) |
| | SLDF_NO_PIDL_ALIAS = 0x00008000, // disable IDLis |
| | t alias mapping when parsing the IDList from the path |
| | SLDF_FORCE_UNCNAME = 0x00010000, // make GetPath( |
| | ) prefer the UNC name to the local name |
| | SLDF_RUN_WITH_SHIMLAYER = 0x00020000, // activate targ |
| | et of this link with shim layer active |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | SLDF_FORCE_NO_LINKTRACK = 0x00040000, // disable Objec |
| | tID tracking information |
| | SLDF_ENABLE_TARGET_METADATA = 0x00080000, // enable cachin |
| | g of target metadata into link |
| | SLDF_DISABLE_KNOWNFOLDER_RELATIVE_TRACKING = 0x00200000, // disable Known |
| | Folder tracking information (EXP_KNOWN_FOLDER) |
| | SLDF_VALID = 0x003FF7FF, // bits that are |
| | valid for ::SetFlags() |
| | #endif |
| | SLDF_RESERVED = 0x80000000, // Reserved-- so |
| | we can use the low word as an index value in the future |
| | #endif |
} SHELL_LINK_DATA_FLAGS; | | } SHELL_LINK_DATA_FLAGS; |
| | |
|
| | #if !defined(__cplusplus) && defined(_MSC_VER) && (_MSC_VER >= 1200) |
| | #pragma warning(push) |
| | #pragma warning(disable:4201) /* nonstandard extension used : nameless struct/un |
| | ion */ |
| | #endif |
| | |
typedef struct tagDATABLOCKHEADER | | typedef struct tagDATABLOCKHEADER |
{ | | { |
DWORD cbSize; // Size of this extra data block | | DWORD cbSize; // Size of this extra data block |
DWORD dwSignature; // signature of this extra data block | | DWORD dwSignature; // signature of this extra data block |
} DATABLOCK_HEADER, *LPDATABLOCK_HEADER, *LPDBLIST; | | } DATABLOCK_HEADER, *LPDATABLOCK_HEADER, *LPDBLIST; |
| | |
typedef struct { | | typedef struct { |
#ifdef __cplusplus | | #ifdef __cplusplus |
DATABLOCK_HEADER dbh; | | DATABLOCK_HEADER dbh; |
#else | | #else |
| | |
skipping to change at line 1092 | | skipping to change at line 577 |
typedef struct { | | typedef struct { |
#ifdef __cplusplus | | #ifdef __cplusplus |
DATABLOCK_HEADER dbh; | | DATABLOCK_HEADER dbh; |
#else | | #else |
DATABLOCK_HEADER; | | DATABLOCK_HEADER; |
#endif | | #endif |
CHAR szDarwinID[MAX_PATH]; // ANSI darwin ID associated with link | | CHAR szDarwinID[MAX_PATH]; // ANSI darwin ID associated with link |
WCHAR szwDarwinID[MAX_PATH]; // UNICODE darwin ID associated with link | | WCHAR szwDarwinID[MAX_PATH]; // UNICODE darwin ID associated with link |
} EXP_DARWIN_LINK, *LPEXP_DARWIN_LINK; | | } EXP_DARWIN_LINK, *LPEXP_DARWIN_LINK; |
#define EXP_DARWIN_ID_SIG 0xA0000006 | | #define EXP_DARWIN_ID_SIG 0xA0000006 |
|
#define EXP_LOGO3_ID_SIG 0xA0000007 | | #endif |
| | |
| | #if !defined(__cplusplus) && defined(_MSC_VER) && (_MSC_VER >= 1200) |
| | #pragma warning(pop) |
#endif | | #endif |
| | |
#define EXP_SPECIAL_FOLDER_SIG 0xA0000005 // LPEXP_SPECIAL_FOLDER | | #define EXP_SPECIAL_FOLDER_SIG 0xA0000005 // LPEXP_SPECIAL_FOLDER |
| | |
typedef struct | | typedef struct |
{ | | { |
DWORD cbSize; // Size of this extra data block | | DWORD cbSize; // Size of this extra data block |
DWORD dwSignature; // signature of this extra data block | | DWORD dwSignature; // signature of this extra data block |
DWORD idSpecialFolder; // special folder id this link points into | | DWORD idSpecialFolder; // special folder id this link points into |
DWORD cbOffset; // ofset into pidl from SLDF_HAS_ID_LIST for
child | | DWORD cbOffset; // ofset into pidl from SLDF_HAS_ID_LIST for
child |
| | |
skipping to change at line 1115 | | skipping to change at line 603 |
typedef struct | | typedef struct |
{ | | { |
DWORD cbSize; // Size of this extra data block | | DWORD cbSize; // Size of this extra data block |
DWORD dwSignature; // signature of this extra data block | | DWORD dwSignature; // signature of this extra data block |
CHAR szTarget[ MAX_PATH ]; // ANSI target name w/EXP_SZ in it | | CHAR szTarget[ MAX_PATH ]; // ANSI target name w/EXP_SZ in it |
WCHAR swzTarget[ MAX_PATH ]; // UNICODE target name w/EXP_SZ in it | | WCHAR swzTarget[ MAX_PATH ]; // UNICODE target name w/EXP_SZ in it |
} EXP_SZ_LINK, *LPEXP_SZ_LINK; | | } EXP_SZ_LINK, *LPEXP_SZ_LINK; |
#define EXP_SZ_LINK_SIG 0xA0000001 // LPEXP_SZ_LINK (target) | | #define EXP_SZ_LINK_SIG 0xA0000001 // LPEXP_SZ_LINK (target) |
#define EXP_SZ_ICON_SIG 0xA0000007 // LPEXP_SZ_LINK (icon) | | #define EXP_SZ_ICON_SIG 0xA0000007 // LPEXP_SZ_LINK (icon) |
| | |
|
#undef INTERFACE | | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
#define INTERFACE IShellLinkDataList | | typedef struct |
| | |
DECLARE_INTERFACE_(IShellLinkDataList, IUnknown) | | |
{ | | { |
|
// *** IUnknown methods *** | | DWORD cbSize; // Size of this extra data block |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | DWORD dwSignature; // signature of this extra data block |
STDMETHOD_(ULONG, AddRef) (THIS) PURE; | | BYTE abPropertyStorage[1]; |
STDMETHOD_(ULONG, Release) (THIS) PURE; | | } EXP_PROPERTYSTORAGE; |
| | #define EXP_PROPERTYSTORAGE_SIG 0xA0000009 |
// *** IShellLinkDataList methods *** | | #endif |
STDMETHOD(AddDataBlock)(THIS_ void * pDataBlock) PURE; | | |
STDMETHOD(CopyDataBlock)(THIS_ DWORD dwSig, void **ppDataBlock) PURE; | | |
STDMETHOD(RemoveDataBlock)(THIS_ DWORD dwSig) PURE; | | |
STDMETHOD(GetFlags)(THIS_ DWORD *pdwFlags) PURE; | | |
STDMETHOD(SetFlags)(THIS_ DWORD dwFlags) PURE; | | |
}; | | |
| | |
#endif // (_WIN32_IE >= 0x0400) | | #endif // (_WIN32_IE >= 0x0400) |
| | |
|
#if (_WIN32_IE >= 0x0500) | | |
#undef INTERFACE | | |
#define INTERFACE IResolveShellLink | | |
| | |
DECLARE_INTERFACE_(IResolveShellLink, IUnknown) | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG, AddRef) (THIS) PURE; | | |
STDMETHOD_(ULONG, Release) (THIS) PURE; | | |
| | |
// *** IResolveShellLink methods *** | | |
STDMETHOD(ResolveShellLink)(THIS_ IUnknown* punk, HWND hwnd, DWORD fFlags) P | | |
URE; | | |
}; | | |
#endif // (_WIN32_IE >= 0x0500) | | |
| | |
#ifdef _INC_SHELLAPI /* for LPSHELLEXECUTEINFO */ | | #ifdef _INC_SHELLAPI /* for LPSHELLEXECUTEINFO */ |
//=========================================================================== | | //=========================================================================== |
// | | // |
// IShellExecuteHook Interface | | // IShellExecuteHook Interface |
// | | // |
//=========================================================================== | | //=========================================================================== |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IShellExecuteHookA | | #define INTERFACE IShellExecuteHookA |
| | |
|
DECLARE_INTERFACE_(IShellExecuteHookA, IUnknown) // shexhk | | DECLARE_INTERFACE_IID_(IShellExecuteHookA, IUnknown, "000214f5-0000-0000-c000-00
0000000046") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef) (THIS) PURE; | | STDMETHOD_(ULONG, AddRef) (THIS) PURE; |
STDMETHOD_(ULONG, Release) (THIS) PURE; | | STDMETHOD_(ULONG, Release) (THIS) PURE; |
| | |
// *** IShellExecuteHookA methods *** | | // *** IShellExecuteHookA methods *** |
|
STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA pei) PURE; | | STDMETHOD(Execute)(THIS_ __inout LPSHELLEXECUTEINFOA pei) PURE; |
}; | | }; |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IShellExecuteHookW | | #define INTERFACE IShellExecuteHookW |
| | |
|
DECLARE_INTERFACE_(IShellExecuteHookW, IUnknown) // shexhk | | DECLARE_INTERFACE_IID_(IShellExecuteHookW, IUnknown, "000214fb-0000-0000-c000-00
0000000046") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef) (THIS) PURE; | | STDMETHOD_(ULONG, AddRef) (THIS) PURE; |
STDMETHOD_(ULONG, Release) (THIS) PURE; | | STDMETHOD_(ULONG, Release) (THIS) PURE; |
| | |
// *** IShellExecuteHookW methods *** | | // *** IShellExecuteHookW methods *** |
|
STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW pei) PURE; | | STDMETHOD(Execute)(THIS_ __inout LPSHELLEXECUTEINFOW pei) PURE; |
}; | | }; |
| | |
#ifdef UNICODE | | #ifdef UNICODE |
#define IShellExecuteHook IShellExecuteHookW | | #define IShellExecuteHook IShellExecuteHookW |
#define IShellExecuteHookVtbl IShellExecuteHookWVtbl | | #define IShellExecuteHookVtbl IShellExecuteHookWVtbl |
#else | | #else |
#define IShellExecuteHook IShellExecuteHookA | | #define IShellExecuteHook IShellExecuteHookA |
#define IShellExecuteHookVtbl IShellExecuteHookAVtbl | | #define IShellExecuteHookVtbl IShellExecuteHookAVtbl |
#endif | | #endif |
#endif | | #endif |
| | |
//=========================================================================== | | //=========================================================================== |
// | | // |
// IURLSearchHook Interface | | // IURLSearchHook Interface |
// | | // |
//=========================================================================== | | //=========================================================================== |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IURLSearchHook | | #define INTERFACE IURLSearchHook |
| | |
|
DECLARE_INTERFACE_(IURLSearchHook, IUnknown) | | DECLARE_INTERFACE_IID_(IURLSearchHook, IUnknown, "ac60f6a0-0fd9-11d0-99cb-00c04f
d64497") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef) (THIS) PURE; | | STDMETHOD_(ULONG, AddRef) (THIS) PURE; |
STDMETHOD_(ULONG, Release) (THIS) PURE; | | STDMETHOD_(ULONG, Release) (THIS) PURE; |
| | |
// *** IURLSearchHook methods *** | | // *** IURLSearchHook methods *** |
|
STDMETHOD(Translate)(THIS_ LPWSTR lpwszSearchURL, DWORD cchBufferSize) PURE; | | STDMETHOD(Translate)(THIS_ __out_ecount(cchBufferSize) LPWSTR lpwszSearchURL
, DWORD cchBufferSize) PURE; |
}; | | }; |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE ISearchContext | | #define INTERFACE ISearchContext |
| | |
|
DECLARE_INTERFACE_(ISearchContext, IUnknown) | | DECLARE_INTERFACE_IID_(ISearchContext, IUnknown, "09F656A2-41AF-480C-88F7-16CC0D
164615") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef) (THIS) PURE; | | STDMETHOD_(ULONG, AddRef) (THIS) PURE; |
STDMETHOD_(ULONG, Release) (THIS) PURE; | | STDMETHOD_(ULONG, Release) (THIS) PURE; |
| | |
// *** ISearchContext methods *** | | // *** ISearchContext methods *** |
|
STDMETHOD(GetSearchUrl)(THIS_ BSTR * pbstrSearchUrl) PURE; | | STDMETHOD(GetSearchUrl)(THIS_ __out BSTR * pbstrSearchUrl) PURE; |
STDMETHOD(GetSearchText)(THIS_ BSTR * pbstrSearchText) PURE; | | STDMETHOD(GetSearchText)(THIS_ __out BSTR * pbstrSearchText) PURE; |
STDMETHOD(GetSearchStyle)(THIS_ DWORD * pdwSearchStyle) PURE; | | STDMETHOD(GetSearchStyle)(THIS_ __out DWORD * pdwSearchStyle) PURE; |
}; | | }; |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IURLSearchHook2 | | #define INTERFACE IURLSearchHook2 |
| | |
|
DECLARE_INTERFACE_(IURLSearchHook2, IURLSearchHook) | | DECLARE_INTERFACE_IID_(IURLSearchHook2, IURLSearchHook, "5ee44da4-6d32-46e3-86bc
-07540dedd0e0") |
{ | | { |
// *** IURLSearchHook2 methods *** | | // *** IURLSearchHook2 methods *** |
|
STDMETHOD(TranslateWithSearchContext)(THIS_ LPWSTR lpwszSearchURL, DWORD cch
BufferSize, ISearchContext * pSearchContext) PURE; | | STDMETHOD(TranslateWithSearchContext)(THIS_ __out_ecount(cchBufferSize) LPWS
TR lpwszSearchURL, DWORD cchBufferSize, __in_opt ISearchContext * pSearchContext
) PURE; |
}; | | }; |
| | |
//=========================================================================== | | //=========================================================================== |
// | | // |
// INewShortcutHook Interface | | // INewShortcutHook Interface |
// | | // |
//=========================================================================== | | //=========================================================================== |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE INewShortcutHookA | | #define INTERFACE INewShortcutHookA |
| | |
|
DECLARE_INTERFACE_(INewShortcutHookA, IUnknown) // nshhk | | DECLARE_INTERFACE_IID_(INewShortcutHookA, IUnknown, "000214e1-0000-0000-c000-000
000000046") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef) (THIS) PURE; | | STDMETHOD_(ULONG, AddRef) (THIS) PURE; |
STDMETHOD_(ULONG, Release) (THIS) PURE; | | STDMETHOD_(ULONG, Release) (THIS) PURE; |
| | |
// *** INewShortcutHook methods *** | | // *** INewShortcutHook methods *** |
STDMETHOD(SetReferent)(THIS_ LPCSTR pcszReferent, HWND hwnd) PURE; | | STDMETHOD(SetReferent)(THIS_ LPCSTR pcszReferent, HWND hwnd) PURE; |
|
STDMETHOD(GetReferent)(THIS_ LPSTR pszReferent, int cchReferent) PURE; | | STDMETHOD(GetReferent)(THIS_ __out_ecount(cchReferent) LPSTR pszReferent, in
t cchReferent) PURE; |
STDMETHOD(SetFolder)(THIS_ LPCSTR pcszFolder) PURE; | | STDMETHOD(SetFolder)(THIS_ LPCSTR pcszFolder) PURE; |
|
STDMETHOD(GetFolder)(THIS_ LPSTR pszFolder, int cchFolder) PURE; | | STDMETHOD(GetFolder)(THIS_ __out_ecount(cchFolder) LPSTR pszFolder, int cchF |
STDMETHOD(GetName)(THIS_ LPSTR pszName, int cchName) PURE; | | older) PURE; |
STDMETHOD(GetExtension)(THIS_ LPSTR pszExtension, int cchExtension) PURE; | | STDMETHOD(GetName)(THIS_ __out_ecount(cchName) LPSTR pszName, int cchName) P |
| | URE; |
| | STDMETHOD(GetExtension)(THIS_ __out_ecount(cchExtension) LPSTR pszExtension, |
| | int cchExtension) PURE; |
}; | | }; |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE INewShortcutHookW | | #define INTERFACE INewShortcutHookW |
| | |
|
DECLARE_INTERFACE_(INewShortcutHookW, IUnknown) // nshhk | | DECLARE_INTERFACE_IID_(INewShortcutHookW, IUnknown, "000214f7-0000-0000-c000-000
000000046") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef) (THIS) PURE; | | STDMETHOD_(ULONG, AddRef) (THIS) PURE; |
STDMETHOD_(ULONG, Release) (THIS) PURE; | | STDMETHOD_(ULONG, Release) (THIS) PURE; |
| | |
// *** INewShortcutHook methods *** | | // *** INewShortcutHook methods *** |
STDMETHOD(SetReferent)(THIS_ LPCWSTR pcszReferent, HWND hwnd) PURE; | | STDMETHOD(SetReferent)(THIS_ LPCWSTR pcszReferent, HWND hwnd) PURE; |
|
STDMETHOD(GetReferent)(THIS_ LPWSTR pszReferent, int cchReferent) PURE; | | STDMETHOD(GetReferent)(THIS_ __out_ecount(cchReferent) LPWSTR pszReferent, i
nt cchReferent) PURE; |
STDMETHOD(SetFolder)(THIS_ LPCWSTR pcszFolder) PURE; | | STDMETHOD(SetFolder)(THIS_ LPCWSTR pcszFolder) PURE; |
|
STDMETHOD(GetFolder)(THIS_ LPWSTR pszFolder, int cchFolder) PURE; | | STDMETHOD(GetFolder)(THIS_ __out_ecount(cchFolder) LPWSTR pszFolder, int cch |
STDMETHOD(GetName)(THIS_ LPWSTR pszName, int cchName) PURE; | | Folder) PURE; |
STDMETHOD(GetExtension)(THIS_ LPWSTR pszExtension, int cchExtension) PURE; | | STDMETHOD(GetName)(THIS_ __out_ecount(cchName) LPWSTR pszName, int cchName) |
| | PURE; |
| | STDMETHOD(GetExtension)(THIS_ __out_ecount(cchExtension) LPWSTR pszExtension |
| | , int cchExtension) PURE; |
}; | | }; |
| | |
#ifdef UNICODE | | #ifdef UNICODE |
#define INewShortcutHook INewShortcutHookW | | #define INewShortcutHook INewShortcutHookW |
#define INewShortcutHookVtbl INewShortcutHookWVtbl | | #define INewShortcutHookVtbl INewShortcutHookWVtbl |
#else | | #else |
#define INewShortcutHook INewShortcutHookA | | #define INewShortcutHook INewShortcutHookA |
#define INewShortcutHookVtbl INewShortcutHookAVtbl | | #define INewShortcutHookVtbl INewShortcutHookAVtbl |
#endif | | #endif |
| | |
| | |
skipping to change at line 1322 | | skipping to change at line 786 |
// wFunc - what operation is being done | | // wFunc - what operation is being done |
// wFlags - and flags (FOF_*) set in the initial call to the file operation | | // wFlags - and flags (FOF_*) set in the initial call to the file operation |
// pszSrcFile - name of the source file | | // pszSrcFile - name of the source file |
// dwSrcAttribs - file attributes of the source file | | // dwSrcAttribs - file attributes of the source file |
// pszDestFile - name of the destiation file (for move and renames) | | // pszDestFile - name of the destiation file (for move and renames) |
// dwDestAttribs - file attributes of the destination file | | // dwDestAttribs - file attributes of the destination file |
// | | // |
// | | // |
//=========================================================================== | | //=========================================================================== |
| | |
|
#ifndef FO_MOVE //these need to be kept in sync with the ones in shellapi.h | | |
| | |
// file operations | | |
| | |
#define FO_MOVE 0x0001 | | |
#define FO_COPY 0x0002 | | |
#define FO_DELETE 0x0003 | | |
#define FO_RENAME 0x0004 | | |
| | |
#define FOF_MULTIDESTFILES 0x0001 | | |
#define FOF_CONFIRMMOUSE 0x0002 | | |
#define FOF_SILENT 0x0004 // don't create progress/report | | |
#define FOF_RENAMEONCOLLISION 0x0008 | | |
#define FOF_NOCONFIRMATION 0x0010 // Don't prompt the user. | | |
#define FOF_WANTMAPPINGHANDLE 0x0020 // Fill in SHFILEOPSTRUCT.hNameMappin | | |
gs | | |
// Must be freed using SHFreeNameMappings | | |
#define FOF_ALLOWUNDO 0x0040 | | |
#define FOF_FILESONLY 0x0080 // on *.*, do only files | | |
#define FOF_SIMPLEPROGRESS 0x0100 // means don't show names of files | | |
#define FOF_NOCONFIRMMKDIR 0x0200 // don't confirm making any needed di | | |
rs | | |
#define FOF_NOERRORUI 0x0400 // don't put up error UI | | |
#define FOF_NOCOPYSECURITYATTRIBS 0x0800 // dont copy NT file Security Attribu | | |
tes | | |
#define FOF_NORECURSION 0x1000 // don't recurse into directories. | | |
#if (_WIN32_IE >= 0x500) | | |
#define FOF_NO_CONNECTED_ELEMENTS 0x2000 // don't operate on connected file el | | |
ements. | | |
#define FOF_WANTNUKEWARNING 0x4000 // during delete operation, warn if n | | |
uking instead of recycling (partially overrides FOF_NOCONFIRMATION) | | |
#endif // _WIN32_IE >= 0x500 | | |
#if (_WIN32_WINNT >= 0x0501) | | |
#define FOF_NORECURSEREPARSE 0x8000 // treat reparse points as objects, n | | |
ot containers | | |
#endif // (_WIN32_WINNT >= 0x501) | | |
| | |
typedef WORD FILEOP_FLAGS; | | |
| | |
// printer operations | | |
| | |
#define PO_DELETE 0x0013 // printer is being deleted | | |
#define PO_RENAME 0x0014 // printer is being renamed | | |
#define PO_PORTCHANGE 0x0020 // port this printer connected to is being chang | | |
ed | | |
// if this id is set, the strings received by | | |
// the copyhook are a doubly-null terminated | | |
// list of strings. The first is the printer | | |
// name and the second is the printer port. | | |
#define PO_REN_PORT 0x0034 // PO_RENAME and PO_PORTCHANGE at same time. | | |
| | |
// no POF_ flags currently defined | | |
| | |
typedef UINT PRINTEROP_FLAGS; | | |
| | |
#endif // FO_MOVE | | |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE ICopyHookA | | #define INTERFACE ICopyHookA |
| | |
|
DECLARE_INTERFACE_(ICopyHookA, IUnknown) // sl | | DECLARE_INTERFACE_IID_(ICopyHookA, IUnknown, "000214EF-0000-0000-c000-0000000000
46") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** ICopyHook methods *** | | // *** ICopyHook methods *** |
STDMETHOD_(UINT,CopyCallback) (THIS_ HWND hwnd, UINT wFunc, UINT wFlags, LPC
STR pszSrcFile, DWORD dwSrcAttribs, | | STDMETHOD_(UINT,CopyCallback) (THIS_ HWND hwnd, UINT wFunc, UINT wFlags, LPC
STR pszSrcFile, DWORD dwSrcAttribs, |
LPCSTR pszDestFile, DWORD dwDestAttribs) PURE
; | | LPCSTR pszDestFile, DWORD dwDestAttribs) PURE
; |
}; | | }; |
| | |
typedef ICopyHookA * LPCOPYHOOKA; | | typedef ICopyHookA * LPCOPYHOOKA; |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE ICopyHookW | | #define INTERFACE ICopyHookW |
| | |
|
DECLARE_INTERFACE_(ICopyHookW, IUnknown) // sl | | DECLARE_INTERFACE_IID_(ICopyHookW, IUnknown, "000214FC-0000-0000-c000-0000000000
46") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** ICopyHook methods *** | | // *** ICopyHook methods *** |
STDMETHOD_(UINT,CopyCallback) (THIS_ HWND hwnd, UINT wFunc, UINT wFlags, LPC
WSTR pszSrcFile, DWORD dwSrcAttribs, | | STDMETHOD_(UINT,CopyCallback) (THIS_ HWND hwnd, UINT wFunc, UINT wFlags, LPC
WSTR pszSrcFile, DWORD dwSrcAttribs, |
LPCWSTR pszDestFile, DWORD dwDestAttribs) PUR
E; | | LPCWSTR pszDestFile, DWORD dwDestAttribs) PUR
E; |
}; | | }; |
| | |
typedef ICopyHookW * LPCOPYHOOKW; | | typedef ICopyHookW * LPCOPYHOOKW; |
| | |
#ifdef UNICODE | | #ifdef UNICODE |
#define ICopyHook ICopyHookW | | #define ICopyHook ICopyHookW |
#define ICopyHookVtbl ICopyHookWVtbl | | #define ICopyHookVtbl ICopyHookWVtbl |
#define LPCOPYHOOK LPCOPYHOOKW | | #define LPCOPYHOOK LPCOPYHOOKW |
#else | | #else |
#define ICopyHook ICopyHookA | | #define ICopyHook ICopyHookA |
#define ICopyHookVtbl ICopyHookAVtbl | | #define ICopyHookVtbl ICopyHookAVtbl |
#define LPCOPYHOOK LPCOPYHOOKA | | #define LPCOPYHOOK LPCOPYHOOKA |
#endif | | #endif |
| | |
|
| | // IFileViewer, IFileViewerSite not supported as of win2k |
| | #if (NTDDI_VERSION < NTDDI_WIN2K) |
| | |
//=========================================================================== | | //=========================================================================== |
// | | // |
// IFileViewerSite Interface | | // IFileViewerSite Interface |
// | | // |
//=========================================================================== | | //=========================================================================== |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IFileViewerSite | | #define INTERFACE IFileViewerSite |
| | |
|
DECLARE_INTERFACE_(IFileViewerSite, IUnknown) | | DECLARE_INTERFACE_IID_(IFileViewerSite, IUnknown, "000214f3-0000-0000-c000-00000
0000046") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IFileViewerSite methods *** | | // *** IFileViewerSite methods *** |
STDMETHOD(SetPinnedWindow) (THIS_ HWND hwnd) PURE; | | STDMETHOD(SetPinnedWindow) (THIS_ HWND hwnd) PURE; |
|
STDMETHOD(GetPinnedWindow) (THIS_ HWND *phwnd) PURE; | | STDMETHOD(GetPinnedWindow) (THIS_ __out HWND *phwnd) PURE; |
}; | | }; |
| | |
typedef IFileViewerSite * LPFILEVIEWERSITE; | | typedef IFileViewerSite * LPFILEVIEWERSITE; |
| | |
//=========================================================================== | | //=========================================================================== |
// | | // |
// IFileViewer Interface | | // IFileViewer Interface |
// | | // |
// Implemented in a FileViewer component object. Used to tell a | | // Implemented in a FileViewer component object. Used to tell a |
// FileViewer to PrintTo or to view, the latter happening though | | // FileViewer to PrintTo or to view, the latter happening though |
| | |
skipping to change at line 1484 | | skipping to change at line 901 |
| | |
#define FVSIF_NEWFAILED 0x08000000 // The new file passed back failed | | #define FVSIF_NEWFAILED 0x08000000 // The new file passed back failed |
// to be viewed. | | // to be viewed. |
| | |
#define FVSIF_NEWFILE 0x80000000 // A new file to view has been returned | | #define FVSIF_NEWFILE 0x80000000 // A new file to view has been returned |
#define FVSIF_CANVIEWIT 0x40000000 // The viewer can view it. | | #define FVSIF_CANVIEWIT 0x40000000 // The viewer can view it. |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IFileViewerA | | #define INTERFACE IFileViewerA |
| | |
|
DECLARE_INTERFACE(IFileViewerA) | | DECLARE_INTERFACE_IID(IFileViewerA, "000214f0-0000-0000-c000-000000000046") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IFileViewer methods *** | | // *** IFileViewer methods *** |
|
STDMETHOD(ShowInitialize) (THIS_ LPFILEVIEWERSITE lpfsi) PURE; | | STDMETHOD(ShowInitialize) (THIS_ __in LPFILEVIEWERSITE lpfsi) PURE; |
STDMETHOD(Show) (THIS_ LPFVSHOWINFO pvsi) PURE; | | STDMETHOD(Show) (THIS_ __in LPFVSHOWINFO pvsi) PURE; |
STDMETHOD(PrintTo) (THIS_ LPSTR pszDriver, BOOL fSuppressUI) PURE; | | STDMETHOD(PrintTo) (THIS_ __in_opt LPSTR pszDriver, BOOL fSuppressUI) PURE; |
}; | | }; |
| | |
typedef IFileViewerA * LPFILEVIEWERA; | | typedef IFileViewerA * LPFILEVIEWERA; |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IFileViewerW | | #define INTERFACE IFileViewerW |
| | |
|
DECLARE_INTERFACE(IFileViewerW) | | DECLARE_INTERFACE_IID(IFileViewerW, "000214f8-0000-0000-c000-000000000046") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IFileViewer methods *** | | // *** IFileViewer methods *** |
|
STDMETHOD(ShowInitialize) (THIS_ LPFILEVIEWERSITE lpfsi) PURE; | | STDMETHOD(ShowInitialize) (THIS_ __in LPFILEVIEWERSITE lpfsi) PURE; |
STDMETHOD(Show) (THIS_ LPFVSHOWINFO pvsi) PURE; | | STDMETHOD(Show) (THIS_ __in LPFVSHOWINFO pvsi) PURE; |
STDMETHOD(PrintTo) (THIS_ LPWSTR pszDriver, BOOL fSuppressUI) PURE; | | STDMETHOD(PrintTo) (THIS_ __in_opt LPWSTR pszDriver, BOOL fSuppressUI) PURE; |
}; | | }; |
| | |
typedef IFileViewerW * LPFILEVIEWERW; | | typedef IFileViewerW * LPFILEVIEWERW; |
| | |
#ifdef UNICODE | | #ifdef UNICODE |
#define IFileViewer IFileViewerW | | #define IFileViewer IFileViewerW |
#define LPFILEVIEWER LPFILEVIEWERW | | #define LPFILEVIEWER LPFILEVIEWERW |
#else | | #else |
#define IFileViewer IFileViewerA | | #define IFileViewer IFileViewerA |
#define LPFILEVIEWER LPFILEVIEWERA | | #define LPFILEVIEWER LPFILEVIEWERA |
#endif | | #endif |
| | |
|
//========================================================================== | | // IFileViewer, IFileViewerSite not supported as of win2k |
// | | #endif // (NTDDI_VERSION < NTDDI_WIN2K) |
// IShellBrowser/IShellView/IShellFolder interface | | |
// | | |
// These three interfaces are used when the shell communicates with | | |
// name space extensions. The shell (explorer) provides IShellBrowser | | |
// interface, and extensions implements IShellFolder and IShellView | | |
// interfaces. | | |
// | | |
//========================================================================== | | |
| | |
//-------------------------------------------------------------------------- | | //-------------------------------------------------------------------------- |
// | | // |
// Command/menuitem IDs | | // Command/menuitem IDs |
// | | // |
// The explorer dispatches WM_COMMAND messages based on the range of | | // The explorer dispatches WM_COMMAND messages based on the range of |
// command/menuitem IDs. All the IDs of menuitems that the view (right | | // command/menuitem IDs. All the IDs of menuitems that the view (right |
// pane) inserts must be in FCIDM_SHVIEWFIRST/LAST (otherwise, the explorer | | // pane) inserts must be in FCIDM_SHVIEWFIRST/LAST (otherwise, the explorer |
// won't dispatch them). The view should not deal with any menuitems | | // won't dispatch them). The view should not deal with any menuitems |
// in FCIDM_BROWSERFIRST/LAST (otherwise, it won't work with the future | | // in FCIDM_BROWSERFIRST/LAST (otherwise, it won't work with the future |
| | |
skipping to change at line 1587 | | skipping to change at line 996 |
| | |
#define FCIDM_TOOLBAR (FCIDM_BROWSERFIRST + 0) | | #define FCIDM_TOOLBAR (FCIDM_BROWSERFIRST + 0) |
#define FCIDM_STATUS (FCIDM_BROWSERFIRST + 1) | | #define FCIDM_STATUS (FCIDM_BROWSERFIRST + 1) |
| | |
#if (_WIN32_IE >= 0x0400) | | #if (_WIN32_IE >= 0x0400) |
//-------------------------------------------------------------------------- | | //-------------------------------------------------------------------------- |
// | | // |
// The resource id of the offline cursor | | // The resource id of the offline cursor |
// This cursor is avaialble in shdocvw.dll | | // This cursor is avaialble in shdocvw.dll |
#define IDC_OFFLINE_HAND 103 | | #define IDC_OFFLINE_HAND 103 |
|
| | #if (_WIN32_IE >= _WIN32_IE_IE70) |
| | #define IDC_PANTOOL_HAND_OPEN 104 |
| | #define IDC_PANTOOL_HAND_CLOSED 105 |
| | #endif |
// | | // |
//-------------------------------------------------------------------------- | | //-------------------------------------------------------------------------- |
#endif | | #endif |
| | |
// SBCMDID_GETPANE - not necessarily in order | | // SBCMDID_GETPANE - not necessarily in order |
|
#define PANE_NONE -1 | | #define PANE_NONE ((DWORD)-1) |
#define PANE_ZONE 1 | | #define PANE_ZONE 1 |
#define PANE_OFFLINE 2 | | #define PANE_OFFLINE 2 |
#define PANE_PRINTER 3 | | #define PANE_PRINTER 3 |
#define PANE_SSL 4 | | #define PANE_SSL 4 |
#define PANE_NAVIGATION 5 | | #define PANE_NAVIGATION 5 |
#define PANE_PROGRESS 6 | | #define PANE_PROGRESS 6 |
|
| | #if (_WIN32_IE >= _WIN32_IE_IE60) |
#define PANE_PRIVACY 7 | | #define PANE_PRIVACY 7 |
|
| | #endif |
| | |
|
//------------------------------------------------------------------------- | | // SHGetPathFromIDListEx returns a win32 file system path for the item in the na |
// ICommDlgBrowser interface | | me space. |
// | | // and has a few special cases that include returning UNC printer names too! |
// ICommDlgBrowser interface is the interface that is provided by the new | | typedef enum tagGPFIDL_FLAGS |
// common dialog window to hook and modify the behavior of IShellView. When | | |
// a default view is created, it queries its parent IShellBrowser for the | | |
// ICommDlgBrowser interface. If supported, it calls out to that interface | | |
// in several cases that need to behave differently in a dialog. | | |
// | | |
// Member functions: | | |
// | | |
// ICommDlgBrowser::OnDefaultCommand() | | |
// Called when the user double-clicks in the view or presses Enter. The | | |
// browser should return S_OK if it processed the action itself, S_FALSE | | |
// to let the view perform the default action. | | |
// | | |
// ICommDlgBrowser::OnStateChange(ULONG uChange) | | |
// Called when some states in the view change. 'uChange' is one of the | | |
// CDBOSC_* values. This call is made after the state (selection, focus, | | |
// etc) has changed. There is no return value. | | |
// | | |
// ICommDlgBrowser::IncludeObject(LPCITEMIDLIST pidl) | | |
// Called when the view is enumerating objects. 'pidl' is a relative | | |
// IDLIST. The browser should return S_OK to include the object in the | | |
// view, S_FALSE to hide it | | |
// | | |
//------------------------------------------------------------------------- | | |
| | |
#define CDBOSC_SETFOCUS 0x00000000 | | |
#define CDBOSC_KILLFOCUS 0x00000001 | | |
#define CDBOSC_SELCHANGE 0x00000002 | | |
#define CDBOSC_RENAME 0x00000003 | | |
#define CDBOSC_STATECHANGE 0x00000004 | | |
| | |
#undef INTERFACE | | |
#define INTERFACE ICommDlgBrowser | | |
| | |
DECLARE_INTERFACE_(ICommDlgBrowser, IUnknown) | | |
{ | | { |
|
// *** IUnknown methods *** | | GPFIDL_DEFAULT = 0x0000, // normal Win32 file name, servers and driv |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | e roots included |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | GPFIDL_ALTNAME = 0x0001, // short file name |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | GPFIDL_UNCPRINTER = 0x0002, // include UNC printer names too (non file |
| | system item) |
// *** ICommDlgBrowser methods *** | | |
STDMETHOD(OnDefaultCommand) (THIS_ struct IShellView * ppshv) PURE; | | |
STDMETHOD(OnStateChange) (THIS_ struct IShellView * ppshv, | | |
ULONG uChange) PURE; | | |
STDMETHOD(IncludeObject) (THIS_ struct IShellView * ppshv, | | |
LPCITEMIDLIST pidl) PURE; | | |
}; | | }; |
|
| | typedef int GPFIDL_FLAGS; |
typedef ICommDlgBrowser * LPCOMMDLGBROWSER; | | SHSTDAPI_(BOOL) SHGetPathFromIDListEx(__in PCIDLIST_ABSOLUTE pidl, __out_ecount( |
| | cchPath) PWSTR pszPath, __in DWORD cchPath, __in GPFIDL_FLAGS uOpts); |
//------------------------------------------------------------------------- | | |
// ICommDlgBrowser2 interface | | |
// | | |
// Member functions: | | |
// | | |
// ICommDlgBrowser2::Notify(IShellView *pshv, DWORD dwNotfyType) | | |
// Called when the view is wants to notify common dialog when an event | | |
// occurrs. | | |
// | | |
// CDB2N_CONTEXTMENU_START indicates the context menu has started. | | |
// CDB2N_CONTEXTMENU_DONE indicates the context menu has completed. | | |
// | | |
// ICommDlgBrowser2::GetDefaultMenuText(IShellView *pshv, | | |
// WCHAR *pszText, INT cchMax) | | |
// Called when the view wants to get the default context menu text. | | |
// pszText points to buffer and cchMax specifies the size of the | | |
// buffer in characters. The browser on return has filled the buffer | | |
// with the default context menu text. The Shell will call this method | | |
// with at least a buffer size of MAX_PATH. The browser should return | | |
// S_OK if it returned a new default menu text, S_FALSE to let the view | | |
// to use the normal default menu text. | | |
// | | // |
|
// ICommDlgBrowser2::GetViewFlags(DWORD *pdwFlags) | | // SHGetPathFromIDListW is the old version of SHGetPathFromIDListEx that assumes |
// Called when the view wants to determine if special customization needs t | | the size of the buffer (MAX_PATH). |
o | | // The pidl should point to a file system object. |
// be done for the common dialog browser. For example View calls this functio | | SHSTDAPI_(BOOL) SHGetPathFromIDListA(PCIDLIST_ABSOLUTE pidl, __out_ecount(MAX_PA |
n to | | TH) LPSTR pszPath); |
// determin if all files(hidden and system)needs to be shown. If the GetViewF | | |
lags returns a DWORD with | | |
// CDB2GVF_SHOWALLFILES flag set then it will show all the files. | | |
//------------------------------------------------------------------------- | | |
| | |
#define CDB2N_CONTEXTMENU_DONE 0x00000001 | | |
#define CDB2N_CONTEXTMENU_START 0x00000002 | | |
| | |
//GetViewFlags | | |
#define CDB2GVF_SHOWALLFILES 0x00000001 | | |
| | |
#undef INTERFACE | | |
#define INTERFACE ICommDlgBrowser2 | | |
| | |
DECLARE_INTERFACE_(ICommDlgBrowser2, IUnknown) | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | |
| | |
// *** ICommDlgBrowser methods *** | | |
STDMETHOD(OnDefaultCommand) (THIS_ struct IShellView * ppshv) PURE; | | |
STDMETHOD(OnStateChange) (THIS_ struct IShellView * ppshv, | | |
ULONG uChange) PURE; | | |
STDMETHOD(IncludeObject) (THIS_ struct IShellView * ppshv, | | |
LPCITEMIDLIST pidl) PURE; | | |
| | |
// *** ICommDlgBrowser2 methods *** | | |
STDMETHOD(Notify) (THIS_ struct IShellView * ppshv, | | |
DWORD dwNotifyType) PURE; | | |
STDMETHOD(GetDefaultMenuText) (THIS_ struct IShellView * ppshv, | | |
WCHAR *pszText, INT cchMax) PURE; | | |
STDMETHOD(GetViewFlags)(THIS_ DWORD *pdwFlags) PURE; | | |
| | |
}; | | |
| | |
typedef ICommDlgBrowser2 * LPCOMMDLGBROWSER2; | | |
| | |
// | | // |
|
// function assumes the size of the buffer (MAX_PATH). The pidl | | // SHGetPathFromIDListW is the old version of SHGetPathFromIDListEx that assumes |
// should point to a file system object. | | the size of the buffer (MAX_PATH). |
| | // The pidl should point to a file system object. |
SHSTDAPI_(BOOL) SHGetPathFromIDListA(LPCITEMIDLIST pidl, LPSTR pszPath); | | SHSTDAPI_(BOOL) SHGetPathFromIDListW(PCIDLIST_ABSOLUTE pidl, __out_ecount(MAX_PA |
SHSTDAPI_(BOOL) SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath); | | TH) LPWSTR pszPath); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHGetPathFromIDList SHGetPathFromIDListW | | #define SHGetPathFromIDList SHGetPathFromIDListW |
#else | | #else |
#define SHGetPathFromIDList SHGetPathFromIDListA | | #define SHGetPathFromIDList SHGetPathFromIDListA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
|
#if (_WIN32_IE >= 0x0601) | | |
SHSTDAPI_(int) SHCreateDirectory(HWND hwnd, LPCWSTR pszPath); | | SHSTDAPI_(int) SHCreateDirectory(HWND hwnd, LPCWSTR pszPath); |
|
#endif // (_WIN32_IE >= 0x0601) | | SHSTDAPI_(int) SHCreateDirectoryExA(HWND hwnd, LPCSTR pszPath, const SECURITY_AT |
SHSTDAPI_(int) SHCreateDirectoryExA(HWND hwnd, LPCSTR pszPath, SECURITY_ATTRIBUT | | TRIBUTES *psa); |
ES *psa); | | SHSTDAPI_(int) SHCreateDirectoryExW(HWND hwnd, LPCWSTR pszPath, const SECURITY_A |
SHSTDAPI_(int) SHCreateDirectoryExW(HWND hwnd, LPCWSTR pszPath, SECURITY_ATTRIBU | | TTRIBUTES *psa); |
TES *psa); | | |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHCreateDirectoryEx SHCreateDirectoryExW | | #define SHCreateDirectoryEx SHCreateDirectoryExW |
#else | | #else |
#define SHCreateDirectoryEx SHCreateDirectoryExA | | #define SHCreateDirectoryEx SHCreateDirectoryExA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
|
SHSTDAPI SHOpenFolderAndSelectItems(LPCITEMIDLIST pidlFolder, UINT cidl, LPCITEM | | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
IDLIST *apidl, DWORD dwFlags); | | #define OFASI_EDIT 0x0001 |
| | #define OFASI_OPENDESKTOP 0x0002 |
| | #endif |
| | |
|
#if (_WIN32_IE >= 0x0601) | | #if (NTDDI_VERSION >= NTDDI_WINXP) |
SHSTDAPI SHCreateShellItem(LPCITEMIDLIST pidlParent, IShellFolder *psfParent, LP | | |
CITEMIDLIST pidl, IShellItem **ppsi); | | SHSTDAPI SHOpenFolderAndSelectItems(PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, __i |
#endif // (_WIN32_IE >= 0x0601) | | n_ecount_opt(cidl) PCUITEMID_CHILD_ARRAY apidl, DWORD dwFlags); |
| | |
| | // deprecated because of parameter ambiguity |
| | // call SHCreateItemWithParent() or SHCreateItemFromIDList() instead |
| | SHSTDAPI SHCreateShellItem(__in_opt PCIDLIST_ABSOLUTE pidlParent, __in_opt IShel |
| | lFolder *psfParent, __in PCUITEMID_CHILD pidl, __out IShellItem **ppsi); |
| | |
| | #endif |
| | |
|
//------------------------------------------------------------------------- | | |
// | | // |
// SHGetSpecialFolderLocation | | // SHGetSpecialFolderLocation |
// | | // |
// Caller should use SHGetMalloc to obtain an allocator that can free the pidl | | // Caller should use SHGetMalloc to obtain an allocator that can free the pidl |
// | | // |
|
// | | |
//------------------------------------------------------------------------- | | |
// | | |
// registry entries for special paths are kept in : | | // registry entries for special paths are kept in : |
|
#define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT("\\Shell Folder
s") | | #define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT("\\Shell Folde
rs") |
| | |
#define CSIDL_DESKTOP 0x0000 // <desktop> | | #define CSIDL_DESKTOP 0x0000 // <desktop> |
#define CSIDL_INTERNET 0x0001 // Internet Explorer (icon
on desktop) | | #define CSIDL_INTERNET 0x0001 // Internet Explorer (icon
on desktop) |
#define CSIDL_PROGRAMS 0x0002 // Start Menu\Programs | | #define CSIDL_PROGRAMS 0x0002 // Start Menu\Programs |
#define CSIDL_CONTROLS 0x0003 // My Computer\Control Pan
el | | #define CSIDL_CONTROLS 0x0003 // My Computer\Control Pan
el |
#define CSIDL_PRINTERS 0x0004 // My Computer\Printers | | #define CSIDL_PRINTERS 0x0004 // My Computer\Printers |
#define CSIDL_PERSONAL 0x0005 // My Documents | | #define CSIDL_PERSONAL 0x0005 // My Documents |
#define CSIDL_FAVORITES 0x0006 // <user name>\Favorites | | #define CSIDL_FAVORITES 0x0006 // <user name>\Favorites |
#define CSIDL_STARTUP 0x0007 // Start Menu\Programs\Sta
rtup | | #define CSIDL_STARTUP 0x0007 // Start Menu\Programs\Sta
rtup |
#define CSIDL_RECENT 0x0008 // <user name>\Recent | | #define CSIDL_RECENT 0x0008 // <user name>\Recent |
#define CSIDL_SENDTO 0x0009 // <user name>\SendTo | | #define CSIDL_SENDTO 0x0009 // <user name>\SendTo |
#define CSIDL_BITBUCKET 0x000a // <desktop>\Recycle Bin | | #define CSIDL_BITBUCKET 0x000a // <desktop>\Recycle Bin |
#define CSIDL_STARTMENU 0x000b // <user name>\Start Menu | | #define CSIDL_STARTMENU 0x000b // <user name>\Start Menu |
|
#define CSIDL_MYDOCUMENTS 0x000c // logical "My Documents"
desktop icon | | #define CSIDL_MYDOCUMENTS CSIDL_PERSONAL // Personal was just a s
illy name for My Documents |
#define CSIDL_MYMUSIC 0x000d // "My Music" folder | | #define CSIDL_MYMUSIC 0x000d // "My Music" folder |
#define CSIDL_MYVIDEO 0x000e // "My Videos" folder | | #define CSIDL_MYVIDEO 0x000e // "My Videos" folder |
#define CSIDL_DESKTOPDIRECTORY 0x0010 // <user name>\Desktop | | #define CSIDL_DESKTOPDIRECTORY 0x0010 // <user name>\Desktop |
#define CSIDL_DRIVES 0x0011 // My Computer | | #define CSIDL_DRIVES 0x0011 // My Computer |
#define CSIDL_NETWORK 0x0012 // Network Neighborhood (M
y Network Places) | | #define CSIDL_NETWORK 0x0012 // Network Neighborhood (M
y Network Places) |
#define CSIDL_NETHOOD 0x0013 // <user name>\nethood | | #define CSIDL_NETHOOD 0x0013 // <user name>\nethood |
#define CSIDL_FONTS 0x0014 // windows\fonts | | #define CSIDL_FONTS 0x0014 // windows\fonts |
#define CSIDL_TEMPLATES 0x0015 | | #define CSIDL_TEMPLATES 0x0015 |
#define CSIDL_COMMON_STARTMENU 0x0016 // All Users\Start Menu | | #define CSIDL_COMMON_STARTMENU 0x0016 // All Users\Start Menu |
#define CSIDL_COMMON_PROGRAMS 0X0017 // All Users\Start Menu\Pr
ograms | | #define CSIDL_COMMON_PROGRAMS 0X0017 // All Users\Start Menu\Pr
ograms |
| | |
skipping to change at line 1843 | | skipping to change at line 1156 |
#define CSIDL_COMMON_OEM_LINKS 0x003a // Links to All Users OEM
specific apps | | #define CSIDL_COMMON_OEM_LINKS 0x003a // Links to All Users OEM
specific apps |
#define CSIDL_CDBURN_AREA 0x003b // USERPROFILE\Local Setti
ngs\Application Data\Microsoft\CD Burning | | #define CSIDL_CDBURN_AREA 0x003b // USERPROFILE\Local Setti
ngs\Application Data\Microsoft\CD Burning |
// unused 0x003c | | // unused 0x003c |
#define CSIDL_COMPUTERSNEARME 0x003d // Computers Near Me (comp
utered from Workgroup membership) | | #define CSIDL_COMPUTERSNEARME 0x003d // Computers Near Me (comp
utered from Workgroup membership) |
| | |
#ifndef _SHFOLDER_H_ | | #ifndef _SHFOLDER_H_ |
#define CSIDL_FLAG_CREATE 0x8000 // combine with CSIDL_ val
ue to force folder creation in SHGetFolderPath() | | #define CSIDL_FLAG_CREATE 0x8000 // combine with CSIDL_ val
ue to force folder creation in SHGetFolderPath() |
#endif // _SHFOLDER_H_ | | #endif // _SHFOLDER_H_ |
| | |
#define CSIDL_FLAG_DONT_VERIFY 0x4000 // combine with CSIDL_ val
ue to return an unverified folder path | | #define CSIDL_FLAG_DONT_VERIFY 0x4000 // combine with CSIDL_ val
ue to return an unverified folder path |
|
| | #define CSIDL_FLAG_DONT_UNEXPAND 0x2000 // combine with CSIDL_ val |
| | ue to avoid unexpanding environment variables |
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
#define CSIDL_FLAG_NO_ALIAS 0x1000 // combine with CSIDL_ val
ue to insure non-alias versions of the pidl | | #define CSIDL_FLAG_NO_ALIAS 0x1000 // combine with CSIDL_ val
ue to insure non-alias versions of the pidl |
#define CSIDL_FLAG_PER_USER_INIT 0x0800 // combine with CSIDL_ val
ue to indicate per-user init (eg. upgrade) | | #define CSIDL_FLAG_PER_USER_INIT 0x0800 // combine with CSIDL_ val
ue to indicate per-user init (eg. upgrade) |
|
| | #endif // NTDDI_WINXP |
#define CSIDL_FLAG_MASK 0xFF00 // mask for all possible f
lag values | | #define CSIDL_FLAG_MASK 0xFF00 // mask for all possible f
lag values |
| | |
|
SHSTDAPI SHGetSpecialFolderLocation(HWND hwnd, int csidl, LPITEMIDLIST *ppidl); | | SHSTDAPI SHGetSpecialFolderLocation(HWND hwnd, int csidl, __out PIDLIST_ABSOLUTE |
| | *ppidl); |
#if (_WIN32_IE >= 0x0400) | | |
SHSTDAPI_(void) SHFlushSFCache(void); | | |
SHSTDAPI_(LPITEMIDLIST) SHCloneSpecialIDList(HWND hwnd, int csidl, BOOL fCreate) | | |
; | | |
| | |
|
SHSTDAPI_(BOOL) SHGetSpecialFolderPathA(HWND hwnd, LPSTR pszPath, int csidl, BOO | | SHSTDAPI_(PIDLIST_ABSOLUTE) SHCloneSpecialIDList(HWND hwnd, int csidl, BOOL fCre |
L fCreate); | | ate); |
SHSTDAPI_(BOOL) SHGetSpecialFolderPathW(HWND hwnd, LPWSTR pszPath, int csidl, BO | | SHSTDAPI_(BOOL) SHGetSpecialFolderPathA(HWND hwnd, __out_ecount(MAX_PATH) LPSTR |
OL fCreate); | | pszPath, int csidl, BOOL fCreate); |
| | SHSTDAPI_(BOOL) SHGetSpecialFolderPathW(HWND hwnd, __out_ecount(MAX_PATH) LPWSTR |
| | pszPath, int csidl, BOOL fCreate); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHGetSpecialFolderPath SHGetSpecialFolderPathW | | #define SHGetSpecialFolderPath SHGetSpecialFolderPathW |
#else | | #else |
#define SHGetSpecialFolderPath SHGetSpecialFolderPathA | | #define SHGetSpecialFolderPath SHGetSpecialFolderPathA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
|
#if (_WIN32_IE >= 0x0500) | | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
| | SHSTDAPI_(void) SHFlushSFCache(void); |
| | |
typedef enum { | | typedef enum { |
SHGFP_TYPE_CURRENT = 0, // current value for user, verify it exists | | SHGFP_TYPE_CURRENT = 0, // current value for user, verify it exists |
SHGFP_TYPE_DEFAULT = 1, // default value, may not exist | | SHGFP_TYPE_DEFAULT = 1, // default value, may not exist |
} SHGFP_TYPE; | | } SHGFP_TYPE; |
| | |
|
SHFOLDERAPI SHGetFolderPathA(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, | | SHFOLDERAPI SHGetFolderPathA(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, |
LPSTR pszPath); | | __out_ecount(MAX_PATH) LPSTR pszPath); |
SHFOLDERAPI SHGetFolderPathW(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, | | SHFOLDERAPI SHGetFolderPathW(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, |
LPWSTR pszPath); | | __out_ecount(MAX_PATH) LPWSTR pszPath); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHGetFolderPath SHGetFolderPathW | | #define SHGetFolderPath SHGetFolderPathW |
#else | | #else |
#define SHGetFolderPath SHGetFolderPathA | | #define SHGetFolderPath SHGetFolderPathA |
#endif // !UNICODE | | #endif // !UNICODE |
|
SHSTDAPI SHGetFolderLocation(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, | | SHSTDAPI SHGetFolderLocation(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, |
LPITEMIDLIST *ppidl); | | __out PIDLIST_ABSOLUTE *ppidl); |
| | SHSTDAPI SHSetFolderPathA(int csidl, HANDLE hToken, DWORD dwFlags, LPCSTR pszPat |
| | h); |
| | SHSTDAPI SHSetFolderPathW(int csidl, HANDLE hToken, DWORD dwFlags, LPCWSTR pszPa |
| | th); |
| | #ifdef UNICODE |
| | #define SHSetFolderPath SHSetFolderPathW |
| | #else |
| | #define SHSetFolderPath SHSetFolderPathA |
| | #endif // !UNICODE |
| | #endif // NTDDI_WIN2K |
| | |
|
SHFOLDERAPI SHGetFolderPathAndSubDirA(HWND hwnd, int csidl, HANDLE hToken, DWORD | | #if (NTDDI_VERSION >= NTDDI_WINXP) |
dwFlags, LPCSTR pszSubDir, LPSTR pszPath); | | SHSTDAPI SHGetFolderPathAndSubDirA(HWND hwnd, int csidl, HANDLE hToken, DWORD dw |
SHFOLDERAPI SHGetFolderPathAndSubDirW(HWND hwnd, int csidl, HANDLE hToken, DWORD | | Flags, LPCSTR pszSubDir, __out_ecount(MAX_PATH) LPSTR pszPath); |
dwFlags, LPCWSTR pszSubDir, LPWSTR pszPath); | | SHSTDAPI SHGetFolderPathAndSubDirW(HWND hwnd, int csidl, HANDLE hToken, DWORD dw |
| | Flags, LPCWSTR pszSubDir, __out_ecount(MAX_PATH) LPWSTR pszPath); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW | | #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW |
#else | | #else |
#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA | | #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA |
#endif // !UNICODE | | #endif // !UNICODE |
|
| | #endif |
| | |
|
#endif // _WIN32_IE >= 0x0500 | | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
|
#endif // _WIN32_IE >= 0x0400 | | // |
| | // KNOWNFOLDERID based APIs |
| | // |
| | |
|
#if (_WIN32_IE >= 0x0500) | | #define KF_FLAG_CREATE 0x00008000 // Make sure that the folder alr |
| | eady exists or create it and apply security specified in folder definition |
| | // If folder can not be created |
| | then function will return failure and no folder path (IDList) will be returned |
| | // If folder is located on the n |
| | etwork the function may take long time to execute |
| | |
| | #define KF_FLAG_DONT_VERIFY 0x00004000 // If this flag is specified the |
| | n the folder path is returned and no verification is performed |
| | // Use this flag is you want to |
| | get folder's path (IDList) and do not need to verify folder's existence |
| | // |
| | // If this flag is NOT specified |
| | then Known Folder API will try to verify that the folder exists |
| | // If folder does not exist |
| | or can not be accessed then function will return failure and no folder path (IDL |
| | ist) will be returned |
| | // If folder is located on t |
| | he network the function may take long time to execute |
| | |
| | #define KF_FLAG_DONT_UNEXPAND 0x00002000 // Set folder path as is and do |
| | not try to substitute parts of the path with environments variables. |
| | // If flag is not specified then |
| | Known Folder will try to replace parts of the path with some |
| | // known environment variables ( |
| | %USERPROFILE%, %APPDATA% etc.) |
| | |
| | #define KF_FLAG_NO_ALIAS 0x00001000 // Get file system based IDList |
| | if available. If the flag is not specified the Known Folder API |
| | // will try to return aliased ID |
| | List by default. Example for FOLDERID_Documents - |
| | // Aliased - [desktop]\[user]\[D |
| | ocuments] - exact location is determined by shell namespace layout and might cha |
| | nge |
| | // Non aliased - [desktop]\[comp |
| | uter]\[disk_c]\[users]\[user]\[Documents] - location is determined by folder loc |
| | ation in the file system |
| | |
| | #define KF_FLAG_INIT 0x00000800 // Initialize the folder with de |
| | sktop.ini settings |
| | // If folder can not be initiali |
| | zed then function will return failure and no folder path will be returned |
| | // If folder is located on the n |
| | etwork the function may take long time to execute |
| | |
| | #define KF_FLAG_DEFAULT_PATH 0x00000400 // Get the default path, will al |
| | so verify folder existence unless KF_FLAG_DONT_VERIFY is also specified |
| | #define KF_FLAG_NOT_PARENT_RELATIVE 0x00000200 // Get the not-parent-relative d |
| | efault path. Only valid with KF_FLAG_DEFAULT_PATH |
| | |
| | #define KF_FLAG_SIMPLE_IDLIST 0x00000100 // Build simple pidl |
| | |
| | STDAPI SHGetKnownFolderIDList(REFKNOWNFOLDERID rfid, |
| | DWORD dwFlags, |
| | HANDLE hToken, |
| | __out PIDLIST_ABSOLUTE *ppidl); |
| | |
| | STDAPI SHSetKnownFolderPath(REFKNOWNFOLDERID rfid, |
| | DWORD dwFlags, |
| | HANDLE hToken, |
| | __in_opt PCWSTR pszPath); |
| | |
| | STDAPI SHGetKnownFolderPath(REFKNOWNFOLDERID rfid, |
| | DWORD dwFlags, |
| | HANDLE hToken, |
| | __out PWSTR *ppszPath); // free *ppszPath with CoTaskMe |
| | mFree |
| | |
| | #endif // NTDDI_LONGHORN |
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
| | |
#define FCS_READ 0x00000001 | | #define FCS_READ 0x00000001 |
#define FCS_FORCEWRITE 0x00000002 | | #define FCS_FORCEWRITE 0x00000002 |
#define FCS_WRITE (FCS_READ | FCS_FORCEWRITE) | | #define FCS_WRITE (FCS_READ | FCS_FORCEWRITE) |
| | |
#define FCS_FLAG_DRAGDROP 2 | | #define FCS_FLAG_DRAGDROP 2 |
| | |
// Mask which values have been retreived or being set. | | // Mask which values have been retreived or being set. |
|
#define FCSM_VIEWID 0x00000001 | | #define FCSM_VIEWID 0x00000001 // deprecated |
#define FCSM_WEBVIEWTEMPLATE 0x00000002 | | #define FCSM_WEBVIEWTEMPLATE 0x00000002 // deprecated |
#define FCSM_INFOTIP 0x00000004 | | #define FCSM_INFOTIP 0x00000004 |
#define FCSM_CLSID 0x00000008 | | #define FCSM_CLSID 0x00000008 |
#define FCSM_ICONFILE 0x00000010 | | #define FCSM_ICONFILE 0x00000010 |
#define FCSM_LOGO 0x00000020 | | #define FCSM_LOGO 0x00000020 |
#define FCSM_FLAGS 0x00000040 | | #define FCSM_FLAGS 0x00000040 |
| | |
#include <pshpack8.h> | | #include <pshpack8.h> |
| | |
|
// Used by SHGetSetFolderCustomSettingsA | | // Used by SHGetSetFolderCustomSettings |
typedef struct | | |
{ | | |
DWORD dwSize; | | |
DWORD dwMask; // IN/OUT Which Attributes to Get/Set | | |
SHELLVIEWID* pvid; // OUT - if dwReadWrite is FCS_READ, IN | | |
- otherwise | | |
// The folder's WebView template path | | |
LPSTR pszWebViewTemplate; // OUT - if dwReadWrite is FCS_READ, IN | | |
- otherwise | | |
DWORD cchWebViewTemplate; // IN - Specifies the size of the buffe | | |
r pointed to by pszWebViewTemplate | | |
// Ignored if dwReadWrite is FCS_READ | | |
LPSTR pszWebViewTemplateVersion; // currently IN only | | |
// Infotip for the folder | | |
LPSTR pszInfoTip; // OUT - if dwReadWrite is FCS_READ, IN | | |
- otherwise | | |
DWORD cchInfoTip; // IN - Specifies the size of the buffer | | |
pointed to by pszInfoTip | | |
// Ignored if dwReadWrite is FCS_READ | | |
// CLSID that points to more info in the registry | | |
CLSID* pclsid; // OUT - if dwReadWrite is FCS_READ, IN | | |
- otherwise | | |
// Other flags for the folder. Takes FCS_FLAG_* values | | |
DWORD dwFlags; // OUT - if dwReadWrite is FCS_READ, IN | | |
- otherwise | | |
| | |
LPSTR pszIconFile; // OUT - if dwReadWrite is FCS_READ, IN | | |
- otherwise | | |
DWORD cchIconFile; // IN - Specifies the size of the buffer | | |
pointed to by pszIconFile | | |
// Ignored if dwReadWrite is FCS_READ | | |
| | |
int iIconIndex; // OUT - if dwReadWrite is FCS_READ, IN | | |
- otherwise | | |
| | |
LPSTR pszLogo; // OUT - if dwReadWrite is FCS_READ, IN - ot | | |
herwise | | |
DWORD cchLogo; // IN - Specifies the size of the buffer poi | | |
nted to by pszIconFile | | |
// Ignored if dwReadWrite is FCS_READ | | |
| | |
} SHFOLDERCUSTOMSETTINGSA, *LPSHFOLDERCUSTOMSETTINGSA; | | |
| | |
// Used by SHGetSetFolderCustomSettingsW | | |
typedef struct | | typedef struct |
{ | | { |
DWORD dwSize; | | DWORD dwSize; |
DWORD dwMask; // IN/OUT Which Attributes to Get/Set | | DWORD dwMask; // IN/OUT Which Attributes to Get/Set |
SHELLVIEWID* pvid; // OUT - if dwReadWrite is FCS_READ, IN
- otherwise | | SHELLVIEWID* pvid; // OUT - if dwReadWrite is FCS_READ, IN
- otherwise |
// The folder's WebView template path | | // The folder's WebView template path |
LPWSTR pszWebViewTemplate; // OUT - if dwReadWrite is FCS_READ, I
N - otherwise | | LPWSTR pszWebViewTemplate; // OUT - if dwReadWrite is FCS_READ, I
N - otherwise |
DWORD cchWebViewTemplate; // IN - Specifies the size of the buff
er pointed to by pszWebViewTemplate | | DWORD cchWebViewTemplate; // IN - Specifies the size of the buff
er pointed to by pszWebViewTemplate |
// Ignored if dwReadWrite is FCS_READ | | // Ignored if dwReadWrite is FCS_READ |
LPWSTR pszWebViewTemplateVersion; // currently IN only | | LPWSTR pszWebViewTemplateVersion; // currently IN only |
| | |
skipping to change at line 1969 | | skipping to change at line 1309 |
| | |
LPWSTR pszIconFile; // OUT - if dwReadWrite is FCS_READ, IN
- otherwise | | LPWSTR pszIconFile; // OUT - if dwReadWrite is FCS_READ, IN
- otherwise |
DWORD cchIconFile; // IN - Specifies the size of the buffe
r pointed to by pszIconFile | | DWORD cchIconFile; // IN - Specifies the size of the buffe
r pointed to by pszIconFile |
// Ignored if dwReadWrite is FCS_READ | | // Ignored if dwReadWrite is FCS_READ |
| | |
int iIconIndex; // OUT - if dwReadWrite is FCS_READ, IN
- otherwise | | int iIconIndex; // OUT - if dwReadWrite is FCS_READ, IN
- otherwise |
| | |
LPWSTR pszLogo; // OUT - if dwReadWrite is FCS_READ, IN - o
therwise | | LPWSTR pszLogo; // OUT - if dwReadWrite is FCS_READ, IN - o
therwise |
DWORD cchLogo; // IN - Specifies the size of the buffer po
inted to by pszIconFile | | DWORD cchLogo; // IN - Specifies the size of the buffer po
inted to by pszIconFile |
// Ignored if dwReadWrite is FCS_READ | | // Ignored if dwReadWrite is FCS_READ |
|
} SHFOLDERCUSTOMSETTINGSW, *LPSHFOLDERCUSTOMSETTINGSW; | | } SHFOLDERCUSTOMSETTINGS, *LPSHFOLDERCUSTOMSETTINGS; |
| | |
#include <poppack.h> /* Return to byte packing */ | | #include <poppack.h> /* Return to byte packing */ |
| | |
// Gets/Sets the Folder Custom Settings for pszPath based on dwReadWrite. dwRead
Write can be FCS_READ/FCS_WRITE/FCS_FORCEWRITE | | // Gets/Sets the Folder Custom Settings for pszPath based on dwReadWrite. dwRead
Write can be FCS_READ/FCS_WRITE/FCS_FORCEWRITE |
|
SHSTDAPI SHGetSetFolderCustomSettingsA(LPSHFOLDERCUSTOMSETTINGSA pfcs, LPCSTR ps | | SHSTDAPI SHGetSetFolderCustomSettings(__inout LPSHFOLDERCUSTOMSETTINGS pfcs, LPC |
zPath, DWORD dwReadWrite); | | WSTR pszPath, DWORD dwReadWrite); |
SHSTDAPI SHGetSetFolderCustomSettingsW(LPSHFOLDERCUSTOMSETTINGSW pfcs, LPCWSTR p | | |
szPath, DWORD dwReadWrite); | | |
| | |
#ifdef UNICODE | | |
#define SHFOLDERCUSTOMSETTINGS SHFOLDERCUSTOMSETTINGSW | | |
#define SHGetSetFolderCustomSettings SHGetSetFolderCustomSettingsW | | |
#define LPSHFOLDERCUSTOMSETTINGS LPSHFOLDERCUSTOMSETTINGSW | | |
#else | | |
#define SHFOLDERCUSTOMSETTINGS SHFOLDERCUSTOMSETTINGSA | | |
#define SHGetSetFolderCustomSettings SHGetSetFolderCustomSettingsA | | |
#define LPSHFOLDERCUSTOMSETTINGS LPSHFOLDERCUSTOMSETTINGSA | | |
#endif | | |
| | |
|
#endif // _WIN32_IE >= 0x0500 | | #endif // NTDDI_WIN2K |
| | |
//------------------------------------------------------------------------- | | //------------------------------------------------------------------------- |
// | | // |
// SHBrowseForFolder API | | // SHBrowseForFolder API |
// | | // |
// | | // |
//------------------------------------------------------------------------- | | //------------------------------------------------------------------------- |
| | |
typedef int (CALLBACK* BFFCALLBACK)(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM
lpData); | | typedef int (CALLBACK* BFFCALLBACK)(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM
lpData); |
| | |
#include <pshpack8.h> | | #include <pshpack8.h> |
| | |
typedef struct _browseinfoA { | | typedef struct _browseinfoA { |
HWND hwndOwner; | | HWND hwndOwner; |
|
LPCITEMIDLIST pidlRoot; | | PCIDLIST_ABSOLUTE pidlRoot; |
LPSTR pszDisplayName; // Return display name of item selected. | | LPSTR pszDisplayName; // Return display name of item selected. |
LPCSTR lpszTitle; // text to go in the banner over
the tree. | | LPCSTR lpszTitle; // text to go in the banner over
the tree. |
UINT ulFlags; // Flags that control the return
stuff | | UINT ulFlags; // Flags that control the return
stuff |
BFFCALLBACK lpfn; | | BFFCALLBACK lpfn; |
LPARAM lParam; // extra info that's passed back
in callbacks | | LPARAM lParam; // extra info that's passed back
in callbacks |
int iImage; // output var: where to return t
he Image index. | | int iImage; // output var: where to return t
he Image index. |
} BROWSEINFOA, *PBROWSEINFOA, *LPBROWSEINFOA; | | } BROWSEINFOA, *PBROWSEINFOA, *LPBROWSEINFOA; |
| | |
typedef struct _browseinfoW { | | typedef struct _browseinfoW { |
HWND hwndOwner; | | HWND hwndOwner; |
|
LPCITEMIDLIST pidlRoot; | | PCIDLIST_ABSOLUTE pidlRoot; |
LPWSTR pszDisplayName; // Return display name of item selected. | | LPWSTR pszDisplayName; // Return display name of item selected. |
LPCWSTR lpszTitle; // text to go in the banner over
the tree. | | LPCWSTR lpszTitle; // text to go in the banner over
the tree. |
UINT ulFlags; // Flags that control the return
stuff | | UINT ulFlags; // Flags that control the return
stuff |
BFFCALLBACK lpfn; | | BFFCALLBACK lpfn; |
LPARAM lParam; // extra info that's passed back
in callbacks | | LPARAM lParam; // extra info that's passed back
in callbacks |
int iImage; // output var: where to return t
he Image index. | | int iImage; // output var: where to return t
he Image index. |
} BROWSEINFOW, *PBROWSEINFOW, *LPBROWSEINFOW; | | } BROWSEINFOW, *PBROWSEINFOW, *LPBROWSEINFOW; |
| | |
#include <poppack.h> /* Return to byte packing */ | | #include <poppack.h> /* Return to byte packing */ |
| | |
| | |
skipping to change at line 2076 | | skipping to change at line 1405 |
| | |
// messages to browser | | // messages to browser |
#define BFFM_SETSTATUSTEXTA (WM_USER + 100) | | #define BFFM_SETSTATUSTEXTA (WM_USER + 100) |
#define BFFM_ENABLEOK (WM_USER + 101) | | #define BFFM_ENABLEOK (WM_USER + 101) |
#define BFFM_SETSELECTIONA (WM_USER + 102) | | #define BFFM_SETSELECTIONA (WM_USER + 102) |
#define BFFM_SETSELECTIONW (WM_USER + 103) | | #define BFFM_SETSELECTIONW (WM_USER + 103) |
#define BFFM_SETSTATUSTEXTW (WM_USER + 104) | | #define BFFM_SETSTATUSTEXTW (WM_USER + 104) |
#define BFFM_SETOKTEXT (WM_USER + 105) // Unicode only | | #define BFFM_SETOKTEXT (WM_USER + 105) // Unicode only |
#define BFFM_SETEXPANDED (WM_USER + 106) // Unicode only | | #define BFFM_SETEXPANDED (WM_USER + 106) // Unicode only |
| | |
|
SHSTDAPI_(LPITEMIDLIST) SHBrowseForFolderA(LPBROWSEINFOA lpbi); | | SHSTDAPI_(PIDLIST_ABSOLUTE) SHBrowseForFolderA(LPBROWSEINFOA lpbi); |
SHSTDAPI_(LPITEMIDLIST) SHBrowseForFolderW(LPBROWSEINFOW lpbi); | | SHSTDAPI_(PIDLIST_ABSOLUTE) SHBrowseForFolderW(LPBROWSEINFOW lpbi); |
| | |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHBrowseForFolder SHBrowseForFolderW | | #define SHBrowseForFolder SHBrowseForFolderW |
#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTW | | #define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTW |
#define BFFM_SETSELECTION BFFM_SETSELECTIONW | | #define BFFM_SETSELECTION BFFM_SETSELECTIONW |
| | |
#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDW | | #define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDW |
#else | | #else |
#define SHBrowseForFolder SHBrowseForFolderA | | #define SHBrowseForFolder SHBrowseForFolderA |
#define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTA | | #define BFFM_SETSTATUSTEXT BFFM_SETSTATUSTEXTA |
#define BFFM_SETSELECTION BFFM_SETSELECTIONA | | #define BFFM_SETSELECTION BFFM_SETSELECTIONA |
| | |
#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDA | | #define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDA |
#endif | | #endif |
| | |
//------------------------------------------------------------------------- | | //------------------------------------------------------------------------- |
// | | // |
// SHLoadInProc | | // SHLoadInProc |
// | | // |
|
// When this function is called, the shell calls CoCreateInstance | | // This function is no longer implemented. It will return E_NOTIMPL. |
// (or equivalent) with CLSCTX_INPROC_SERVER and the specified CLSID | | |
// from within the shell's process and release it immediately. | | |
// | | // |
//------------------------------------------------------------------------- | | //------------------------------------------------------------------------- |
| | |
SHSTDAPI SHLoadInProc(REFCLSID rclsid); | | SHSTDAPI SHLoadInProc(REFCLSID rclsid); |
| | |
|
#if (_WIN32_IE >= 0x0600) | | |
| | |
//------------------------------------------------------------------------- | | |
// | | |
// SHEnableServiceObject | | |
// | | |
// Like SHLoadInProc, but gives control over the object's lifetime | | |
// via fEnable parameter. TRUE tells the shell to create the object | | |
// and hold onto it, FALSE tells the shell to look for the previously | | |
// created instance of the object and release it. | | |
// | | |
//------------------------------------------------------------------------- | | |
| | |
SHSTDAPI SHEnableServiceObject(REFCLSID rclsid, BOOL fEnable); | | |
| | |
#endif | | |
| | |
//------------------------------------------------------------------------- | | //------------------------------------------------------------------------- |
// | | // |
// Internet Shortcut Object | | // Internet Shortcut Object |
// | | // |
//------------------------------------------------------------------------- | | //------------------------------------------------------------------------- |
// Cmds for CGID_ShortCut | | // Cmds for CGID_ShortCut |
|
enum { | | #if (_WIN32_IE >= _WIN32_IE_IE501) |
ISHCUTCMDID_DOWNLOADICON = 0, | | enum |
| | { |
| | ISHCUTCMDID_DOWNLOADICON = 0, |
ISHCUTCMDID_INTSHORTCUTCREATE = 1, | | ISHCUTCMDID_INTSHORTCUTCREATE = 1, |
|
| | #if (_WIN32_IE >= _WIN32_IE_IE70) |
| | ISHCUTCMDID_COMMITHISTORY = 2, |
| | ISHCUTCMDID_SETUSERAWURL = 3, |
| | #endif |
}; | | }; |
#define CMDID_INTSHORTCUTCREATE ISHCUTCMDID_INTSHORTCUTCREATE | | #define CMDID_INTSHORTCUTCREATE ISHCUTCMDID_INTSHORTCUTCREATE |
|
| | #endif |
| | |
// | | // |
|
// Helper function which returns a IShellFolder interface to the desktop | | // Helper function which returns a IShellFolder interface to the desktop |
// folder. This is equivalent to call CoCreateInstance with CLSID_ShellDesktop. | | // folder. This is equivalent to call CoCreateInstance with CLSID_ShellDesktop. |
// | | // |
|
// CoCreateInstance(CLSID_Desktop, NULL, | | // CoCreateInstance(CLSID_Desktop, NULL, CLSCTX_INPROC, IID_PPV_ARGS(&pshf)); |
// CLSCTX_INPROC, IID_IShellFolder, &pshf); | | |
// | | // |
|
SHSTDAPI SHGetDesktopFolder(IShellFolder **ppshf); | | SHSTDAPI SHGetDesktopFolder(__out IShellFolder **ppshf); |
| | |
// IShellFolder IBindCtx* parameters. the IUnknown for these are | | |
// accessed through IBindCtx::RegisterObjectParam/GetObjectParam | | |
// use this to provide the data needed create IDLists through | | |
// IShellFolder::ParseDisplayName(). this data applies to the last element | | |
// of the name that is parsed (c:\foo\bar.txt, data applies to bar.txt) | | |
// this makes creating these IDLists much faster that suppling the name only | | |
| | |
#define STR_FILE_SYS_BIND_DATA L"File System Bind Data" | | |
| | |
#undef INTERFACE | | |
#define INTERFACE IFileSystemBindData | | |
| | |
DECLARE_INTERFACE_(IFileSystemBindData, IUnknown) | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | |
| | |
|
// *** IFileSystemBindData methods *** | | // this interface is deprecated, data sources should |
STDMETHOD(SetFindData)(THIS_ const WIN32_FIND_DATAW *pfd) PURE; | | // implement IShellFolder2::GetDetailsOf()/GetDetailsEx() instead |
STDMETHOD(GetFindData)(THIS_ WIN32_FIND_DATAW *pfd) PURE; | | |
}; | | |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IShellDetails | | #define INTERFACE IShellDetails |
| | |
|
DECLARE_INTERFACE_(IShellDetails, IUnknown) | | DECLARE_INTERFACE_IID_(IShellDetails, IUnknown, "000214EC-0000-0000-c000-0000000
00046") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IShellDetails methods *** | | // *** IShellDetails methods *** |
|
STDMETHOD(GetDetailsOf)(THIS_ LPCITEMIDLIST pidl, UINT iColumn, SHELLDETAILS
*pDetails) PURE; | | STDMETHOD(GetDetailsOf)(THIS_ PCUITEMID_CHILD pidl, UINT iColumn, __out SHEL
LDETAILS *pDetails) PURE; |
STDMETHOD(ColumnClick)(THIS_ UINT iColumn) PURE; | | STDMETHOD(ColumnClick)(THIS_ UINT iColumn) PURE; |
}; | | }; |
| | |
|
//------------------------------------------------------------------------- | | |
// | | |
// IObjMgr interface | | |
// | | |
// | | |
// [Member functions] | | |
// | | // |
// IObjMgr::Append(punk) | | // IObjMgr::Append(punk) |
// This function adds an object to the end of a list of objects. | | // This function adds an object to the end of a list of objects. |
// | | // |
// IObjMgr::Remove(punk) | | // IObjMgr::Remove(punk) |
// This function removes an object from a list of objects. | | // This function removes an object from a list of objects. |
// | | // |
// This is implemented by CLSID_ACLMulti so each AutoComplete List | | // This is implemented by CLSID_ACLMulti so each AutoComplete List |
// (CLSID_ACLHistory, CLSID_ACListISF, CLSID_ACLMRU) can be added. | | // (CLSID_ACLHistory, CLSID_ACListISF, CLSID_ACLMRU) can be added. |
// CLSID_ACLMulti's IEnumString will then be the union of the results | | // CLSID_ACLMulti's IEnumString will then be the union of the results |
// from the COM Objects added. | | // from the COM Objects added. |
|
//------------------------------------------------------------------------- | | // |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IObjMgr | | #define INTERFACE IObjMgr |
| | |
|
DECLARE_INTERFACE_(IObjMgr, IUnknown) | | DECLARE_INTERFACE_IID_(IObjMgr, IUnknown, "00BB2761-6A77-11D0-A535-00C04FD7D062"
) |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef) (THIS) PURE; | | STDMETHOD_(ULONG, AddRef) (THIS) PURE; |
STDMETHOD_(ULONG, Release) (THIS) PURE; | | STDMETHOD_(ULONG, Release) (THIS) PURE; |
| | |
// *** IObjMgr specific methods *** | | // *** IObjMgr specific methods *** |
|
STDMETHOD(Append) (THIS_ IUnknown *punk) PURE; | | STDMETHOD(Append) (THIS_ __in IUnknown *punk) PURE; |
STDMETHOD(Remove) (THIS_ IUnknown *punk) PURE; | | STDMETHOD(Remove) (THIS_ __in IUnknown *punk) PURE; |
}; | | }; |
| | |
|
//------------------------------------------------------------------------- | | |
// | | |
// ICurrentWorkingDirectory interface | | |
// | | |
// | | |
// [Member functions] | | |
// | | // |
// ICurrentWorkingDirectory::GetDirectory(LPWSTR pwzPath, DWORD cchSize) | | // ICurrentWorkingDirectory::GetDirectory(LPWSTR pwzPath, DWORD cchSize) |
// This function gets the Current Working Directory from a COM object that | | // This function gets the Current Working Directory from a COM object that |
// stores such state. | | // stores such state. |
// | | // |
// ICurrentWorkingDirectory::SetDirectory(LPCWSTR pwzPath) | | // ICurrentWorkingDirectory::SetDirectory(LPCWSTR pwzPath) |
// This function sets the Current Working Directory of a COM object that | | // This function sets the Current Working Directory of a COM object that |
// stores such state. | | // stores such state. |
// | | // |
// This function can be used generically. One COM object that implements it | | // This function can be used generically. One COM object that implements it |
// is CLSID_ACListISF so that the AutoComplete engine can complete relative | | // is CLSID_ACListISF so that the AutoComplete engine can complete relative |
// paths. SetDirectory() will set the "Current Working Directory" and | | // paths. SetDirectory() will set the "Current Working Directory" and |
// AutoComplete with then complete both absolute and relative paths. | | // AutoComplete with then complete both absolute and relative paths. |
// For Example, if ::SetDirectory(L"C:\Program Files") is called, then | | // For Example, if ::SetDirectory(L"C:\Program Files") is called, then |
// the user can AutoComplete "..\winnt". In order to set the current | | // the user can AutoComplete "..\winnt". In order to set the current |
// working directory for non-file system paths, "ftp://ftp.microsoft.com/" or | | // working directory for non-file system paths, "ftp://ftp.microsoft.com/" or |
// "Control Panel" for example, use IPersistFolder. | | // "Control Panel" for example, use IPersistFolder. |
|
//------------------------------------------------------------------------- | | // |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE ICurrentWorkingDirectory | | #define INTERFACE ICurrentWorkingDirectory |
| | |
|
DECLARE_INTERFACE_(ICurrentWorkingDirectory, IUnknown) | | DECLARE_INTERFACE_IID_(ICurrentWorkingDirectory, IUnknown, "91956D21-9276-11d1-9
21A-006097DF5BD4") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef) (THIS) PURE; | | STDMETHOD_(ULONG, AddRef) (THIS) PURE; |
STDMETHOD_(ULONG, Release) (THIS) PURE; | | STDMETHOD_(ULONG, Release) (THIS) PURE; |
| | |
// *** ICurrentWorkingDirectory specific methods *** | | // *** ICurrentWorkingDirectory specific methods *** |
|
STDMETHOD(GetDirectory) (THIS_ LPWSTR pwzPath, DWORD cchSize) PURE; | | STDMETHOD(GetDirectory) (THIS_ __out_ecount(cchSize) LPWSTR pwzPath, DWORD c
chSize) PURE; |
STDMETHOD(SetDirectory) (THIS_ LPCWSTR pwzPath) PURE; | | STDMETHOD(SetDirectory) (THIS_ LPCWSTR pwzPath) PURE; |
}; | | }; |
| | |
|
//------------------------------------------------------------------------- | | |
// | | // |
|
// IACList interface | | // IACList::Expand(LPCWSTR) |
// | | |
// | | |
// [Member functions] | | |
// | | |
// IObjMgr::Expand(LPCOLESTR) | | |
// This function tells an autocomplete list to expand a specific string. | | // This function tells an autocomplete list to expand a specific string. |
// | | // |
// If the user enters a multi-level path, AutoComplete (CLSID_AutoComplete) | | // If the user enters a multi-level path, AutoComplete (CLSID_AutoComplete) |
// will use this interface to tell the "AutoComplete Lists" where to expand | | // will use this interface to tell the "AutoComplete Lists" where to expand |
// the results. | | // the results. |
// | | // |
// For Example, if the user enters "C:\Program Files\Micros", AutoComplete | | // For Example, if the user enters "C:\Program Files\Micros", AutoComplete |
// first completely enumerate the "AutoComplete Lists" via IEnumString. Then it | | // first completely enumerate the "AutoComplete Lists" via IEnumString. Then it |
// will call the "AutoComplete Lists" with IACList::Expand(L"C:\Program Files"). | | // will call the "AutoComplete Lists" with IACList::Expand(L"C:\Program Files"). |
// It will then enumerate the IEnumString interface again to get results in | | // It will then enumerate the IEnumString interface again to get results in |
// that directory. | | // that directory. |
|
//------------------------------------------------------------------------- | | // |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IACList | | #define INTERFACE IACList |
| | |
|
DECLARE_INTERFACE_(IACList, IUnknown) | | DECLARE_INTERFACE_IID_(IACList, IUnknown, "77A130B0-94FD-11D0-A544-00C04FD7d062"
) |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef) (THIS) PURE; | | STDMETHOD_(ULONG, AddRef) (THIS) PURE; |
STDMETHOD_(ULONG, Release) (THIS) PURE; | | STDMETHOD_(ULONG, Release) (THIS) PURE; |
| | |
// *** IACList specific methods *** | | // *** IACList specific methods *** |
|
STDMETHOD(Expand) (THIS_ LPCOLESTR pszExpand) PURE; | | STDMETHOD(Expand) (THIS_ LPCWSTR pszExpand) PURE; |
}; | | }; |
| | |
|
//------------------------------------------------------------------------- | | // This interface exists to allow the caller to set filter criteria |
// | | |
// IACList2 interface | | |
// | | |
// [Description] | | |
// This interface exists to allow the caller to set filter criteria | | |
// for an AutoComplete List. AutoComplete Lists generates the list of | | // for an AutoComplete List. AutoComplete Lists generates the list of |
// possible AutoComplete completions. CLSID_ACListISF is one AutoComplete | | // possible AutoComplete completions. CLSID_ACListISF is one AutoComplete |
// List COM object that implements this interface. | | // List COM object that implements this interface. |
|
//------------------------------------------------------------------------- | | |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IACList2 | | #define INTERFACE IACList2 |
| | |
typedef enum _tagAUTOCOMPLETELISTOPTIONS | | typedef enum _tagAUTOCOMPLETELISTOPTIONS |
{ | | { |
ACLO_NONE = 0, // don't enumerate anything | | ACLO_NONE = 0, // don't enumerate anything |
ACLO_CURRENTDIR = 1, // enumerate current directory | | ACLO_CURRENTDIR = 1, // enumerate current directory |
ACLO_MYCOMPUTER = 2, // enumerate MyComputer | | ACLO_MYCOMPUTER = 2, // enumerate MyComputer |
ACLO_DESKTOP = 4, // enumerate Desktop Folder | | ACLO_DESKTOP = 4, // enumerate Desktop Folder |
ACLO_FAVORITES = 8, // enumerate Favorites Folder | | ACLO_FAVORITES = 8, // enumerate Favorites Folder |
ACLO_FILESYSONLY = 16, // enumerate only the file system | | ACLO_FILESYSONLY = 16, // enumerate only the file system |
|
| | #if (_WIN32_IE >= _WIN32_IE_IE60) |
ACLO_FILESYSDIRS = 32, // enumerate only the file system dirs, UNC sha
res, and UNC servers. | | ACLO_FILESYSDIRS = 32, // enumerate only the file system dirs, UNC sha
res, and UNC servers. |
|
| | #endif |
| | #if (_WIN32_IE >= _WIN32_IE_IE70) |
| | ACLO_VIRTUALNAMESPACE = 64, // enumereate on the virual namespace |
| | #endif |
} AUTOCOMPLETELISTOPTIONS; | | } AUTOCOMPLETELISTOPTIONS; |
| | |
|
DECLARE_INTERFACE_(IACList2, IACList) | | DECLARE_INTERFACE_IID_(IACList2, IACList, "470141a0-5186-11d2-bbb6-0060977b464c"
) |
{ | | { |
// *** IACList2 specific methods *** | | // *** IACList2 specific methods *** |
STDMETHOD(SetOptions)(THIS_ DWORD dwFlag) PURE; | | STDMETHOD(SetOptions)(THIS_ DWORD dwFlag) PURE; |
|
STDMETHOD(GetOptions)(THIS_ DWORD* pdwFlag) PURE; | | STDMETHOD(GetOptions)(THIS_ __out DWORD* pdwFlag) PURE; |
}; | | }; |
| | |
/*-------------------------------------------------------------------------*\ | | /*-------------------------------------------------------------------------*\ |
INTERFACE: IProgressDialog | | INTERFACE: IProgressDialog |
| | |
DESCRIPTION: | | DESCRIPTION: |
CLSID_ProgressDialog/IProgressDialog exist to allow a caller to create | | CLSID_ProgressDialog/IProgressDialog exist to allow a caller to create |
a progress dialog, set it's title, animation, text lines, progress, and | | a progress dialog, set it's title, animation, text lines, progress, and |
|
it will do all the work of updating on a background thread, being modless, | | it will do all the work of updating on a background thread, being modeless, |
handling the user cancelling the operation, and estimating the time remainin | | handling the user canceling the operation, and estimating the time remaining |
g | | |
until the operation completes. | | until the operation completes. |
| | |
USAGE: | | USAGE: |
This is how the dialog is used during operations that require progress | | This is how the dialog is used during operations that require progress |
and the ability to cancel: | | and the ability to cancel: |
{ | | { |
DWORD dwComplete, dwTotal; | | DWORD dwComplete, dwTotal; |
IProgressDialog * ppd; | | IProgressDialog * ppd; |
CoCreateInstance(CLSID_ProgressDialog, NULL, CLSCTX_INPROC_SERVER, IID_I
ProgressDialog, (void **)&ppd); | | CoCreateInstance(CLSID_ProgressDialog, NULL, CLSCTX_INPROC_SERVER, IID_I
ProgressDialog, (void **)&ppd); |
ppd->SetTitle(L"My Slow Operation"); // S
et the title of the dialog. | | ppd->SetTitle(L"My Slow Operation"); // S
et the title of the dialog. |
| | |
skipping to change at line 2370 | | skipping to change at line 1646 |
| | |
ppd->SetProgress(dwCompleted, dwTotal); | | ppd->SetProgress(dwCompleted, dwTotal); |
} | | } |
| | |
ppd->StopProgressDialog(); | | ppd->StopProgressDialog(); |
ppd->Release(); | | ppd->Release(); |
} | | } |
\*-------------------------------------------------------------------------*/ | | \*-------------------------------------------------------------------------*/ |
| | |
// Flags for IProgressDialog::StartProgressDialog() (dwFlags) | | // Flags for IProgressDialog::StartProgressDialog() (dwFlags) |
|
| | // The flag space includes OPPROGDLG_ and PROGDLG_ values, please guarantee they
don't conflict. See shobjidl.idl for OPPROGDLG_* |
#define PROGDLG_NORMAL 0x00000000 // default normal progress dlg b
ehavior | | #define PROGDLG_NORMAL 0x00000000 // default normal progress dlg b
ehavior |
#define PROGDLG_MODAL 0x00000001 // the dialog is modal to its hw
ndParent (default is modeless) | | #define PROGDLG_MODAL 0x00000001 // the dialog is modal to its hw
ndParent (default is modeless) |
#define PROGDLG_AUTOTIME 0x00000002 // automatically updates the "Li
ne3" text with the "time remaining" (you cant call SetLine3 if you passs this!) | | #define PROGDLG_AUTOTIME 0x00000002 // automatically updates the "Li
ne3" text with the "time remaining" (you cant call SetLine3 if you passs this!) |
#define PROGDLG_NOTIME 0x00000004 // we dont show the "time remain
ing" if this is set. We need this if dwTotal < dwCompleted for sparse files | | #define PROGDLG_NOTIME 0x00000004 // we dont show the "time remain
ing" if this is set. We need this if dwTotal < dwCompleted for sparse files |
#define PROGDLG_NOMINIMIZE 0x00000008 // Do not have a minimize button
in the caption bar. | | #define PROGDLG_NOMINIMIZE 0x00000008 // Do not have a minimize button
in the caption bar. |
#define PROGDLG_NOPROGRESSBAR 0x00000010 // Don't display the progress ba
r | | #define PROGDLG_NOPROGRESSBAR 0x00000010 // Don't display the progress ba
r |
|
| | #if (_WIN32_IE >= _WIN32_IE_IE70) |
| | #define PROGDLG_MARQUEEPROGRESS 0x00000020 // Use marquee progress (comctl3 |
| | 2 v6 required) |
| | #define PROGDLG_NOCANCEL 0x00000040 // No cancel button (operation c |
| | annot be canceled) (use sparingly) |
| | #endif |
| | |
// Time Actions (dwTimerAction) | | // Time Actions (dwTimerAction) |
#define PDTIMER_RESET 0x00000001 // Reset the timer so the progress
will be calculated from now until the first ::SetProgress() is called so | | #define PDTIMER_RESET 0x00000001 // Reset the timer so the progress
will be calculated from now until the first ::SetProgress() is called so |
// those this time will correspond
to the values passed to ::SetProgress(). Only do this before ::SetProgress() is
called. | | // those this time will correspond
to the values passed to ::SetProgress(). Only do this before ::SetProgress() is
called. |
|
| | #if (_WIN32_IE >= _WIN32_IE_IE70) |
| | #define PDTIMER_PAUSE 0x00000002 // Progress has been suspended |
| | #define PDTIMER_RESUME 0x00000003 // Progress has resumed |
| | #endif |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IProgressDialog | | #define INTERFACE IProgressDialog |
| | |
|
DECLARE_INTERFACE_(IProgressDialog, IUnknown) | | DECLARE_INTERFACE_IID_(IProgressDialog, IUnknown, "EBBC7C04-315E-11d2-B62F-00609
7DF5BD4") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IProgressDialog specific methods | | // *** IProgressDialog specific methods |
|
STDMETHOD(StartProgressDialog)(THIS_ HWND hwndParent, IUnknown * punkEnableM
odless, DWORD dwFlags, LPCVOID pvResevered) PURE; | | STDMETHOD(StartProgressDialog)(THIS_ __in_opt HWND hwndParent, __in_opt IUnk
nown * punkEnableModless, DWORD dwFlags, __reserved LPCVOID pvResevered) PURE; |
STDMETHOD(StopProgressDialog)(THIS) PURE; | | STDMETHOD(StopProgressDialog)(THIS) PURE; |
STDMETHOD(SetTitle)(THIS_ LPCWSTR pwzTitle) PURE; | | STDMETHOD(SetTitle)(THIS_ LPCWSTR pwzTitle) PURE; |
STDMETHOD(SetAnimation)(THIS_ HINSTANCE hInstAnimation, UINT idAnimation) PU
RE; | | STDMETHOD(SetAnimation)(THIS_ HINSTANCE hInstAnimation, UINT idAnimation) PU
RE; |
STDMETHOD_(BOOL,HasUserCancelled) (THIS) PURE; | | STDMETHOD_(BOOL,HasUserCancelled) (THIS) PURE; |
STDMETHOD(SetProgress)(THIS_ DWORD dwCompleted, DWORD dwTotal) PURE; | | STDMETHOD(SetProgress)(THIS_ DWORD dwCompleted, DWORD dwTotal) PURE; |
STDMETHOD(SetProgress64)(THIS_ ULONGLONG ullCompleted, ULONGLONG ullTotal) P
URE; | | STDMETHOD(SetProgress64)(THIS_ ULONGLONG ullCompleted, ULONGLONG ullTotal) P
URE; |
|
STDMETHOD(SetLine)(THIS_ DWORD dwLineNum, LPCWSTR pwzString, BOOL fCompactPa | | STDMETHOD(SetLine)(THIS_ DWORD dwLineNum, LPCWSTR pwzString, BOOL fCompactPa |
th, LPCVOID pvResevered) PURE; | | th, __reserved LPCVOID pvResevered) PURE; |
STDMETHOD(SetCancelMsg)(THIS_ LPCWSTR pwzCancelMsg, LPCVOID pvResevered) PUR | | STDMETHOD(SetCancelMsg)(THIS_ LPCWSTR pwzCancelMsg, __reserved LPCVOID pvRes |
E; | | evered) PURE; |
STDMETHOD(Timer)(THIS_ DWORD dwTimerAction, LPCVOID pvResevered) PURE; | | STDMETHOD(Timer)(THIS_ DWORD dwTimerAction, __reserved LPCVOID pvResevered) |
}; | | PURE; |
| | |
//========================================================================== | | |
// IInputObjectSite/IInputObject interfaces | | |
// | | |
// These interfaces allow us (or ISVs) to install/update external Internet | | |
// Toolbar for IE and the shell. The frame will simply get the CLSID from | | |
// registry (to be defined) and CoCreateInstance it. | | |
// | | |
//========================================================================== | | |
| | |
//------------------------------------------------------------------------- | | |
// | | |
// IInputObjectSite interface | | |
// | | |
// A site implements this interface so the object can communicate | | |
// focus change to it. | | |
// | | |
// [Member functions] | | |
// | | |
// IInputObjectSite::OnFocusChangeIS(punkObj, fSetFocus) | | |
// Object (punkObj) is getting or losing the focus. | | |
// | | |
//------------------------------------------------------------------------- | | |
| | |
#undef INTERFACE | | |
#define INTERFACE IInputObjectSite | | |
| | |
DECLARE_INTERFACE_(IInputObjectSite, IUnknown) | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | |
| | |
// *** IInputObjectSite specific methods *** | | |
STDMETHOD(OnFocusChangeIS)(THIS_ IUnknown* punkObj, BOOL fSetFocus) PURE; | | |
}; | | |
| | |
//------------------------------------------------------------------------- | | |
// | | |
// IInputObject interface | | |
// | | |
// An object implements this interface so the site can communicate | | |
// activation and accelerator events to it. | | |
// | | |
// [Member functions] | | |
// | | |
// IInputObject::UIActivateIO(fActivate, lpMsg) | | |
// Activates or deactivates the object. lpMsg may be NULL. Returns | | |
// S_OK if the activation succeeded. | | |
// | | |
// IInputObject::HasFocusIO() | | |
// Returns S_OK if the object has the focus, S_FALSE if not. | | |
// | | |
// IInputObject::TranslateAcceleratorIO(lpMsg) | | |
// Allow the object to process the message. Returns S_OK if the | | |
// message was processed (eaten). | | |
// | | |
//------------------------------------------------------------------------- | | |
| | |
#undef INTERFACE | | |
#define INTERFACE IInputObject | | |
| | |
DECLARE_INTERFACE_(IInputObject, IUnknown) | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | |
| | |
// *** IInputObject specific methods *** | | |
STDMETHOD(UIActivateIO)(THIS_ BOOL fActivate, LPMSG lpMsg) PURE; | | |
STDMETHOD(HasFocusIO)(THIS) PURE; | | |
STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg) PURE; | | |
}; | | }; |
| | |
//========================================================================== | | //========================================================================== |
// IDockingWindowSite/IDockingWindow/IDockingWindowFrame interfaces | | // IDockingWindowSite/IDockingWindow/IDockingWindowFrame interfaces |
// IInputObjectSite/IInputObject interfaces | | // IInputObjectSite/IInputObject interfaces |
// | | // |
// These interfaces allow us (or ISVs) to install/update external Internet | | // These interfaces allow us (or ISVs) to install/update external Internet |
// Toolbar for IE and the shell. The frame will simply get the CLSID from | | // Toolbar for IE and the shell. The frame will simply get the CLSID from |
// registry (to be defined) and CoCreateInstance it. | | // registry (to be defined) and CoCreateInstance it. |
// | | // |
| | |
skipping to change at line 2515 | | skipping to change at line 1725 |
// | | // |
// IDockingWindowSite::SetBorderSpaceDW(punkObj, pbw) | | // IDockingWindowSite::SetBorderSpaceDW(punkObj, pbw) |
// Object requests that the site set the border spacing to the size | | // Object requests that the site set the border spacing to the size |
// specified in *pbw. | | // specified in *pbw. |
// | | // |
//------------------------------------------------------------------------- | | //------------------------------------------------------------------------- |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IDockingWindowSite | | #define INTERFACE IDockingWindowSite |
| | |
|
DECLARE_INTERFACE_(IDockingWindowSite, IOleWindow) | | DECLARE_INTERFACE_IID_(IDockingWindowSite, IOleWindow, "2a342fc2-7b26-11d0-8ca9-
00a0c92dbfe8") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IOleWindow methods *** | | // *** IOleWindow methods *** |
STDMETHOD(GetWindow) (THIS_ HWND * lphwnd) PURE; | | STDMETHOD(GetWindow) (THIS_ HWND * lphwnd) PURE; |
STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE; | | STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE; |
| | |
| | |
skipping to change at line 2551 | | skipping to change at line 1761 |
// | | // |
// IDockingWindowFrame::FindToolbar(pwszItem, riid, ppv) | | // IDockingWindowFrame::FindToolbar(pwszItem, riid, ppv) |
// | | // |
//------------------------------------------------------------------------- | | //------------------------------------------------------------------------- |
| | |
// flags for RemoveToolbar | | // flags for RemoveToolbar |
#define DWFRF_NORMAL 0x0000 | | #define DWFRF_NORMAL 0x0000 |
#define DWFRF_DELETECONFIGDATA 0x0001 | | #define DWFRF_DELETECONFIGDATA 0x0001 |
| | |
// flags for AddToolbar | | // flags for AddToolbar |
|
#define DWFAF_HIDDEN 0x0001 // add hidden | | #define DWFAF_HIDDEN 0x0001 // add hidden |
| | #define DWFAF_GROUP1 0x0002 // insert at end of group 1 |
| | #define DWFAF_GROUP2 0x0004 // insert at end of group 2 |
| | #define DWFAF_AUTOHIDE 0x0010 // The toolbar will be subject to AutoHide in F |
| | ull Screen mode |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IDockingWindowFrame | | #define INTERFACE IDockingWindowFrame |
| | |
|
DECLARE_INTERFACE_(IDockingWindowFrame, IOleWindow) | | DECLARE_INTERFACE_IID_(IDockingWindowFrame, IOleWindow, "47d2657a-7b27-11d0-8ca9
-00a0c92dbfe8") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IOleWindow methods *** | | // *** IOleWindow methods *** |
STDMETHOD(GetWindow) (THIS_ HWND * lphwnd) PURE; | | STDMETHOD(GetWindow) (THIS_ HWND * lphwnd) PURE; |
STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE; | | STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE; |
| | |
// *** IDockingWindowFrame methods *** | | // *** IDockingWindowFrame methods *** |
STDMETHOD(AddToolbar) (THIS_ IUnknown* punkSrc, LPCWSTR pwszItem, DWORD dwAd
dFlags) PURE; | | STDMETHOD(AddToolbar) (THIS_ IUnknown* punkSrc, LPCWSTR pwszItem, DWORD dwAd
dFlags) PURE; |
STDMETHOD(RemoveToolbar) (THIS_ IUnknown* punkSrc, DWORD dwRemoveFlags) PURE
; | | STDMETHOD(RemoveToolbar) (THIS_ IUnknown* punkSrc, DWORD dwRemoveFlags) PURE
; |
STDMETHOD(FindToolbar) (THIS_ LPCWSTR pwszItem, REFIID riid, void **ppv) PUR
E; | | STDMETHOD(FindToolbar) (THIS_ LPCWSTR pwszItem, REFIID riid, void **ppv) PUR
E; |
}; | | }; |
| | |
#if (_WIN32_IE >= 0x0400) | | #if (_WIN32_IE >= 0x0400) |
| | |
|
//------------------------------------------------------------------------- | | |
// | | |
// IRunnableTask interface | | |
// | | |
// This is a free threaded interface used for putting items on a background | | |
// scheduler for execution within the view. It allows a scheduler to start and | | |
// stop tasks on as many worker threads as it deems necessary. | | |
// | | |
// Run(), Kill() and Suspend() may be called from different threads. | | |
// | | |
// [Member functions] | | |
// | | |
// IRunnableTask::Run(void) | | |
// Initiate the task to run. This should return E_PENDING if the task | | |
// has been suspended. | | |
// | | |
// IRunnableTask::Kill(void) | | |
// | | |
// IRunnableTask::Suspend(void) | | |
// | | |
// IRunnableTask::Resume(void) | | |
// | | |
// IRunnableTask::IsRunning(void) | | |
// | | |
//------------------------------------------------------------------------- | | |
| | |
// Convenient state values | | |
#define IRTIR_TASK_NOT_RUNNING 0 | | |
#define IRTIR_TASK_RUNNING 1 | | |
#define IRTIR_TASK_SUSPENDED 2 | | |
#define IRTIR_TASK_PENDING 3 | | |
#define IRTIR_TASK_FINISHED 4 | | |
| | |
#undef INTERFACE | | |
#define INTERFACE IRunnableTask | | |
| | |
DECLARE_INTERFACE_( IRunnableTask, IUnknown ) | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG, AddRef)(THIS) PURE; | | |
STDMETHOD_(ULONG, Release)(THIS) PURE; | | |
| | |
// *** IRunnableTask methods *** | | |
STDMETHOD (Run)(THIS) PURE; | | |
STDMETHOD (Kill)(THIS_ BOOL fWait ) PURE; | | |
STDMETHOD (Suspend)(THIS) PURE; | | |
STDMETHOD (Resume)(THIS) PURE; | | |
STDMETHOD_(ULONG, IsRunning)(THIS) PURE; | | |
}; | | |
| | |
typedef IRunnableTask * LPRUNNABLETASK; | | |
#endif | | |
| | |
#if (_WIN32_IE >= 0x0400) | | |
| | |
#define TASKOWNERID GUID | | |
#define REFTASKOWNERID REFGUID | | |
| | |
// ---IShellTaskScheduler | | |
// An interface for interacting with and controlling a task scheduler. This | | |
// interface does not need to be free-threaded unless the items in the queue | | |
// interact with the scheduler as well as the main execution thread on which the | | |
// task scheduler was created. | | |
| | |
// IShellTaskScheduler::AddTask() | | |
// Adds Tasks to the scheduler's background queue. The TASKOWNERID allow pa | | |
rticular types | | |
// of tasks to be grouped so that they can be counted or removed. The lPara | | |
m allows the task | | |
// to be associated with a particular item (for example an item in a listvi | | |
ew). | | |
// IShellTaskScheduler::RemoveTasks() | | |
// Removes tasks from the scheduler's queue. These can be sepcified in term | | |
s of their TASKOWNERID | | |
// or their LPARAM, or both, or neither (TOID_NULL && ITSAT_DEFAULT_LPARAM | | |
results in all tasks being | | |
// removed). If a task that matches is currently running and ITaskScheduler | | |
::Status() has been | | |
// passeed ITSSFLAG_KILL_ON_DESTROY then the scheduler will attempt to kill | | |
the current task. The | | |
// fWaitIfRunning parameter is then passed to IRunnableTask::Kill(). | | |
// IShellTaskScheduler::CountTasks() | | |
// Counts the tasks in the queue depending upon the TASKOWNERID and the LPA | | |
RAM passed. (TOID_NULL and | | |
// ITSAT_DEFAULT_LPARAM will count all tasks in the queue) | | |
// IShellTaskScheduler::Status() | | |
// This sets the ReleaseStatus for the current task and the background thre | | |
ad timeout. When | | |
// ITaskScheduler::RemoveTasks() is called and there is a task currently ru | | |
nning that matches | | |
// ITSSFLAG_COMPLETE_ON_DESTROY will cause TRUE to be passed to the task's | | |
IRunnableTask::Kill(). | | |
// The dwThreadTimeout parameter if not set to the default will cause the b | | |
ackground thread to | | |
// die if no new tasks have been added to the queue in the timeout period. | | |
The Thread will be | | |
// recreated when the next new task is added. | | |
| | |
//////////////////////// | | |
// Status() flags, | | |
// wait for the current task to complete before deleting the scheduler | | |
#define ITSSFLAG_COMPLETE_ON_DESTROY 0x0000 | | |
| | |
// kill the current task (if there is one) when the task scheduler is deleted | | |
#define ITSSFLAG_KILL_ON_DESTROY 0x0001 | | |
| | |
#define ITSSFLAG_SUPPORTS_TERMINATE 0x0002 | | |
| | |
#define ITSSFLAG_FLAGS_MASK 0x0003 | | |
| | |
// set the timeout for killing the thread when the object is terminated. | | |
// this timeout can be used to stop the object from blocking the system | | |
// indefinitely. | | |
#define ITSSFLAG_THREAD_TERMINATE_TIMEOUT 0x0010 | | |
| | |
// set the timeout for threads that are idle in the thread pool | | |
#define ITSSFLAG_THREAD_POOL_TIMEOUT 0x0020 | | |
| | |
// The default timeout passed to release Status to determine how long the thread | | |
// can be asleep before the thread is expired | | |
#define ITSS_THREAD_DESTROY_DEFAULT_TIMEOUT (60*1000) | | |
| | |
// default, we won't kill it... | | |
#define ITSS_THREAD_TERMINATE_TIMEOUT (INFINITE) | | |
| | |
// there is no change to the thread timeout | | |
#define ITSS_THREAD_TIMEOUT_NO_CHANGE (INFINITE - 1) | | |
| | |
// the LPARAM allows task to be associated with items thus all tasks owned by a | | |
// particular item can be accessed by passing a non default value for this param | | |
eter | | |
#define ITSAT_DEFAULT_LPARAM 0xffffffff | | |
| | |
// Task priorities | | |
// --------------- | | |
// This depends on the cooperation of tasks currently under execution. New tasks | | |
will | | |
// be inserted in the queue in priority order. If a task of a low priority is cu | | |
rrently | | |
// under execution when a higher priority task is added, the scheduler will atte | | |
mpt | | |
// to suspend the task currently under execution. It will be resumed when the ot | | |
her tasks | | |
// have been completed. | | |
#define ITSAT_DEFAULT_PRIORITY 0x10000000 | | |
#define ITSAT_MAX_PRIORITY 0x7fffffff | | |
#define ITSAT_MIN_PRIORITY 0x00000000 | | |
| | |
#define TOID_NULL CLSID_NULL | | |
| | |
#undef INTERFACE | | |
#define INTERFACE IShellTaskScheduler | | |
| | |
DECLARE_INTERFACE_( IShellTaskScheduler, IUnknown ) | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG, AddRef)(THIS) PURE; | | |
STDMETHOD_(ULONG, Release)(THIS) PURE; | | |
| | |
// *** IShellTaskScheduler methods *** | | |
STDMETHOD (AddTask)(THIS_ IRunnableTask * pTask, | | |
REFTASKOWNERID rtoid, | | |
DWORD_PTR lParam, | | |
DWORD dwPriority ) PURE; | | |
| | |
STDMETHOD (RemoveTasks)(THIS_ REFTASKOWNERID rtoid, | | |
DWORD_PTR lParam, | | |
BOOL fWaitIfRunning ) PURE; | | |
| | |
STDMETHOD_(UINT, CountTasks)(THIS_ REFTASKOWNERID rtoid) PURE; | | |
| | |
STDMETHOD (Status)(THIS_ DWORD dwReleaseStatus, DWORD dwThreadTimeout ) PURE | | |
; | | |
}; | | |
| | |
typedef IShellTaskScheduler * LPSHELLTASKSCHEDULER; | | |
| | |
#if (_WIN32_IE >= 0x0501) | | |
| | |
#define ITSSFLAG_TASK_PLACEINFRONT 0x00000001 | | |
#define ITSSFLAG_TASK_PLACEINBACK 0x00000002 | | |
| | |
#undef INTERFACE | | |
#define INTERFACE IShellTaskScheduler2 | | |
| | |
DECLARE_INTERFACE_( IShellTaskScheduler2, IShellTaskScheduler ) | | |
{ | | |
// *** IUnknown methods *** | | |
STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG, AddRef)(THIS) PURE; | | |
STDMETHOD_(ULONG, Release)(THIS) PURE; | | |
| | |
// *** IShellTaskScheduler methods *** | | |
STDMETHOD (AddTask)(THIS_ IRunnableTask * pTask, | | |
REFTASKOWNERID rtoid, | | |
DWORD_PTR lParam, | | |
DWORD dwPriority ) PURE; | | |
| | |
STDMETHOD (RemoveTasks)(THIS_ REFTASKOWNERID rtoid, | | |
DWORD_PTR lParam, | | |
BOOL fWaitIfRunning ) PURE; | | |
| | |
STDMETHOD_(UINT, CountTasks)(THIS_ REFTASKOWNERID rtoid) PURE; | | |
| | |
STDMETHOD (Status)(THIS_ DWORD dwReleaseStatus, DWORD dwThreadTimeout ) PURE | | |
; | | |
| | |
// *** IShellTaskScheduler2 methods *** | | |
STDMETHOD (AddTask2)(THIS_ IRunnableTask * pTask, | | |
REFTASKOWNERID rtoid, | | |
DWORD_PTR lParam, | | |
DWORD dwPriority, | | |
DWORD grfFlags ) PURE; | | |
| | |
STDMETHOD (MoveTask)(THIS_ REFTASKOWNERID rtoid, | | |
DWORD_PTR lParam, | | |
DWORD dwPriority, | | |
DWORD grfFlags ) PURE; | | |
}; | | |
| | |
#endif // (_WIN32_IE >= 0x0501) | | |
| | |
#endif // (_WIN32_IE >= 0x0400) | | |
| | |
#if (_WIN32_IE >= 0x0400) | | |
| | |
/* ***************** IThumbnailCapture | | /* ***************** IThumbnailCapture |
* CaptureThumbnail : takes an IHTMLDocument2 and returns a thumbnail of specifi
ed | | * CaptureThumbnail : takes an IHTMLDocument2 and returns a thumbnail of specifi
ed |
* size as an hbitmap | | * size as an hbitmap |
*/ | | */ |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IThumbnailCapture | | #define INTERFACE IThumbnailCapture |
| | |
|
DECLARE_INTERFACE_ ( IThumbnailCapture, IUnknown ) | | DECLARE_INTERFACE_IID_(IThumbnailCapture, IUnknown, "4ea39266-7211-409f-b622-f63
dbd16c533") |
{ | | { |
// *** IThumbnailCapture methods *** | | // *** IThumbnailCapture methods *** |
STDMETHOD (CaptureThumbnail) ( THIS_ const SIZE * pMaxSize, | | STDMETHOD (CaptureThumbnail) ( THIS_ const SIZE * pMaxSize, |
IUnknown * pHTMLDoc2, | | IUnknown * pHTMLDoc2, |
HBITMAP * phbmThumbnail ) PURE; | | HBITMAP * phbmThumbnail ) PURE; |
}; | | }; |
typedef IThumbnailCapture * LPTHUMBNAILCAPTURE; | | typedef IThumbnailCapture * LPTHUMBNAILCAPTURE; |
| | |
#endif | | #endif |
| | |
|
#if (_WIN32_IE >= 0x0500) | | #if (NTDDI_VERSION >= NTDDI_WIN2K && NTDDI_VERSION < NTDDI_LONGHORN) |
| | |
#include <pshpack8.h> | | #include <pshpack8.h> |
| | |
typedef struct _EnumImageStoreDATAtag | | typedef struct _EnumImageStoreDATAtag |
{ | | { |
WCHAR szPath[MAX_PATH]; | | WCHAR szPath[MAX_PATH]; |
FILETIME ftTimeStamp; | | FILETIME ftTimeStamp; |
} ENUMSHELLIMAGESTOREDATA, * PENUMSHELLIMAGESTOREDATA; | | } ENUMSHELLIMAGESTOREDATA, * PENUMSHELLIMAGESTOREDATA; |
| | |
#include <poppack.h> /* Return to byte packing */ | | #include <poppack.h> /* Return to byte packing */ |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IEnumShellImageStore | | #define INTERFACE IEnumShellImageStore |
| | |
|
DECLARE_INTERFACE_( IEnumShellImageStore, IUnknown ) | | DECLARE_INTERFACE_IID_( IEnumShellImageStore, IUnknown, "6DFD582B-92E3-11D1-98A3
-00C04FB687DA" ) |
{ | | { |
STDMETHOD ( QueryInterface ) ( THIS_ REFIID riid, void **ppv ) PURE; | | STDMETHOD ( QueryInterface ) ( THIS_ REFIID riid, void **ppv ) PURE; |
STDMETHOD_( ULONG, AddRef ) ( THIS ) PURE; | | STDMETHOD_( ULONG, AddRef ) ( THIS ) PURE; |
STDMETHOD_( ULONG, Release ) ( THIS ) PURE; | | STDMETHOD_( ULONG, Release ) ( THIS ) PURE; |
| | |
STDMETHOD ( Reset ) ( THIS ) PURE; | | STDMETHOD ( Reset ) ( THIS ) PURE; |
STDMETHOD ( Next ) ( THIS_ ULONG celt, PENUMSHELLIMAGESTOREDATA * prgElt, UL
ONG * pceltFetched ) PURE; | | STDMETHOD ( Next ) ( THIS_ ULONG celt, PENUMSHELLIMAGESTOREDATA * prgElt, UL
ONG * pceltFetched ) PURE; |
STDMETHOD ( Skip ) ( THIS_ ULONG celt ) PURE; | | STDMETHOD ( Skip ) ( THIS_ ULONG celt ) PURE; |
STDMETHOD ( Clone ) ( THIS_ IEnumShellImageStore ** ppEnum ) PURE; | | STDMETHOD ( Clone ) ( THIS_ IEnumShellImageStore ** ppEnum ) PURE; |
}; | | }; |
| | |
skipping to change at line 2840 | | skipping to change at line 1845 |
| | |
// flags used to determine the capabilities of the storage for the images | | // flags used to determine the capabilities of the storage for the images |
#define SHIMSTCAPFLAG_LOCKABLE 0x0001 // does the store require/support
locking | | #define SHIMSTCAPFLAG_LOCKABLE 0x0001 // does the store require/support
locking |
#define SHIMSTCAPFLAG_PURGEABLE 0x0002 // does the store require dead it
ems purging externally ? | | #define SHIMSTCAPFLAG_PURGEABLE 0x0002 // does the store require dead it
ems purging externally ? |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IShellImageStore | | #define INTERFACE IShellImageStore |
| | |
// this interface is used to manipulate the Image cache. It can potentially be u
sed | | // this interface is used to manipulate the Image cache. It can potentially be u
sed |
// in a free threaded manner in conjunction with the Lock parameter to Open and
close | | // in a free threaded manner in conjunction with the Lock parameter to Open and
close |
|
DECLARE_INTERFACE_( IShellImageStore, IUnknown ) | | DECLARE_INTERFACE_IID_( IShellImageStore, IUnknown, "48C8118C-B924-11D1-98D5-00C
04FB687DA" ) |
{ | | { |
STDMETHOD ( QueryInterface )( THIS_ REFIID riid, void **ppv ) PURE; | | STDMETHOD ( QueryInterface )( THIS_ REFIID riid, void **ppv ) PURE; |
STDMETHOD_( ULONG, AddRef ) ( THIS ) PURE; | | STDMETHOD_( ULONG, AddRef ) ( THIS ) PURE; |
STDMETHOD_( ULONG, Release ) ( THIS ) PURE; | | STDMETHOD_( ULONG, Release ) ( THIS ) PURE; |
| | |
// if the lock parameter is used, then all other calls into | | // if the lock parameter is used, then all other calls into |
// open and/or create will block until the lock is released. | | // open and/or create will block until the lock is released. |
STDMETHOD ( Open ) ( THIS_ DWORD dwMode, DWORD * pdwLock ) PURE; | | STDMETHOD ( Open ) ( THIS_ DWORD dwMode, DWORD * pdwLock ) PURE; |
STDMETHOD ( Create ) ( THIS_ DWORD dwMode, DWORD * pdwLock ) PURE; | | STDMETHOD ( Create ) ( THIS_ DWORD dwMode, DWORD * pdwLock ) PURE; |
| | |
| | |
skipping to change at line 2870 | | skipping to change at line 1875 |
| | |
STDMETHOD ( AddEntry ) ( THIS_ LPCWSTR pszName, const FILETIME * pftTimeStam
p, DWORD dwMode, HBITMAP hImage ) PURE; | | STDMETHOD ( AddEntry ) ( THIS_ LPCWSTR pszName, const FILETIME * pftTimeStam
p, DWORD dwMode, HBITMAP hImage ) PURE; |
STDMETHOD ( GetEntry ) ( THIS_ LPCWSTR pszName, DWORD dwMode, HBITMAP * phIm
age ) PURE; | | STDMETHOD ( GetEntry ) ( THIS_ LPCWSTR pszName, DWORD dwMode, HBITMAP * phIm
age ) PURE; |
STDMETHOD ( DeleteEntry ) ( THIS_ LPCWSTR pszName ) PURE; | | STDMETHOD ( DeleteEntry ) ( THIS_ LPCWSTR pszName ) PURE; |
STDMETHOD ( IsEntryInStore ) ( THIS_ LPCWSTR pszName, FILETIME * pftTimeStam
p ) PURE; | | STDMETHOD ( IsEntryInStore ) ( THIS_ LPCWSTR pszName, FILETIME * pftTimeStam
p ) PURE; |
| | |
STDMETHOD ( Enum ) ( THIS_ LPENUMSHELLIMAGESTORE * ppEnum ) PURE; | | STDMETHOD ( Enum ) ( THIS_ LPENUMSHELLIMAGESTORE * ppEnum ) PURE; |
}; | | }; |
| | |
typedef IShellImageStore * LPSHELLIMAGESTORE; | | typedef IShellImageStore * LPSHELLIMAGESTORE; |
|
#endif | | |
| | #endif // (NTDDI_VERSION >= NTDDI_WIN2K && NTDDI_VERSION < NTDDI_LONGHORN) |
| | |
#if (_WIN32_IE >= 0x0400) | | #if (_WIN32_IE >= 0x0400) |
| | |
//// IShellFolderBand | | //// IShellFolderBand |
| | |
// Field mask | | // Field mask |
#define ISFB_MASK_STATE 0x00000001 // TRUE if dwStateMask and dwState i
s valid | | #define ISFB_MASK_STATE 0x00000001 // TRUE if dwStateMask and dwState i
s valid |
#define ISFB_MASK_BKCOLOR 0x00000002 // TRUE if crBkgnd field is valid | | #define ISFB_MASK_BKCOLOR 0x00000002 // TRUE if crBkgnd field is valid |
#define ISFB_MASK_VIEWMODE 0x00000004 // TRUE if wViewMode field is valid | | #define ISFB_MASK_VIEWMODE 0x00000004 // TRUE if wViewMode field is valid |
#define ISFB_MASK_SHELLFOLDER 0x00000008 | | #define ISFB_MASK_SHELLFOLDER 0x00000008 |
| | |
skipping to change at line 2896 | | skipping to change at line 1902 |
#define ISFB_STATE_ALLOWRENAME 0x00000002 | | #define ISFB_STATE_ALLOWRENAME 0x00000002 |
#define ISFB_STATE_NOSHOWTEXT 0x00000004 // TRUE if _fNoShowText | | #define ISFB_STATE_NOSHOWTEXT 0x00000004 // TRUE if _fNoShowText |
#define ISFB_STATE_CHANNELBAR 0x00000010 // TRUE if we want NavigateTarget su
pport | | #define ISFB_STATE_CHANNELBAR 0x00000010 // TRUE if we want NavigateTarget su
pport |
#define ISFB_STATE_QLINKSMODE 0x00000020 // TRUE if we want to turn off drag
& drop onto content items | | #define ISFB_STATE_QLINKSMODE 0x00000020 // TRUE if we want to turn off drag
& drop onto content items |
#define ISFB_STATE_FULLOPEN 0x00000040 // TRUE if band should maximize when
opened | | #define ISFB_STATE_FULLOPEN 0x00000040 // TRUE if band should maximize when
opened |
#define ISFB_STATE_NONAMESORT 0x00000080 // TRUE if band should _not_ sort ic
ons by name | | #define ISFB_STATE_NONAMESORT 0x00000080 // TRUE if band should _not_ sort ic
ons by name |
#define ISFB_STATE_BTNMINSIZE 0x00000100 // TRUE if band should report min th
ickness of button | | #define ISFB_STATE_BTNMINSIZE 0x00000100 // TRUE if band should report min th
ickness of button |
| | |
#define ISFBVIEWMODE_SMALLICONS 0x0001 | | #define ISFBVIEWMODE_SMALLICONS 0x0001 |
#define ISFBVIEWMODE_LARGEICONS 0x0002 | | #define ISFBVIEWMODE_LARGEICONS 0x0002 |
|
| | #if (_WIN32_IE < _WIN32_IE_IE70) |
#define ISFBVIEWMODE_LOGOS 0x0003 | | #define ISFBVIEWMODE_LOGOS 0x0003 |
|
| | #endif |
| | |
#include <pshpack8.h> | | #include <pshpack8.h> |
| | |
typedef struct { | | typedef struct { |
DWORD dwMask; // [in] ISFB_MASK mask of valid fields from crBkgn
d on | | DWORD dwMask; // [in] ISFB_MASK mask of valid fields from crBkgn
d on |
DWORD dwStateMask; // [in] ISFB_STATE mask of dwState bits being set/
queried | | DWORD dwStateMask; // [in] ISFB_STATE mask of dwState bits being set/
queried |
DWORD dwState; // [in/out] ISFB_STATE bits | | DWORD dwState; // [in/out] ISFB_STATE bits |
COLORREF crBkgnd; // [in/out] | | COLORREF crBkgnd; // [in/out] |
COLORREF crBtnLt; // [in/out] | | COLORREF crBtnLt; // [in/out] |
COLORREF crBtnDk; // [in/out] | | COLORREF crBtnDk; // [in/out] |
WORD wViewMode; // [in/out] | | WORD wViewMode; // [in/out] |
WORD wAlign; // not used (yet) | | WORD wAlign; // not used (yet) |
IShellFolder * psf; // [out] | | IShellFolder * psf; // [out] |
|
LPITEMIDLIST pidl; // [out] | | PIDLIST_ABSOLUTE pidl; // [out] |
} BANDINFOSFB, *PBANDINFOSFB; | | } BANDINFOSFB, *PBANDINFOSFB; |
| | |
#include <poppack.h> /* Return to byte packing */ | | #include <poppack.h> /* Return to byte packing */ |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IShellFolderBand | | #define INTERFACE IShellFolderBand |
| | |
|
DECLARE_INTERFACE_(IShellFolderBand, IUnknown) | | DECLARE_INTERFACE_IID_(IShellFolderBand, IUnknown, "7FE80CC8-C247-11d0-B93A-00A0
C90312E1") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IShellFolderBand Methods *** | | // *** IShellFolderBand Methods *** |
|
STDMETHOD(InitializeSFB)(THIS_ IShellFolder *psf, LPCITEMIDLIST pidl) PURE; | | STDMETHOD(InitializeSFB)(THIS_ __in_opt IShellFolder *psf, __in_opt PCIDLIST |
STDMETHOD(SetBandInfoSFB)(THIS_ PBANDINFOSFB pbi) PURE; | | _ABSOLUTE pidl) PURE; |
STDMETHOD(GetBandInfoSFB)(THIS_ PBANDINFOSFB pbi) PURE; | | STDMETHOD(SetBandInfoSFB)(THIS_ __in PBANDINFOSFB pbi) PURE; |
| | STDMETHOD(GetBandInfoSFB)(THIS_ __inout PBANDINFOSFB pbi) PURE; |
}; | | }; |
| | |
// Command Target IDs | | // Command Target IDs |
enum { | | enum { |
SFBID_PIDLCHANGED, | | SFBID_PIDLCHANGED, |
}; | | }; |
| | |
//// IDeskBarClient | | //// IDeskBarClient |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IDeskBarClient | | #define INTERFACE IDeskBarClient |
| | |
|
DECLARE_INTERFACE_(IDeskBarClient, IOleWindow) | | DECLARE_INTERFACE_IID_(IDeskBarClient, IOleWindow, "EB0FE175-1A3A-11D0-89B3-00A0
C90A90AC") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IOleWindow methods *** | | // *** IOleWindow methods *** |
|
STDMETHOD(GetWindow) (THIS_ HWND * lphwnd) PURE; | | STDMETHOD(GetWindow) (THIS_ __out HWND * lphwnd) PURE; |
STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE; | | STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE; |
| | |
// *** IDeskBarClient methods *** | | // *** IDeskBarClient methods *** |
|
STDMETHOD(SetDeskBarSite) (THIS_ IUnknown* punkSite) PURE; | | STDMETHOD(SetDeskBarSite) (THIS_ __in_opt IUnknown* punkSite) PURE; |
STDMETHOD(SetModeDBC) (THIS_ DWORD dwMode) PURE; | | STDMETHOD(SetModeDBC) (THIS_ DWORD dwMode) PURE; |
STDMETHOD(UIActivateDBC) (THIS_ DWORD dwState) PURE; | | STDMETHOD(UIActivateDBC) (THIS_ DWORD dwState) PURE; |
STDMETHOD(GetSize) (THIS_ DWORD dwWhich, LPRECT prc) PURE; | | STDMETHOD(GetSize) (THIS_ DWORD dwWhich, __out LPRECT prc) PURE; |
}; | | }; |
| | |
#define DBC_GS_IDEAL 0 // get the ideal size | | #define DBC_GS_IDEAL 0 // get the ideal size |
#define DBC_GS_SIZEDOWN 1 // clip the height of a rect to a multiple of t
he rebar's integral size | | #define DBC_GS_SIZEDOWN 1 // clip the height of a rect to a multiple of t
he rebar's integral size |
| | |
#define DBC_HIDE 0 // Band is hidden (being destroyed) | | #define DBC_HIDE 0 // Band is hidden (being destroyed) |
#define DBC_SHOW 1 // Band is visible | | #define DBC_SHOW 1 // Band is visible |
#define DBC_SHOWOBSCURE 2 // Band is completely obscured | | #define DBC_SHOWOBSCURE 2 // Band is completely obscured |
| | |
enum { | | enum { |
DBCID_EMPTY = 0, // bandsite is empty | | DBCID_EMPTY = 0, // bandsite is empty |
DBCID_ONDRAG = 1, // (down)DragMoveEnter/Leave vaIn:I4:eDrag | | DBCID_ONDRAG = 1, // (down)DragMoveEnter/Leave vaIn:I4:eDrag |
DBCID_CLSIDOFBAR = 2, // clsid of bar inside | | DBCID_CLSIDOFBAR = 2, // clsid of bar inside |
DBCID_RESIZE = 3, // resize from keyboard | | DBCID_RESIZE = 3, // resize from keyboard |
DBCID_GETBAR = 4, // returns vaOut:VT_UNKNOWN of hosting dockbar (IDes
kBar) | | DBCID_GETBAR = 4, // returns vaOut:VT_UNKNOWN of hosting dockbar (IDes
kBar) |
}; | | }; |
| | |
|
#endif // (_WIN32_IE > 0x0400) | | #endif // _WIN32_IE > 0x0400 |
| | |
#if (_WIN32_IE >= 0x400) | | #if (_WIN32_IE >= 0x400) |
// | | // |
// We need to make sure that WININET.H is included before this interface is | | // We need to make sure that WININET.H is included before this interface is |
// used because the COMPONENT structure uses INTERNET_MAX_URL_LENGTH | | // used because the COMPONENT structure uses INTERNET_MAX_URL_LENGTH |
// | | // |
#ifdef _WININET_ | | #ifdef _WININET_ |
// | | // |
// Flags and structures used by IActiveDesktop | | // Flags and structures used by IActiveDesktop |
// | | // |
| | |
skipping to change at line 3116 | | skipping to change at line 2124 |
// Flags for IActiveDesktop::ApplyChanges() | | // Flags for IActiveDesktop::ApplyChanges() |
#define AD_APPLY_SAVE 0x00000001 | | #define AD_APPLY_SAVE 0x00000001 |
#define AD_APPLY_HTMLGEN 0x00000002 | | #define AD_APPLY_HTMLGEN 0x00000002 |
#define AD_APPLY_REFRESH 0x00000004 | | #define AD_APPLY_REFRESH 0x00000004 |
#define AD_APPLY_ALL (AD_APPLY_SAVE | AD_APPLY_HTMLGEN | AD_APPLY_R
EFRESH) | | #define AD_APPLY_ALL (AD_APPLY_SAVE | AD_APPLY_HTMLGEN | AD_APPLY_R
EFRESH) |
#define AD_APPLY_FORCE 0x00000008 | | #define AD_APPLY_FORCE 0x00000008 |
#define AD_APPLY_BUFFERED_REFRESH 0x00000010 | | #define AD_APPLY_BUFFERED_REFRESH 0x00000010 |
#define AD_APPLY_DYNAMICREFRESH 0x00000020 | | #define AD_APPLY_DYNAMICREFRESH 0x00000020 |
| | |
//////////////////////////////////////////// | | //////////////////////////////////////////// |
|
| | // Flags for IActiveDesktop::GetWallpaper() |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #define AD_GETWP_BMP 0x00000000 |
| | #define AD_GETWP_IMAGE 0x00000001 |
| | #define AD_GETWP_LAST_APPLIED 0x00000002 |
| | #endif |
| | |
| | //////////////////////////////////////////// |
// Flags for IActiveDesktop::GetWallpaperOptions() | | // Flags for IActiveDesktop::GetWallpaperOptions() |
// IActiveDesktop::SetWallpaperOptions() | | // IActiveDesktop::SetWallpaperOptions() |
#define WPSTYLE_CENTER 0 | | #define WPSTYLE_CENTER 0 |
#define WPSTYLE_TILE 1 | | #define WPSTYLE_TILE 1 |
#define WPSTYLE_STRETCH 2 | | #define WPSTYLE_STRETCH 2 |
#define WPSTYLE_MAX 3 | | #define WPSTYLE_MAX 3 |
| | |
//////////////////////////////////////////// | | //////////////////////////////////////////// |
// Flags for IActiveDesktop::ModifyComponent() | | // Flags for IActiveDesktop::ModifyComponent() |
| | |
| | |
skipping to change at line 3173 | | skipping to change at line 2189 |
#define COMPONENT_DEFAULT_LEFT (0xFFFF) | | #define COMPONENT_DEFAULT_LEFT (0xFFFF) |
#define COMPONENT_DEFAULT_TOP (0xFFFF) | | #define COMPONENT_DEFAULT_TOP (0xFFFF) |
| | |
// | | // |
// Interface for manipulating the Active Desktop. | | // Interface for manipulating the Active Desktop. |
// | | // |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IActiveDesktop | | #define INTERFACE IActiveDesktop |
| | |
|
DECLARE_INTERFACE_( IActiveDesktop, IUnknown ) | | DECLARE_INTERFACE_IID_(IActiveDesktop, IUnknown, "f490eb00-1240-11d1-9888-006097
deacf9") |
{ | | { |
// IUnknown methods | | // IUnknown methods |
|
STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD (QueryInterface)(THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef) ( THIS ) PURE; | | STDMETHOD_(ULONG, AddRef) ( THIS ) PURE; |
STDMETHOD_(ULONG, Release) ( THIS ) PURE; | | STDMETHOD_(ULONG, Release) ( THIS ) PURE; |
| | |
// IActiveDesktop methods | | // IActiveDesktop methods |
STDMETHOD (ApplyChanges)(THIS_ DWORD dwFlags) PURE; | | STDMETHOD (ApplyChanges)(THIS_ DWORD dwFlags) PURE; |
|
STDMETHOD (GetWallpaper)(THIS_ LPWSTR pwszWallpaper, UINT cchWallpaper, DWOR
D dwReserved) PURE; | | STDMETHOD (GetWallpaper)(THIS_ __out_ecount(cchWallpaper) LPWSTR pwszWallpap
er, UINT cchWallpaper, DWORD dwFlags) PURE; |
STDMETHOD (SetWallpaper)(THIS_ LPCWSTR pwszWallpaper, DWORD dwReserved) PURE
; | | STDMETHOD (SetWallpaper)(THIS_ LPCWSTR pwszWallpaper, DWORD dwReserved) PURE
; |
|
STDMETHOD (GetWallpaperOptions)(THIS_ LPWALLPAPEROPT pwpo, DWORD dwReserved) | | STDMETHOD (GetWallpaperOptions)(THIS_ __inout LPWALLPAPEROPT pwpo, DWORD dwR |
PURE; | | eserved) PURE; |
STDMETHOD (SetWallpaperOptions)(THIS_ LPCWALLPAPEROPT pwpo, DWORD dwReserved | | STDMETHOD (SetWallpaperOptions)(THIS_ __in LPCWALLPAPEROPT pwpo, DWORD dwRes |
) PURE; | | erved) PURE; |
STDMETHOD (GetPattern)(THIS_ LPWSTR pwszPattern, UINT cchPattern, DWORD dwRe | | STDMETHOD (GetPattern)(THIS_ __out_ecount(cchPattern) LPWSTR pwszPattern, UI |
served) PURE; | | NT cchPattern, DWORD dwReserved) PURE; |
STDMETHOD (SetPattern)(THIS_ LPCWSTR pwszPattern, DWORD dwReserved) PURE; | | STDMETHOD (SetPattern)(THIS_ LPCWSTR pwszPattern, DWORD dwReserved) PURE; |
|
STDMETHOD (GetDesktopItemOptions)(THIS_ LPCOMPONENTSOPT pco, DWORD dwReserve | | STDMETHOD (GetDesktopItemOptions)(THIS_ __inout LPCOMPONENTSOPT pco, DWORD d |
d) PURE; | | wReserved) PURE; |
STDMETHOD (SetDesktopItemOptions)(THIS_ LPCCOMPONENTSOPT pco, DWORD dwReserv | | STDMETHOD (SetDesktopItemOptions)(THIS_ __in LPCCOMPONENTSOPT pco, DWORD dwR |
ed) PURE; | | eserved) PURE; |
STDMETHOD (AddDesktopItem)(THIS_ LPCCOMPONENT pcomp, DWORD dwReserved) PURE; | | STDMETHOD (AddDesktopItem)(THIS_ __in LPCCOMPONENT pcomp, DWORD dwReserved) |
STDMETHOD (AddDesktopItemWithUI)(THIS_ HWND hwnd, LPCOMPONENT pcomp, DWORD d | | PURE; |
wReserved) PURE; | | STDMETHOD (AddDesktopItemWithUI)(THIS_ HWND hwnd, __in LPCOMPONENT pcomp, DW |
STDMETHOD (ModifyDesktopItem)(THIS_ LPCCOMPONENT pcomp, DWORD dwFlags) PURE; | | ORD dwReserved) PURE; |
STDMETHOD (RemoveDesktopItem)(THIS_ LPCCOMPONENT pcomp, DWORD dwReserved) PU | | STDMETHOD (ModifyDesktopItem)(THIS_ __inout LPCCOMPONENT pcomp, DWORD dwFlag |
RE; | | s) PURE; |
STDMETHOD (GetDesktopItemCount)(THIS_ LPINT lpiCount, DWORD dwReserved) PURE | | STDMETHOD (RemoveDesktopItem)(THIS_ __in LPCCOMPONENT pcomp, DWORD dwReserve |
; | | d) PURE; |
STDMETHOD (GetDesktopItem)(THIS_ int nComponent, LPCOMPONENT pcomp, DWORD dw | | STDMETHOD (GetDesktopItemCount)(THIS_ __out LPINT lpiCount, DWORD dwReserved |
Reserved) PURE; | | ) PURE; |
STDMETHOD (GetDesktopItemByID)(THIS_ ULONG_PTR dwID, LPCOMPONENT pcomp, DWOR | | STDMETHOD (GetDesktopItem)(THIS_ int nComponent, __inout LPCOMPONENT pcomp, |
D dwReserved) PURE; | | DWORD dwReserved) PURE; |
STDMETHOD (GenerateDesktopItemHtml)(THIS_ LPCWSTR pwszFileName, LPCOMPONENT | | STDMETHOD (GetDesktopItemByID)(THIS_ ULONG_PTR dwID, __inout LPCOMPONENT pco |
pcomp, DWORD dwReserved) PURE; | | mp, DWORD dwReserved) PURE; |
STDMETHOD (AddUrl)(THIS_ HWND hwnd, LPCWSTR pszSource, LPCOMPONENT pcomp, DW | | STDMETHOD (GenerateDesktopItemHtml)(THIS_ LPCWSTR pwszFileName, __in LPCOMPO |
ORD dwFlags) PURE; | | NENT pcomp, DWORD dwReserved) PURE; |
STDMETHOD (GetDesktopItemBySource)(THIS_ LPCWSTR pwszSource, LPCOMPONENT pco | | STDMETHOD (AddUrl)(THIS_ HWND hwnd, LPCWSTR pszSource, __in LPCOMPONENT pcom |
mp, DWORD dwReserved) PURE; | | p, DWORD dwFlags) PURE; |
| | STDMETHOD (GetDesktopItemBySource)(THIS_ LPCWSTR pwszSource, __inout LPCOMPO |
| | NENT pcomp, DWORD dwReserved) PURE; |
}; | | }; |
| | |
typedef IActiveDesktop * LPACTIVEDESKTOP; | | typedef IActiveDesktop * LPACTIVEDESKTOP; |
| | |
// Flags for SetSafeMode | | // Flags for SetSafeMode |
#define SSM_CLEAR 0x0000 | | #define SSM_CLEAR 0x0000 |
#define SSM_SET 0x0001 | | #define SSM_SET 0x0001 |
#define SSM_REFRESH 0x0002 | | #define SSM_REFRESH 0x0002 |
#define SSM_UPDATE 0x0004 | | #define SSM_UPDATE 0x0004 |
| | |
| | |
skipping to change at line 3223 | | skipping to change at line 2239 |
#define SCHEME_LOCAL 0x0004 | | #define SCHEME_LOCAL 0x0004 |
#define SCHEME_GLOBAL 0x0008 | | #define SCHEME_GLOBAL 0x0008 |
#define SCHEME_REFRESH 0x0010 | | #define SCHEME_REFRESH 0x0010 |
#define SCHEME_UPDATE 0x0020 | | #define SCHEME_UPDATE 0x0020 |
#define SCHEME_DONOTUSE 0x0040 // used to be SCHEME_ENUMERATE; no longer support
ed | | #define SCHEME_DONOTUSE 0x0040 // used to be SCHEME_ENUMERATE; no longer support
ed |
#define SCHEME_CREATE 0x0080 | | #define SCHEME_CREATE 0x0080 |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IActiveDesktopP | | #define INTERFACE IActiveDesktopP |
| | |
|
DECLARE_INTERFACE_( IActiveDesktopP, IUnknown ) | | DECLARE_INTERFACE_IID_(IActiveDesktopP, IUnknown, "52502EE0-EC80-11D0-89AB-00C04
FC2972D") |
{ | | { |
// IUnknown methods | | // IUnknown methods |
|
STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD (QueryInterface)(THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef) ( THIS ) PURE; | | STDMETHOD_(ULONG, AddRef) ( THIS ) PURE; |
STDMETHOD_(ULONG, Release) ( THIS ) PURE; | | STDMETHOD_(ULONG, Release) ( THIS ) PURE; |
| | |
// IActiveDesktopP methods | | // IActiveDesktopP methods |
STDMETHOD (SetSafeMode)(THIS_ DWORD dwFlags) PURE; | | STDMETHOD (SetSafeMode)(THIS_ DWORD dwFlags) PURE; |
STDMETHOD (EnsureUpdateHTML)(THIS) PURE; | | STDMETHOD (EnsureUpdateHTML)(THIS) PURE; |
STDMETHOD (SetScheme)(THIS_ LPCWSTR pwszSchemeName, DWORD dwFlags) PURE; | | STDMETHOD (SetScheme)(THIS_ LPCWSTR pwszSchemeName, DWORD dwFlags) PURE; |
|
STDMETHOD (GetScheme)(THIS_ LPWSTR pwszSchemeName, DWORD *lpdwcchBuffer, DWO
RD dwFlags) PURE; | | STDMETHOD (GetScheme)(THIS_ __out_ecount(*lpdwcchBuffer) LPWSTR pwszSchemeNa
me, __inout DWORD *lpdwcchBuffer, DWORD dwFlags) PURE; |
// | | // |
}; | | }; |
| | |
typedef IActiveDesktopP * LPACTIVEDESKTOPP; | | typedef IActiveDesktopP * LPACTIVEDESKTOPP; |
| | |
//Flags for GetObjectFlags | | //Flags for GetObjectFlags |
#define GADOF_DIRTY 0x00000001 | | #define GADOF_DIRTY 0x00000001 |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IADesktopP2 | | #define INTERFACE IADesktopP2 |
| | |
|
DECLARE_INTERFACE_( IADesktopP2, IUnknown ) | | DECLARE_INTERFACE_IID_(IADesktopP2, IUnknown, "B22754E2-4574-11d1-9888-006097DEA
CF9") |
{ | | { |
// IUnknown methods | | // IUnknown methods |
|
STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD (QueryInterface)(THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef) ( THIS ) PURE; | | STDMETHOD_(ULONG, AddRef) ( THIS ) PURE; |
STDMETHOD_(ULONG, Release) ( THIS ) PURE; | | STDMETHOD_(ULONG, Release) ( THIS ) PURE; |
| | |
// IADesktopP2 methods | | // IADesktopP2 methods |
STDMETHOD (ReReadWallpaper)(THIS) PURE; | | STDMETHOD (ReReadWallpaper)(THIS) PURE; |
|
STDMETHOD (GetADObjectFlags)(THIS_ DWORD *lpdwFlags, DWORD dwMask) PURE; | | STDMETHOD (GetADObjectFlags)(THIS_ __out DWORD *lpdwFlags, DWORD dwMask) PUR
E; |
STDMETHOD (UpdateAllDesktopSubscriptions)(THIS) PURE; | | STDMETHOD (UpdateAllDesktopSubscriptions)(THIS) PURE; |
|
STDMETHOD (MakeDynamicChanges)(THIS_ IOleObject *pOleObj) PURE; | | STDMETHOD (MakeDynamicChanges)(THIS_ __in IOleObject *pOleObj) PURE; |
}; | | }; |
| | |
typedef IADesktopP2 * LPADESKTOPP2; | | typedef IADesktopP2 * LPADESKTOPP2; |
| | |
#endif // _WININET_ | | #endif // _WININET_ |
| | |
#if (_WIN32_IE >= 0x0500) | | #if (_WIN32_IE >= 0x0500) |
| | |
#define MAX_COLUMN_NAME_LEN 80 | | #define MAX_COLUMN_NAME_LEN 80 |
#define MAX_COLUMN_DESC_LEN 128 | | #define MAX_COLUMN_DESC_LEN 128 |
| | |
skipping to change at line 3311 | | skipping to change at line 2327 |
} SHCOLUMNDATA, *LPSHCOLUMNDATA; | | } SHCOLUMNDATA, *LPSHCOLUMNDATA; |
typedef const SHCOLUMNDATA* LPCSHCOLUMNDATA; | | typedef const SHCOLUMNDATA* LPCSHCOLUMNDATA; |
| | |
#include <poppack.h> /* Return to byte packing */ | | #include <poppack.h> /* Return to byte packing */ |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IColumnProvider | | #define INTERFACE IColumnProvider |
| | |
// Note: these objects must be threadsafe! GetItemData _will_ be called | | // Note: these objects must be threadsafe! GetItemData _will_ be called |
// simultaneously from multiple threads. | | // simultaneously from multiple threads. |
|
DECLARE_INTERFACE_(IColumnProvider, IUnknown) | | DECLARE_INTERFACE_IID_(IColumnProvider, IUnknown, "E8025004-1C42-11d2-BE2C-00A0C
9A83DA1") |
{ | | { |
// IUnknown methods | | // IUnknown methods |
|
STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD (QueryInterface)(THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG, AddRef)(THIS) PURE; | | STDMETHOD_(ULONG, AddRef)(THIS) PURE; |
STDMETHOD_(ULONG, Release)(THIS) PURE; | | STDMETHOD_(ULONG, Release)(THIS) PURE; |
| | |
// IColumnProvider methods | | // IColumnProvider methods |
STDMETHOD (Initialize)(THIS_ LPCSHCOLUMNINIT psci) PURE; | | STDMETHOD (Initialize)(THIS_ LPCSHCOLUMNINIT psci) PURE; |
|
STDMETHOD (GetColumnInfo)(THIS_ DWORD dwIndex, SHCOLUMNINFO *psci) PURE; | | STDMETHOD (GetColumnInfo)(THIS_ DWORD dwIndex, __out SHCOLUMNINFO *psci) PUR |
STDMETHOD (GetItemData)(THIS_ LPCSHCOLUMNID pscid, LPCSHCOLUMNDATA pscd, VAR | | E; |
IANT *pvarData) PURE; | | STDMETHOD (GetItemData)(THIS_ LPCSHCOLUMNID pscid, LPCSHCOLUMNDATA pscd, __o |
}; | | ut VARIANT *pvarData) PURE; |
| | |
/////////////////////////////////////////////////////// | | |
// | | |
// Drag and Drop helper | | |
// | | |
// Purpose: To expose the Shell drag images | | |
// | | |
// This interface is implemented in the shell by CLSID_DragDropHelper. | | |
// | | |
// To use: | | |
// If you are the source of a drag (i.e. in response to LV_DRAGBEGIN or | | |
// equivelent begin drag message) call | | |
// IDragSourceHelper::InitializeFromWindow | | |
// (<hwnd of window supporting DI_GETDRAGIMAGE>, | | |
// <pointer to POINT indicating offset to the mouse from | | |
// the upper left corner of the image>, | | |
// <pointer to data object>) | | |
// | | |
// NOTE: The Data object must support IDataObject::SetData with multiple | | |
// data types and GetData must implement data type cloning | | |
// (Including HGLOBAL), not just aliasing. | | |
// | | |
// If you wish to have an image while over your application add the | | |
// IDragImages::Dr* calls to your IDropTarget implementation. For Example: | | |
// | | |
// STDMETHODIMP CUserDropTarget::DragEnter(IDataObject* pDataObject, | | |
// DWORD grfKeyState, | | |
// POINTL pt, DWORD* pdwEffect) | | |
// { | | |
// // Process your DragEnter | | |
// // Call IDragImages::DragEnter last. | | |
// _pDropTargetHelper->DragEnter(_hwndDragOver, pDataObject, | | |
// (POINT*)&pt, *pdwEffect); | | |
// return hres; | | |
// } | | |
// | | |
// | | |
// If you wish to be able to source a drag image from a custom control, | | |
// implement a handler for the RegisterWindowMessage(DI_GETDRAGIMAGE). | | |
// The LPARAM is a pointer to an SHDRAGIMAGE structure. | | |
// | | |
// sizeDragImage - Calculate the length and width required to render | | |
// the images. | | |
// ptOffset - Calculate the offset from the upper left corner to | | |
// the mouse cursor within the image | | |
// hbmpDragImage - CreateBitmap( sizeDragImage.cx, sizeDragImage.cy, | | |
// GetDeviceCaps(hdcScreen, PLANES), | | |
// GetDeviceCaps(hdcScreen, BITSPIXEL), | | |
// NULL); | | |
// | | |
// Drag Images will only be displayed on Windows NT 5.0 or later. | | |
// | | |
// | | |
// Note about IDropTargetHelper::Show - This method is provided for | | |
// showing/hiding the Drag image in low color depth video modes. When | | |
// painting to a window that is currently being dragged over (i.e. For | | |
// indicating a selection) you need to hide the drag image by calling this | | |
// method passing FALSE. After the window is done painting, Show the image | | |
// again by passing TRUE. | | |
| | |
#include <pshpack8.h> | | |
| | |
typedef struct | | |
{ | | |
SIZE sizeDragImage; // OUT - The length and Width of the | | |
// rendered image | | |
POINT ptOffset; // OUT - The Offset from the mouse cursor to | | |
// the upper left corner of the image | | |
HBITMAP hbmpDragImage; // OUT - The Bitmap containing the rendered | | |
// drag images | | |
COLORREF crColorKey; // OUT - The COLORREF that has been blitted | | |
// to the background of the images | | |
} SHDRAGIMAGE, *LPSHDRAGIMAGE; | | |
| | |
#include <poppack.h> /* Return to byte packing */ | | |
| | |
// This is sent to a window to get the rendered images to a bitmap | | |
// Call RegisterWindowMessage to get the ID | | |
#define DI_GETDRAGIMAGE TEXT("ShellGetDragImage") | | |
| | |
#undef INTERFACE | | |
#define INTERFACE IDropTargetHelper | | |
| | |
DECLARE_INTERFACE_( IDropTargetHelper, IUnknown ) | | |
{ | | |
// IUnknown methods | | |
STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG, AddRef) ( THIS ) PURE; | | |
STDMETHOD_(ULONG, Release) ( THIS ) PURE; | | |
| | |
// IDropTargetHelper | | |
STDMETHOD (DragEnter)(THIS_ HWND hwndTarget, IDataObject* pDataObject, | | |
POINT* ppt, DWORD dwEffect) PURE; | | |
STDMETHOD (DragLeave)(THIS) PURE; | | |
STDMETHOD (DragOver)(THIS_ POINT* ppt, DWORD dwEffect) PURE; | | |
STDMETHOD (Drop)(THIS_ IDataObject* pDataObject, POINT* ppt, | | |
DWORD dwEffect) PURE; | | |
STDMETHOD (Show)(THIS_ BOOL fShow) PURE; | | |
| | |
}; | | }; |
| | |
|
#undef INTERFACE | | #endif // _WIN32_IE >= 0x0500 |
#define INTERFACE IDragSourceHelper | | |
| | |
DECLARE_INTERFACE_( IDragSourceHelper, IUnknown ) | | |
{ | | |
// IUnknown methods | | |
STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; | | |
STDMETHOD_(ULONG, AddRef) ( THIS ) PURE; | | |
STDMETHOD_(ULONG, Release) ( THIS ) PURE; | | |
| | |
// IDragSourceHelper | | |
STDMETHOD (InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE pshdi, | | |
IDataObject* pDataObject) PURE; | | |
STDMETHOD (InitializeFromWindow)(THIS_ HWND hwnd, POINT* ppt, | | |
IDataObject* pDataObject) PURE; | | |
}; | | |
#endif // (_WIN32_IE >= 0x0500) | | |
#endif // _WIN32_IE | | #endif // _WIN32_IE |
| | |
//========================================================================== | | //========================================================================== |
// Clipboard format which may be supported by IDataObject from system | | // Clipboard format which may be supported by IDataObject from system |
// defined shell folders (such as directories, network, ...). | | // defined shell folders (such as directories, network, ...). |
//========================================================================== | | //========================================================================== |
| | |
|
#define CFSTR_SHELLIDLIST TEXT("Shell IDList Array") // C | | #define CFSTR_SHELLIDLIST TEXT("Shell IDList Array") |
F_IDLIST | | // CF_IDLIST |
#define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets") // C | | #define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets") |
F_OBJECTPOSITIONS | | // CF_OBJECTPOSITIONS |
#define CFSTR_NETRESOURCES TEXT("Net Resource") // C | | #define CFSTR_NETRESOURCES TEXT("Net Resource") |
F_NETRESOURCE | | // CF_NETRESOURCE |
#define CFSTR_FILEDESCRIPTORA TEXT("FileGroupDescriptor") // C | | #define CFSTR_FILEDESCRIPTORA TEXT("FileGroupDescriptor") |
F_FILEGROUPDESCRIPTORA | | // CF_FILEGROUPDESCRIPTORA |
#define CFSTR_FILEDESCRIPTORW TEXT("FileGroupDescriptorW") // C | | #define CFSTR_FILEDESCRIPTORW TEXT("FileGroupDescriptorW") |
F_FILEGROUPDESCRIPTORW | | // CF_FILEGROUPDESCRIPTORW |
#define CFSTR_FILECONTENTS TEXT("FileContents") // C | | #define CFSTR_FILECONTENTS TEXT("FileContents") |
F_FILECONTENTS | | // CF_FILECONTENTS |
#define CFSTR_FILENAMEA TEXT("FileName") // C | | #define CFSTR_FILENAMEA TEXT("FileName") |
F_FILENAMEA | | // CF_FILENAMEA |
#define CFSTR_FILENAMEW TEXT("FileNameW") // C | | #define CFSTR_FILENAMEW TEXT("FileNameW") |
F_FILENAMEW | | // CF_FILENAMEW |
#define CFSTR_PRINTERGROUP TEXT("PrinterFriendlyName") // C | | #define CFSTR_PRINTERGROUP TEXT("PrinterFriendlyName") |
F_PRINTERS | | // CF_PRINTERS |
#define CFSTR_FILENAMEMAPA TEXT("FileNameMap") // C | | #define CFSTR_FILENAMEMAPA TEXT("FileNameMap") |
F_FILENAMEMAPA | | // CF_FILENAMEMAPA |
#define CFSTR_FILENAMEMAPW TEXT("FileNameMapW") // C | | #define CFSTR_FILENAMEMAPW TEXT("FileNameMapW") |
F_FILENAMEMAPW | | // CF_FILENAMEMAPW |
#define CFSTR_SHELLURL TEXT("UniformResourceLocator") | | #define CFSTR_SHELLURL TEXT("UniformResourceLocator") |
#define CFSTR_INETURLA CFSTR_SHELLURL | | #define CFSTR_INETURLA CFSTR_SHELLURL |
#define CFSTR_INETURLW TEXT("UniformResourceLocatorW") | | #define CFSTR_INETURLW TEXT("UniformResourceLocatorW") |
#define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect") | | #define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect") |
#define CFSTR_PERFORMEDDROPEFFECT TEXT("Performed DropEffect") | | #define CFSTR_PERFORMEDDROPEFFECT TEXT("Performed DropEffect") |
#define CFSTR_PASTESUCCEEDED TEXT("Paste Succeeded") | | #define CFSTR_PASTESUCCEEDED TEXT("Paste Succeeded") |
#define CFSTR_INDRAGLOOP TEXT("InShellDragLoop") | | #define CFSTR_INDRAGLOOP TEXT("InShellDragLoop") |
|
#define CFSTR_DRAGCONTEXT TEXT("DragContext") | | |
#define CFSTR_MOUNTEDVOLUME TEXT("MountedVolume") | | #define CFSTR_MOUNTEDVOLUME TEXT("MountedVolume") |
#define CFSTR_PERSISTEDDATAOBJECT TEXT("PersistedDataObject") | | #define CFSTR_PERSISTEDDATAOBJECT TEXT("PersistedDataObject") |
|
#define CFSTR_TARGETCLSID TEXT("TargetCLSID")
// HGLOBAL with a CLSID of the drop target | | #define CFSTR_TARGETCLSID TEXT("TargetCLSID")
// HGLOBAL with a CLSID of the drop target |
#define CFSTR_LOGICALPERFORMEDDROPEFFECT TEXT("Logical Performed DropEffect") | | #define CFSTR_LOGICALPERFORMEDDROPEFFECT TEXT("Logical Performed DropEffect") |
|
#define CFSTR_AUTOPLAY_SHELLIDLISTS TEXT("Autoplay Enumerated IDList Arr | | #define CFSTR_AUTOPLAY_SHELLIDLISTS TEXT("Autoplay Enumerated IDList Arr |
ay") // (HGLOBAL with LPIDA) | | ay") // (HGLOBAL with LPIDA) |
#define CFSTR_UNTRUSTEDDRAGDROP TEXT("UntrustedDragDrop") // DWORD | | #define CFSTR_UNTRUSTEDDRAGDROP TEXT("UntrustedDragDrop") |
| | // DWORD |
| | #define CFSTR_FILE_ATTRIBUTES_ARRAY TEXT("File Attributes Array") |
| | // (FILE_ATTRIBUTES_ARRAY format on HGLOBAL) |
| | #define CFSTR_INVOKECOMMAND_DROPPARAM TEXT("InvokeCommand DropParam") |
| | // (HGLOBAL with LPWSTR) |
| | #define CFSTR_SHELLDROPHANDLER TEXT("DropHandlerCLSID") |
| | // (HGLOBAL with CLSID of drop handler) |
| | #define CFSTR_DROPDESCRIPTION TEXT("DropDescription") |
| | // (HGLOBAL with DROPDESCRIPTION) |
| | |
#ifdef UNICODE | | #ifdef UNICODE |
#define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORW | | #define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORW |
#define CFSTR_FILENAME CFSTR_FILENAMEW | | #define CFSTR_FILENAME CFSTR_FILENAMEW |
#define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPW | | #define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPW |
#define CFSTR_INETURL CFSTR_INETURLW | | #define CFSTR_INETURL CFSTR_INETURLW |
#else | | #else |
#define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORA | | #define CFSTR_FILEDESCRIPTOR CFSTR_FILEDESCRIPTORA |
#define CFSTR_FILENAME CFSTR_FILENAMEA | | #define CFSTR_FILENAME CFSTR_FILENAMEA |
#define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPA | | #define CFSTR_FILENAMEMAP CFSTR_FILENAMEMAPA |
| | |
skipping to change at line 3509 | | skipping to change at line 2412 |
| | |
// | | // |
// format of CF_IDLIST | | // format of CF_IDLIST |
// | | // |
typedef struct _IDA { | | typedef struct _IDA { |
UINT cidl; // number of relative IDList | | UINT cidl; // number of relative IDList |
UINT aoffset[1]; // [0]: folder IDList, [1]-[cidl]: item IDList | | UINT aoffset[1]; // [0]: folder IDList, [1]-[cidl]: item IDList |
} CIDA, * LPIDA; | | } CIDA, * LPIDA; |
| | |
// | | // |
|
// FILEDESCRIPTOR.dwFlags field indicate which fields are to be used | | // FILEDESCRIPTOR.dwFlags field indicate which fields are valid in the FILEDESCR
IPTOR struct |
// | | // |
typedef enum { | | typedef enum { |
|
FD_CLSID = 0x0001, | | FD_CLSID = 0x00000001, |
FD_SIZEPOINT = 0x0002, | | FD_SIZEPOINT = 0x00000002, |
FD_ATTRIBUTES = 0x0004, | | FD_ATTRIBUTES = 0x00000004, |
FD_CREATETIME = 0x0008, | | FD_CREATETIME = 0x00000008, |
FD_ACCESSTIME = 0x0010, | | FD_ACCESSTIME = 0x00000010, |
FD_WRITESTIME = 0x0020, | | FD_WRITESTIME = 0x00000020, |
FD_FILESIZE = 0x0040, | | FD_FILESIZE = 0x00000040, |
FD_PROGRESSUI = 0x4000, // Show Progress UI w/Drag and Drop | | FD_PROGRESSUI = 0x00004000, // Show Progress UI w/Drag and Drop |
FD_LINKUI = 0x8000, // 'link' UI is prefered | | FD_LINKUI = 0x00008000, // 'link' UI is prefered |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | FD_UNICODE = 0x80000000, // this descriptor is UNICODE |
| | #endif |
} FD_FLAGS; | | } FD_FLAGS; |
| | |
|
typedef struct _FILEDESCRIPTORA { // fod | | typedef struct _FILEDESCRIPTORA { |
DWORD dwFlags; | | DWORD dwFlags; |
|
| | |
CLSID clsid; | | CLSID clsid; |
SIZEL sizel; | | SIZEL sizel; |
POINTL pointl; | | POINTL pointl; |
|
| | |
DWORD dwFileAttributes; | | DWORD dwFileAttributes; |
FILETIME ftCreationTime; | | FILETIME ftCreationTime; |
FILETIME ftLastAccessTime; | | FILETIME ftLastAccessTime; |
FILETIME ftLastWriteTime; | | FILETIME ftLastWriteTime; |
DWORD nFileSizeHigh; | | DWORD nFileSizeHigh; |
DWORD nFileSizeLow; | | DWORD nFileSizeLow; |
CHAR cFileName[ MAX_PATH ]; | | CHAR cFileName[ MAX_PATH ]; |
} FILEDESCRIPTORA, *LPFILEDESCRIPTORA; | | } FILEDESCRIPTORA, *LPFILEDESCRIPTORA; |
| | |
|
typedef struct _FILEDESCRIPTORW { // fod | | typedef struct _FILEDESCRIPTORW { |
DWORD dwFlags; | | DWORD dwFlags; |
| | |
CLSID clsid; | | CLSID clsid; |
SIZEL sizel; | | SIZEL sizel; |
POINTL pointl; | | POINTL pointl; |
| | |
DWORD dwFileAttributes; | | DWORD dwFileAttributes; |
FILETIME ftCreationTime; | | FILETIME ftCreationTime; |
FILETIME ftLastAccessTime; | | FILETIME ftLastAccessTime; |
FILETIME ftLastWriteTime; | | FILETIME ftLastWriteTime; |
| | |
skipping to change at line 3597 | | skipping to change at line 2501 |
// friendly names | | // friendly names |
// | | // |
typedef struct _DROPFILES { | | typedef struct _DROPFILES { |
DWORD pFiles; // offset of file list | | DWORD pFiles; // offset of file list |
POINT pt; // drop point (client coords) | | POINT pt; // drop point (client coords) |
BOOL fNC; // is it on NonClient area | | BOOL fNC; // is it on NonClient area |
// and pt is in screen coords | | // and pt is in screen coords |
BOOL fWide; // WIDE character switch | | BOOL fWide; // WIDE character switch |
} DROPFILES, *LPDROPFILES; | | } DROPFILES, *LPDROPFILES; |
| | |
|
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | typedef struct |
| | { |
| | UINT cItems; // number of items in rgdwFileAttributes arr |
| | ay |
| | DWORD dwSumFileAttributes; // all of the attributes ORed together |
| | DWORD dwProductFileAttributes; // all of the attributes ANDed together |
| | DWORD rgdwFileAttributes[1]; // array |
| | } FILE_ATTRIBUTES_ARRAY; // clipboard format definition for CFSTR_FIL |
| | E_ATTRIBUTES_ARRAY |
| | #endif |
| | |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | typedef enum |
| | { |
| | DROPIMAGE_INVALID = -1, // no drop image at all |
| | DROPIMAGE_NONE = 0, // red "no" circle |
| | DROPIMAGE_COPY = DROPEFFECT_COPY, // plus for copy |
| | DROPIMAGE_MOVE = DROPEFFECT_MOVE, // movement arrow for mov |
| | e |
| | DROPIMAGE_LINK = DROPEFFECT_LINK, // link arrow for link |
| | DROPIMAGE_LABEL = 6, // tag icon to indicate m |
| | etadata will be changed |
| | DROPIMAGE_WARNING = 7, // yellow exclamation, so |
| | mething is amiss with the operation |
| | } DROPIMAGETYPE; |
| | |
| | typedef struct |
| | { |
| | DROPIMAGETYPE type; // indicates the stock image to use |
| | |
| | // text such as "Move to %1" |
| | WCHAR szMessage[MAX_PATH]; |
| | |
| | // text such as "Documents", inserted as specified by szMessage |
| | WCHAR szInsert[MAX_PATH]; |
| | |
| | // some UI coloring is applied to the text in szInsert, if used by specifying %1 |
| | in szMessage. |
| | // %% and %1 are the subset of FormatMessage markers that are processed here. |
| | } DROPDESCRIPTION; |
| | |
| | #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
//====== File System Notification APIs =============================== | | //====== File System Notification APIs =============================== |
// | | // |
typedef struct _SHChangeNotifyEntry | | typedef struct _SHChangeNotifyEntry |
{ | | { |
|
LPCITEMIDLIST pidl; | | PCIDLIST_ABSOLUTE pidl; |
BOOL fRecursive; | | BOOL fRecursive; |
} SHChangeNotifyEntry; | | } SHChangeNotifyEntry; |
| | |
// | | // |
// File System Notification flags | | // File System Notification flags |
// | | // |
| | |
|
| | #define SHCNRF_InterruptLevel 0x0001 |
| | #define SHCNRF_ShellLevel 0x0002 |
| | #define SHCNRF_RecursiveInterrupt 0x1000 |
| | #define SHCNRF_NewDelivery 0x8000 |
| | |
#define SHCNE_RENAMEITEM 0x00000001L | | #define SHCNE_RENAMEITEM 0x00000001L |
#define SHCNE_CREATE 0x00000002L | | #define SHCNE_CREATE 0x00000002L |
#define SHCNE_DELETE 0x00000004L | | #define SHCNE_DELETE 0x00000004L |
#define SHCNE_MKDIR 0x00000008L | | #define SHCNE_MKDIR 0x00000008L |
#define SHCNE_RMDIR 0x00000010L | | #define SHCNE_RMDIR 0x00000010L |
#define SHCNE_MEDIAINSERTED 0x00000020L | | #define SHCNE_MEDIAINSERTED 0x00000020L |
#define SHCNE_MEDIAREMOVED 0x00000040L | | #define SHCNE_MEDIAREMOVED 0x00000040L |
#define SHCNE_DRIVEREMOVED 0x00000080L | | #define SHCNE_DRIVEREMOVED 0x00000080L |
#define SHCNE_DRIVEADD 0x00000100L | | #define SHCNE_DRIVEADD 0x00000100L |
#define SHCNE_NETSHARE 0x00000200L | | #define SHCNE_NETSHARE 0x00000200L |
| | |
skipping to change at line 3643 | | skipping to change at line 2590 |
// of SHChangeNotify (called "pidl2" below), which if present, must also | | // of SHChangeNotify (called "pidl2" below), which if present, must also |
// be in LPITEMIDLIST format. | | // be in LPITEMIDLIST format. |
// | | // |
// Unlike the standard events, the extended events are ORDINALs, so we | | // Unlike the standard events, the extended events are ORDINALs, so we |
// don't run out of bits. Extended events follow the SHCNEE_* naming | | // don't run out of bits. Extended events follow the SHCNEE_* naming |
// convention. | | // convention. |
// | | // |
// The dwItem2 parameter varies according to the extended event. | | // The dwItem2 parameter varies according to the extended event. |
| | |
#define SHCNE_EXTENDED_EVENT 0x04000000L | | #define SHCNE_EXTENDED_EVENT 0x04000000L |
|
#endif // (_WIN32_IE >= 0x0400) | | #endif // _WIN32_IE >= 0x0400 |
| | |
#define SHCNE_ASSOCCHANGED 0x08000000L | | #define SHCNE_ASSOCCHANGED 0x08000000L |
| | |
#define SHCNE_DISKEVENTS 0x0002381FL | | #define SHCNE_DISKEVENTS 0x0002381FL |
#define SHCNE_GLOBALEVENTS 0x0C0581E0L // Events that dont match pidls fi
rst | | #define SHCNE_GLOBALEVENTS 0x0C0581E0L // Events that dont match pidls fi
rst |
#define SHCNE_ALLEVENTS 0x7FFFFFFFL | | #define SHCNE_ALLEVENTS 0x7FFFFFFFL |
#define SHCNE_INTERRUPT 0x80000000L // The presence of this flag indic
ates | | #define SHCNE_INTERRUPT 0x80000000L // The presence of this flag indic
ates |
// that the event was generated by a
n | | // that the event was generated by a
n |
// interrupt. It is stripped out be
fore | | // interrupt. It is stripped out be
fore |
// the clients of SHCNNotify_ see it
. | | // the clients of SHCNNotify_ see it
. |
| | |
skipping to change at line 3676 | | skipping to change at line 2623 |
#define SHCNF_IDLIST 0x0000 // LPITEMIDLIST | | #define SHCNF_IDLIST 0x0000 // LPITEMIDLIST |
#define SHCNF_PATHA 0x0001 // path name | | #define SHCNF_PATHA 0x0001 // path name |
#define SHCNF_PRINTERA 0x0002 // printer friendly name | | #define SHCNF_PRINTERA 0x0002 // printer friendly name |
#define SHCNF_DWORD 0x0003 // DWORD | | #define SHCNF_DWORD 0x0003 // DWORD |
#define SHCNF_PATHW 0x0005 // path name | | #define SHCNF_PATHW 0x0005 // path name |
#define SHCNF_PRINTERW 0x0006 // printer friendly name | | #define SHCNF_PRINTERW 0x0006 // printer friendly name |
#define SHCNF_TYPE 0x00FF | | #define SHCNF_TYPE 0x00FF |
#define SHCNF_FLUSH 0x1000 | | #define SHCNF_FLUSH 0x1000 |
#define SHCNF_FLUSHNOWAIT 0x2000 | | #define SHCNF_FLUSHNOWAIT 0x2000 |
| | |
|
| | #define SHCNF_NOTIFYRECURSIVE 0x10000 // Notify clients registered for any |
| | child |
| | |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHCNF_PATH SHCNF_PATHW | | #define SHCNF_PATH SHCNF_PATHW |
#define SHCNF_PRINTER SHCNF_PRINTERW | | #define SHCNF_PRINTER SHCNF_PRINTERW |
#else | | #else |
#define SHCNF_PATH SHCNF_PATHA | | #define SHCNF_PATH SHCNF_PATHA |
#define SHCNF_PRINTER SHCNF_PRINTERA | | #define SHCNF_PRINTER SHCNF_PRINTERA |
#endif | | #endif |
| | |
// | | // |
// APIs | | // APIs |
// | | // |
SHSTDAPI_(void) SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCV
OID dwItem2); | | SHSTDAPI_(void) SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCV
OID dwItem2); |
| | |
// | | // |
// IShellChangeNotify | | // IShellChangeNotify |
// | | // |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IShellChangeNotify | | #define INTERFACE IShellChangeNotify |
| | |
|
DECLARE_INTERFACE_(IShellChangeNotify, IUnknown) | | DECLARE_INTERFACE_IID_(IShellChangeNotify, IUnknown, "D82BE2B1-5764-11D0-A96E-00
C04FD705A2") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IShellChangeNotify methods *** | | // *** IShellChangeNotify methods *** |
|
STDMETHOD(OnChange) (THIS_ LONG lEvent, LPCITEMIDLIST pidl1, LPCITEMIDLIST p
idl2) PURE; | | STDMETHOD(OnChange) (THIS_ LONG lEvent, PCIDLIST_ABSOLUTE pidl1, PCIDLIST_AB
SOLUTE pidl2) PURE; |
} ; | | } ; |
| | |
// | | // |
// IQueryInfo | | // IQueryInfo |
// | | // |
//------------------------------------------------------------------------- | | //------------------------------------------------------------------------- |
// | | // |
// IQueryInfo interface | | // IQueryInfo interface |
// | | // |
// [Methods] | | // [Methods] |
// ::GetInfoTip() | | // ::GetInfoTip() |
//------------------------------------------------------------------------- | | //------------------------------------------------------------------------- |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IQueryInfo | | #define INTERFACE IQueryInfo |
| | |
|
DECLARE_INTERFACE_(IQueryInfo, IUnknown) | | DECLARE_INTERFACE_IID_(IQueryInfo, IUnknown, "00021500-0000-0000-c000-0000000000
46") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IQueryInfo methods *** | | // *** IQueryInfo methods *** |
|
STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags, WCHAR **ppwszTip) PURE; | | STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags, __out WCHAR **ppwszTip) PURE; |
STDMETHOD(GetInfoFlags)(THIS_ DWORD *pdwFlags) PURE; | | STDMETHOD(GetInfoFlags)(THIS_ __out DWORD *pdwFlags) PURE; |
} ; | | } ; |
| | |
#define QITIPF_DEFAULT 0x00000000 | | #define QITIPF_DEFAULT 0x00000000 |
#define QITIPF_USENAME 0x00000001 | | #define QITIPF_USENAME 0x00000001 |
#define QITIPF_LINKNOTARGET 0x00000002 | | #define QITIPF_LINKNOTARGET 0x00000002 |
#define QITIPF_LINKUSETARGET 0x00000004 | | #define QITIPF_LINKUSETARGET 0x00000004 |
|
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
#define QITIPF_USESLOWTIP 0x00000008 // Flag says it's OK to take a long
time generating tip | | #define QITIPF_USESLOWTIP 0x00000008 // Flag says it's OK to take a long
time generating tip |
|
| | #endif |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #define QITIPF_SINGLELINE 0x00000010 |
| | #endif |
| | |
|
#define QIF_CACHED 0x00000001 | | #define QIF_CACHED 0x00000001 |
#define QIF_DONTEXPANDFOLDER 0x00000002 | | #define QIF_DONTEXPANDFOLDER 0x00000002 |
| | |
// | | // |
// SHAddToRecentDocs | | // SHAddToRecentDocs |
// | | // |
#define SHARD_PIDL 0x00000001L | | #define SHARD_PIDL 0x00000001L |
#define SHARD_PATHA 0x00000002L | | #define SHARD_PATHA 0x00000002L |
#define SHARD_PATHW 0x00000003L | | #define SHARD_PATHW 0x00000003L |
| | |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHARD_PATH SHARD_PATHW | | #define SHARD_PATH SHARD_PATHW |
| | |
skipping to change at line 3763 | | skipping to change at line 2717 |
| | |
SHSTDAPI_(void) SHAddToRecentDocs(UINT uFlags, LPCVOID pv); | | SHSTDAPI_(void) SHAddToRecentDocs(UINT uFlags, LPCVOID pv); |
| | |
typedef struct _SHChangeDWORDAsIDList { | | typedef struct _SHChangeDWORDAsIDList { |
USHORT cb; | | USHORT cb; |
DWORD dwItem1; | | DWORD dwItem1; |
DWORD dwItem2; | | DWORD dwItem2; |
USHORT cbZero; | | USHORT cbZero; |
} SHChangeDWORDAsIDList, *LPSHChangeDWORDAsIDList; | | } SHChangeDWORDAsIDList, *LPSHChangeDWORDAsIDList; |
| | |
|
#if (_WIN32_IE >= 0x0400) | | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
| | |
typedef struct _SHChangeUpdateImageIDList { | | typedef struct _SHChangeUpdateImageIDList { |
USHORT cb; | | USHORT cb; |
int iIconIndex; | | int iIconIndex; |
int iCurIndex; | | int iCurIndex; |
UINT uFlags; | | UINT uFlags; |
DWORD dwProcessID; | | DWORD dwProcessID; |
WCHAR szName[MAX_PATH]; | | WCHAR szName[MAX_PATH]; |
USHORT cbZero; | | USHORT cbZero; |
} SHChangeUpdateImageIDList, * LPSHChangeUpdateImageIDList; | | } SHChangeUpdateImageIDList, * LPSHChangeUpdateImageIDList; |
|
| | SHSTDAPI_(int) SHHandleUpdateImage(PCIDLIST_ABSOLUTE pidlExtra); |
SHSTDAPI_(int) SHHandleUpdateImage( LPCITEMIDLIST pidlExtra ); | | |
| | |
typedef struct _SHChangeProductKeyAsIDList { | | typedef struct _SHChangeProductKeyAsIDList { |
USHORT cb; | | USHORT cb; |
WCHAR wszProductKey[39]; | | WCHAR wszProductKey[39]; |
USHORT cbZero; | | USHORT cbZero; |
} SHChangeProductKeyAsIDList, *LPSHChangeProductKeyAsIDList; | | } SHChangeProductKeyAsIDList, *LPSHChangeProductKeyAsIDList; |
| | |
SHSTDAPI_(void) SHUpdateImageA(LPCSTR pszHashItem, int iIndex, UINT uFlags, int
iImageIndex); | | SHSTDAPI_(void) SHUpdateImageA(LPCSTR pszHashItem, int iIndex, UINT uFlags, int
iImageIndex); |
SHSTDAPI_(void) SHUpdateImageW(LPCWSTR pszHashItem, int iIndex, UINT uFlags, int
iImageIndex); | | SHSTDAPI_(void) SHUpdateImageW(LPCWSTR pszHashItem, int iIndex, UINT uFlags, int
iImageIndex); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHUpdateImage SHUpdateImageW | | #define SHUpdateImage SHUpdateImageW |
#else | | #else |
#define SHUpdateImage SHUpdateImageA | | #define SHUpdateImage SHUpdateImageA |
#endif // !UNICODE | | #endif // !UNICODE |
|
#endif /* _WIN32_IE */ | | #endif /* NTDDI_WIN2K */ |
| | |
|
SHSTDAPI_(ULONG) SHChangeNotifyRegister(HWND hwnd, int fSources, LONG fEvents, U
INT wMsg, int cEntries, SHChangeNotifyEntry *pshcne); | | SHSTDAPI_(ULONG) SHChangeNotifyRegister(HWND hwnd, int fSources, LONG fEvents, U
INT wMsg, int cEntries, const SHChangeNotifyEntry *pshcne); |
SHSTDAPI_(BOOL) SHChangeNotifyDeregister(unsigned long ulID); | | SHSTDAPI_(BOOL) SHChangeNotifyDeregister(unsigned long ulID); |
|
SHSTDAPI_(HANDLE) SHChangeNotification_Lock(HANDLE hChangeNotification, DWORD dw | | |
ProcessId, LPITEMIDLIST **pppidl, LONG *plEvent); | | typedef enum |
| | { |
| | SCNRT_ENABLE = 0, |
| | SCNRT_DISABLE = 1, |
| | } SCNRT_STATUS; |
| | |
| | // use SHChangeNotifyRegisterThread() to enable Async Register and Deregister. |
| | // call with SCNRT_ENABLE at the thread proc begining and SCNRT_DISABLE at the |
| | end |
| | // the call with SCNRT_DISABLE can block while it synchronizes with the main Ch |
| | angeNotify thread |
| | STDAPI_(void) SHChangeNotifyRegisterThread(SCNRT_STATUS status); |
| | |
| | SHSTDAPI_(HANDLE) SHChangeNotification_Lock(HANDLE hChange, DWORD dwProcId, __de |
| | ref_opt_out_ecount(2) PIDLIST_ABSOLUTE **pppidl, __out_opt LONG *plEvent); |
SHSTDAPI_(BOOL) SHChangeNotification_Unlock(HANDLE hLock); | | SHSTDAPI_(BOOL) SHChangeNotification_Unlock(HANDLE hLock); |
#if (_WIN32_IE >= 0x0400) | | #if (_WIN32_IE >= 0x0400) |
// The pidls that are given to the view via the ChangeNotifyEvents are simple Pi
dls, | | // The pidls that are given to the view via the ChangeNotifyEvents are simple Pi
dls, |
// SHGetRealIDL() will convert them to true PIDLs. | | // SHGetRealIDL() will convert them to true PIDLs. |
|
SHSTDAPI SHGetRealIDL(IShellFolder *psf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST | | SHSTDAPI SHGetRealIDL(IShellFolder *psf, PCUITEMID_CHILD pidlSimple, __out PITEM |
* ppidlReal); | | ID_CHILD *ppidlReal); |
#endif // (_WIN32_IE >= 0x0400) | | #endif // _WIN32_IE >= 0x0400 |
| | |
|
SHSTDAPI SHGetInstanceExplorer(IUnknown **ppunk); | | SHSTDAPI SHGetInstanceExplorer(__out IUnknown **ppunk); |
| | |
// | | // |
// SHGetDataFromIDListA/W | | // SHGetDataFromIDListA/W |
// | | // |
// SHGetDataFromIDList nFormat values TCHAR | | // SHGetDataFromIDList nFormat values TCHAR |
#define SHGDFIL_FINDDATA 1 | | #define SHGDFIL_FINDDATA 1 |
#define SHGDFIL_NETRESOURCE 2 | | #define SHGDFIL_NETRESOURCE 2 |
#define SHGDFIL_DESCRIPTIONID 3 | | #define SHGDFIL_DESCRIPTIONID 3 |
| | |
#define SHDID_ROOT_REGITEM 1 | | #define SHDID_ROOT_REGITEM 1 |
| | |
skipping to change at line 3829 | | skipping to change at line 2794 |
#define SHDID_COMPUTER_FIXED 8 | | #define SHDID_COMPUTER_FIXED 8 |
#define SHDID_COMPUTER_NETDRIVE 9 | | #define SHDID_COMPUTER_NETDRIVE 9 |
#define SHDID_COMPUTER_CDROM 10 | | #define SHDID_COMPUTER_CDROM 10 |
#define SHDID_COMPUTER_RAMDISK 11 | | #define SHDID_COMPUTER_RAMDISK 11 |
#define SHDID_COMPUTER_OTHER 12 | | #define SHDID_COMPUTER_OTHER 12 |
#define SHDID_NET_DOMAIN 13 | | #define SHDID_NET_DOMAIN 13 |
#define SHDID_NET_SERVER 14 | | #define SHDID_NET_SERVER 14 |
#define SHDID_NET_SHARE 15 | | #define SHDID_NET_SHARE 15 |
#define SHDID_NET_RESTOFNET 16 | | #define SHDID_NET_RESTOFNET 16 |
#define SHDID_NET_OTHER 17 | | #define SHDID_NET_OTHER 17 |
|
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
#define SHDID_COMPUTER_IMAGING 18 | | #define SHDID_COMPUTER_IMAGING 18 |
#define SHDID_COMPUTER_AUDIO 19 | | #define SHDID_COMPUTER_AUDIO 19 |
#define SHDID_COMPUTER_SHAREDDOCS 20 | | #define SHDID_COMPUTER_SHAREDDOCS 20 |
|
| | #endif |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #define SHDID_MOBILE_DEVICE 21 // PDA/PalmPC |
| | #endif |
| | |
#include <pshpack8.h> | | #include <pshpack8.h> |
| | |
typedef struct _SHDESCRIPTIONID { | | typedef struct _SHDESCRIPTIONID { |
DWORD dwDescriptionId; | | DWORD dwDescriptionId; |
CLSID clsid; | | CLSID clsid; |
} SHDESCRIPTIONID, *LPSHDESCRIPTIONID; | | } SHDESCRIPTIONID, *LPSHDESCRIPTIONID; |
| | |
#include <poppack.h> /* Return to byte packing */ | | #include <poppack.h> /* Return to byte packing */ |
| | |
|
// these delegate to IShellFolder2::GetItemData() | | // these delegate to IShellFolder2::GetDetailsEx() |
| | |
|
SHSTDAPI SHGetDataFromIDListA(IShellFolder *psf, LPCITEMIDLIST pidl, int nFormat | | SHSTDAPI SHGetDataFromIDListA(IShellFolder *psf, PCUITEMID_CHILD pidl, int nForm |
, void *pv, int cb); | | at, __out_bcount(cb) void *pv, int cb); |
SHSTDAPI SHGetDataFromIDListW(IShellFolder *psf, LPCITEMIDLIST pidl, int nFormat | | SHSTDAPI SHGetDataFromIDListW(IShellFolder *psf, PCUITEMID_CHILD pidl, int nForm |
, void *pv, int cb); | | at, __out_bcount(cb) void *pv, int cb); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHGetDataFromIDList SHGetDataFromIDListW | | #define SHGetDataFromIDList SHGetDataFromIDListW |
#else | | #else |
#define SHGetDataFromIDList SHGetDataFromIDListA | | #define SHGetDataFromIDList SHGetDataFromIDListA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
//=========================================================================== | | //=========================================================================== |
| | |
// PathResolve flags | | // PathResolve flags |
#define PRF_VERIFYEXISTS 0x0001 | | #define PRF_VERIFYEXISTS 0x0001 |
#define PRF_TRYPROGRAMEXTENSIONS (0x0002 | PRF_VERIFYEXISTS) | | #define PRF_TRYPROGRAMEXTENSIONS (0x0002 | PRF_VERIFYEXISTS) |
#define PRF_FIRSTDIRDEF 0x0004 | | #define PRF_FIRSTDIRDEF 0x0004 |
#define PRF_DONTFINDLNK 0x0008 // if PRF_TRYPROGRAMEXTENSIONS i
s specified | | #define PRF_DONTFINDLNK 0x0008 // if PRF_TRYPROGRAMEXTENSIONS i
s specified |
|
| | #if (NTDDI_VERSION >= NTDDI_WINXPSP2) |
| | #define PRF_REQUIREABSOLUTE 0x0010 |
| | #endif |
| | |
SHSTDAPI_(int) RestartDialog(HWND hwnd, LPCWSTR lpPrompt, DWORD dwReturn); | | SHSTDAPI_(int) RestartDialog(HWND hwnd, LPCWSTR lpPrompt, DWORD dwReturn); |
|
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
SHSTDAPI_(int) RestartDialogEx(HWND hwnd, LPCWSTR lpPrompt, DWORD dwReturn, DWOR
D dwReasonCode); | | SHSTDAPI_(int) RestartDialogEx(HWND hwnd, LPCWSTR lpPrompt, DWORD dwReturn, DWOR
D dwReasonCode); |
|
| | #endif |
| | |
|
SHSTDAPI SHCoCreateInstance(LPCWSTR pszCLSID, const CLSID *pclsid, IUnknown *pUn | | SHSTDAPI SHCoCreateInstance(__in_opt LPCWSTR pszCLSID, __in_opt const CLSID *pcl |
kOuter, REFIID riid, void **ppv); | | sid, __in_opt IUnknown *pUnkOuter, __in REFIID riid, __deref_out void **ppv); |
// For CallCPLEntry16 | | |
// | | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
DECLARE_HANDLE(FARPROC16); | | SHSTDAPI SHCreateDataObject(__in PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, __in_e |
SHSTDAPI_(LRESULT) CallCPLEntry16(HINSTANCE hinst, FARPROC16 lpfnEntry, HWND hwn | | count_opt(cidl) PCUITEMID_CHILD_ARRAY apidl, __in_opt IDataObject *pdtInner, REF |
dCPL, UINT msg, LPARAM lParam1, LPARAM lParam2); | | IID riid, __deref_out void **ppv); |
SHSTDAPI SHCreateStdEnumFmtEtc(UINT cfmt, const FORMATETC afmt[], IEnumFORMATETC | | #endif |
**ppenumFormatEtc); | | SHSTDAPI CIDLData_CreateFromIDArray(__in PCIDLIST_ABSOLUTE pidlFolder, UINT cidl |
SHSTDAPI SHDoDragDrop(HWND hwnd, IDataObject *pdata, IDropSource *pdsrc, DWORD d | | , __in_ecount_opt(cidl) PCUIDLIST_RELATIVE_ARRAY apidl, __out IDataObject **ppdt |
wEffect, DWORD *pdwEffect); | | obj); |
| | SHSTDAPI SHCreateStdEnumFmtEtc(UINT cfmt, __in_ecount(cfmt) const FORMATETC afmt |
| | [], __out IEnumFORMATETC **ppenumFormatEtc); |
| | SHSTDAPI SHDoDragDrop(HWND hwnd, IDataObject *pdata, IDropSource *pdsrc, DWORD d |
| | wEffect, __out DWORD *pdwEffect); |
// stuff for doing auto scrolling | | // stuff for doing auto scrolling |
#define NUM_POINTS 3 | | #define NUM_POINTS 3 |
typedef struct { // asd | | typedef struct { // asd |
int iNextSample; | | int iNextSample; |
DWORD dwLastScroll; | | DWORD dwLastScroll; |
BOOL bFull; | | BOOL bFull; |
POINT pts[NUM_POINTS]; | | POINT pts[NUM_POINTS]; |
DWORD dwTimes[NUM_POINTS]; | | DWORD dwTimes[NUM_POINTS]; |
} AUTO_SCROLL_DATA; | | } AUTO_SCROLL_DATA; |
| | |
| | |
skipping to change at line 3908 | | skipping to change at line 2885 |
BOOL fAdminsCreateCommonGroups : 1; // NT: Administrators create comon grou
ps | | BOOL fAdminsCreateCommonGroups : 1; // NT: Administrators create comon grou
ps |
UINT fUnusedFlags : 7; | | UINT fUnusedFlags : 7; |
| | |
UINT fMenuEnumFilter; | | UINT fMenuEnumFilter; |
| | |
} CABINETSTATE, * LPCABINETSTATE; | | } CABINETSTATE, * LPCABINETSTATE; |
| | |
#define CABINETSTATE_VERSION 2 | | #define CABINETSTATE_VERSION 2 |
| | |
// APIs for reading and writing the cabinet state. | | // APIs for reading and writing the cabinet state. |
|
SHSTDAPI_(BOOL) ReadCabinetState( LPCABINETSTATE lpState, int iSize ); | | SHSTDAPI_(BOOL) ReadCabinetState(__out_bcount(cLength) CABINETSTATE *pcs, int cL |
SHSTDAPI_(BOOL) WriteCabinetState( LPCABINETSTATE lpState ); | | ength); |
SHSTDAPI_(BOOL) PathMakeUniqueName(LPWSTR pszUniqueName, UINT cchMax, LPCWSTR ps | | SHSTDAPI_(BOOL) WriteCabinetState(__in CABINETSTATE *pcs); |
zTemplate, LPCWSTR pszLongPlate, LPCWSTR pszDir); | | SHSTDAPI_(BOOL) PathMakeUniqueName(__out_ecount(cchMax) LPWSTR pszUniqueName, UI |
SHSTDAPI_(void) PathQualify(LPWSTR psz); | | NT cchMax, LPCWSTR pszTemplate, LPCWSTR pszLongPlate, LPCWSTR pszDir); |
| | SHSTDAPI_(void) PathQualify(__inout LPWSTR psz); |
SHSTDAPI_(BOOL) PathIsExe(LPCWSTR pszPath); | | SHSTDAPI_(BOOL) PathIsExe(LPCWSTR pszPath); |
SHSTDAPI_(BOOL) PathIsSlowA(LPCSTR pszFile, DWORD dwAttr); | | SHSTDAPI_(BOOL) PathIsSlowA(LPCSTR pszFile, DWORD dwAttr); |
SHSTDAPI_(BOOL) PathIsSlowW(LPCWSTR pszFile, DWORD dwAttr); | | SHSTDAPI_(BOOL) PathIsSlowW(LPCWSTR pszFile, DWORD dwAttr); |
#ifdef UNICODE | | #ifdef UNICODE |
#define PathIsSlow PathIsSlowW | | #define PathIsSlow PathIsSlowW |
#else | | #else |
#define PathIsSlow PathIsSlowA | | #define PathIsSlow PathIsSlowA |
#endif // !UNICODE | | #endif // !UNICODE |
// | | // |
// Return codes from PathCleanupSpec. Negative return values are | | // Return codes from PathCleanupSpec. Negative return values are |
// unrecoverable errors | | // unrecoverable errors |
// | | // |
#define PCS_FATAL 0x80000000 | | #define PCS_FATAL 0x80000000 |
#define PCS_REPLACEDCHAR 0x00000001 | | #define PCS_REPLACEDCHAR 0x00000001 |
#define PCS_REMOVEDCHAR 0x00000002 | | #define PCS_REMOVEDCHAR 0x00000002 |
#define PCS_TRUNCATED 0x00000004 | | #define PCS_TRUNCATED 0x00000004 |
#define PCS_PATHTOOLONG 0x00000008 // Always combined with FATAL | | #define PCS_PATHTOOLONG 0x00000008 // Always combined with FATAL |
| | |
|
SHSTDAPI_(int) PathCleanupSpec(LPCWSTR pszDir, LPWSTR pszSpec); | | SHSTDAPI_(int) PathCleanupSpec(LPCWSTR pszDir, __inout LPWSTR pszSpec); |
SHSTDAPI_(int) PathResolve(LPWSTR pszPath, LPCWSTR dirs[], UINT fFlags); | | SHSTDAPI_(int) PathResolve(__out_ecount(MAX_PATH) LPWSTR lpszPath, __in_opt __nu |
SHSTDAPI_(BOOL) GetFileNameFromBrowse(HWND hwnd, LPWSTR pszFilePath, UINT cbFile | | llterminated LPCWSTR dirs[], UINT fFlags); |
Path, | | SHSTDAPI_(BOOL) GetFileNameFromBrowse(HWND hwnd, __inout_ecount(cchFilePath) LPW |
| | STR pszFilePath, UINT cchFilePath, |
LPCWSTR pszWorkingDir, LPCWSTR pszDefExt,
LPCWSTR pszFilters, LPCWSTR pszTitle); | | LPCWSTR pszWorkingDir, LPCWSTR pszDefExt,
LPCWSTR pszFilters, LPCWSTR pszTitle); |
SHSTDAPI_(int) DriveType(int iDrive); | | SHSTDAPI_(int) DriveType(int iDrive); |
| | |
SHSTDAPI_(int) RealDriveType(int iDrive, BOOL fOKToHitNet); | | SHSTDAPI_(int) RealDriveType(int iDrive, BOOL fOKToHitNet); |
SHSTDAPI_(int) IsNetDrive(int iDrive); | | SHSTDAPI_(int) IsNetDrive(int iDrive); |
// Flags for Shell_MergeMenus | | // Flags for Shell_MergeMenus |
#define MM_ADDSEPARATOR 0x00000001L | | #define MM_ADDSEPARATOR 0x00000001L |
#define MM_SUBMENUSHAVEIDS 0x00000002L | | #define MM_SUBMENUSHAVEIDS 0x00000002L |
#define MM_DONTREMOVESEPS 0x00000004L | | #define MM_DONTREMOVESEPS 0x00000004L |
| | |
SHSTDAPI_(UINT) Shell_MergeMenus(HMENU hmDst, HMENU hmSrc, UINT uInsert, UINT uI
DAdjust, UINT uIDAdjustMax, ULONG uFlags); | | SHSTDAPI_(UINT) Shell_MergeMenus(HMENU hmDst, HMENU hmSrc, UINT uInsert, UINT uI
DAdjust, UINT uIDAdjustMax, ULONG uFlags); |
| | |
/* | | /* |
|
* The SHObjectProperties API provides an easy way to invoke | | * The SHObjectProperties API provides an easy way to invoke the Properties |
* the Properties context menu command on shell objects. | | * context menu command on a subset of the shell item namespace. |
* | | * |
* PARAMETERS | | * PARAMETERS |
* | | * |
|
* hwnd The window handle of the window which will own the dialog | | * hwnd The window handle of the window which will own the dial |
* dwType A SHOP_ value as defined below | | og |
* lpObject Name of the object, see SHOP_ values below | | * shopObjectType A SHOP_ value as defined below |
* lpPage The name of the property sheet page to open to or NULL. | | * pszObjectName Name of the object, see SHOP_ values below |
| | * pszPropertyPage The name of the property sheet page to open to or NULL. |
* | | * |
* RETURN | | * RETURN |
* | | * |
* TRUE if the Properties command was invoked | | * TRUE if the Properties command was invoked |
*/ | | */ |
|
SHSTDAPI_(BOOL) SHObjectProperties(HWND hwnd, DWORD dwType, LPCWSTR lpObject, LP
CWSTR lpPage); | | SHSTDAPI_(BOOL) SHObjectProperties(__in_opt HWND hwnd, __in DWORD shopObjectType
, __in PCWSTR pszObjectName, __in_opt PCWSTR pszPropertyPage); |
| | |
|
#define SHOP_PRINTERNAME 0x00000001 // lpObject points to a printer friendly na | | #define SHOP_PRINTERNAME 0x00000001 // pszObjectName points to a printer friend |
me | | ly name |
#define SHOP_FILEPATH 0x00000002 // lpObject points to a fully qualified pat | | #define SHOP_FILEPATH 0x00000002 // pszObjectName points to a fully qualifie |
h+file name | | d path+file name |
#define SHOP_VOLUMEGUID 0x00000004 // lpObject points to a Volume GUID | | #define SHOP_VOLUMEGUID 0x00000004 // pszObjectName points to a Volume GUID |
| | |
/* | | /* |
* The SHFormatDrive API provides access to the Shell | | * The SHFormatDrive API provides access to the Shell |
* format dialog. This allows apps which want to format disks | | * format dialog. This allows apps which want to format disks |
* to bring up the same dialog that the Shell does to do it. | | * to bring up the same dialog that the Shell does to do it. |
* | | * |
* This dialog is not sub-classable. You cannot put custom | | * This dialog is not sub-classable. You cannot put custom |
* controls in it. If you want this ability, you will have | | * controls in it. If you want this ability, you will have |
* to write your own front end for the DMaint_FormatDrive | | * to write your own front end for the DMaint_FormatDrive |
* engine. | | * engine. |
| | |
skipping to change at line 4058 | | skipping to change at line 3036 |
// | | // |
#define SHFMT_ERROR 0xFFFFFFFFL // Error on last format, drive may be fo
rmatable | | #define SHFMT_ERROR 0xFFFFFFFFL // Error on last format, drive may be fo
rmatable |
#define SHFMT_CANCEL 0xFFFFFFFEL // Last format was canceled | | #define SHFMT_CANCEL 0xFFFFFFFEL // Last format was canceled |
#define SHFMT_NOFORMAT 0xFFFFFFFDL // Drive is not formatable | | #define SHFMT_NOFORMAT 0xFFFFFFFDL // Drive is not formatable |
| | |
#ifndef HPSXA_DEFINED | | #ifndef HPSXA_DEFINED |
#define HPSXA_DEFINED | | #define HPSXA_DEFINED |
DECLARE_HANDLE( HPSXA ); | | DECLARE_HANDLE( HPSXA ); |
#endif | | #endif |
WINSHELLAPI HPSXA WINAPI SHCreatePropSheetExtArray( HKEY hKey, LPCWSTR pszSubKey
, UINT max_iface ); | | WINSHELLAPI HPSXA WINAPI SHCreatePropSheetExtArray( HKEY hKey, LPCWSTR pszSubKey
, UINT max_iface ); |
|
WINSHELLAPI void WINAPI SHDestroyPropSheetExtArray( HPSXA hpsxa ); | | WINSHELLAPI void WINAPI SHDestroyPropSheetExtArray(__in HPSXA hpsxa ); |
WINSHELLAPI UINT WINAPI SHAddFromPropSheetExtArray( HPSXA hpsxa, LPFNADDPROPSHEE | | WINSHELLAPI UINT WINAPI SHAddFromPropSheetExtArray(__in HPSXA hpsxa, LPFNADDPROP |
TPAGE lpfnAddPage, LPARAM lParam ); | | SHEETPAGE lpfnAddPage, LPARAM lParam ); |
WINSHELLAPI UINT WINAPI SHReplaceFromPropSheetExtArray( HPSXA hpsxa, UINT uPageI | | WINSHELLAPI UINT WINAPI SHReplaceFromPropSheetExtArray(__in HPSXA hpsxa, UINT uP |
D, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam ); | | ageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam ); |
SHSTDAPI_(LPITEMIDLIST) ILClone(LPCITEMIDLIST pidl); | | |
SHSTDAPI_(LPITEMIDLIST) ILGetNext(LPCITEMIDLIST pidl); | | SHSTDAPI_(PIDLIST_RELATIVE) ILClone(__in PCUIDLIST_RELATIVE pidl); |
SHSTDAPI_(UINT) ILGetSize(LPCITEMIDLIST pidl); | | SHSTDAPI_(PITEMID_CHILD) ILCloneFirst(__in PCUIDLIST_RELATIVE pidl); |
SHSTDAPI_(LPITEMIDLIST) ILFindLastID(LPCITEMIDLIST pidl); | | SHSTDAPI_(PIDLIST_ABSOLUTE) ILCombine(__in PCIDLIST_ABSOLUTE pidl1, __in PCU |
SHSTDAPI_(BOOL) ILRemoveLastID(LPITEMIDLIST pidl); | | IDLIST_RELATIVE pidl2); |
SHSTDAPI_(LPITEMIDLIST) ILAppendID(LPITEMIDLIST pidl, LPCSHITEMID pmkid, BOOL fA | | SHSTDAPI_(void) ILFree(__in_opt PIDLIST_RELATIVE pidl); |
ppend); | | SHSTDAPI_(PUIDLIST_RELATIVE) ILGetNext(__in PCUIDLIST_RELATIVE pidl); |
SHSTDAPI_(void) ILFree(LPITEMIDLIST pidl); | | SHSTDAPI_(UINT) ILGetSize(__in PCUIDLIST_RELATIVE pidl); |
SHSTDAPI_(LPITEMIDLIST) ILCloneFirst(LPCITEMIDLIST pidl); | | SHSTDAPI_(PUIDLIST_RELATIVE) ILFindChild(__in PCIDLIST_ABSOLUTE pidlParent, _ |
SHSTDAPI_(BOOL) ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2); | | _in PCIDLIST_ABSOLUTE pidlChild); |
SHSTDAPI_(BOOL) ILIsParent(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2, BOO | | SHSTDAPI_(__out PUITEMID_CHILD) ILFindLastID(__in PCUIDLIST_RELATIVE pidl); |
L fImmediate); | | SHSTDAPI_(BOOL) ILRemoveLastID(__inout PUIDLIST_RELATIVE pidl); |
SHSTDAPI_(LPITEMIDLIST) ILFindChild(LPCITEMIDLIST pidlParent, LPCITEMIDLIST pidl | | SHSTDAPI_(BOOL) ILIsEqual(__in PCIDLIST_ABSOLUTE pidl1, __in PCI |
Child); | | DLIST_ABSOLUTE pidl2); |
SHSTDAPI_(LPITEMIDLIST) ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2); | | SHSTDAPI_(BOOL) ILIsParent(__in PCIDLIST_ABSOLUTE pidl1, __in PC |
SHSTDAPI ILLoadFromStream(IStream *pstm, LPITEMIDLIST *pidl); | | IDLIST_ABSOLUTE pidl2, BOOL fImmediate); |
SHSTDAPI ILSaveToStream(IStream *pstm, LPCITEMIDLIST pidl); | | SHSTDAPI ILSaveToStream(__in IStream *pstm, __in PCUIDLIS |
| | T_RELATIVE pidl); |
| | DECLSPEC_DEPRECATED SHSTDAPI ILLoadFromStream(__in IStream *pstm, __inout PID |
| | LIST_RELATIVE *pidl); |
| | SHSTDAPI ILLoadFromStreamEx(__in IStream *pstm, __deref_o |
| | ut PIDLIST_RELATIVE *pidl); |
| | |
#if (_WIN32_IE >= 0x0400) | | #if (_WIN32_IE >= 0x0400) |
| | |
|
SHSTDAPI_(LPITEMIDLIST) ILCreateFromPathA(LPCSTR pszPath); | | SHSTDAPI_(PIDLIST_ABSOLUTE) ILCreateFromPathA(LPCSTR pszPath); |
SHSTDAPI_(LPITEMIDLIST) ILCreateFromPathW(LPCWSTR pszPath); | | SHSTDAPI_(PIDLIST_ABSOLUTE) ILCreateFromPathW(LPCWSTR pszPath); |
| | |
#ifdef NO_WRAPPERS_FOR_ILCREATEFROMPATH | | #ifdef NO_WRAPPERS_FOR_ILCREATEFROMPATH |
|
SHSTDAPI_(LPITEMIDLIST) ILCreateFromPath(LPCTSTR pszPath); | | SHSTDAPI_(PIDLIST_ABSOLUTE) ILCreateFromPath(LPCTSTR pszPath); |
#else | | #else |
#ifdef UNICODE | | #ifdef UNICODE |
|
#define ILCreateFromPath ILCreateFromPathW | | #define ILCreateFromPath ILCreateFromPathW |
#else | | #else |
|
#define ILCreateFromPath ILCreateFromPathA | | #define ILCreateFromPath ILCreateFromPathA |
#endif // !UNICODE | | #endif // !UNICODE |
#endif | | #endif // NO_WRAPPERS_FOR_ILCREATEFROMPATH |
| | |
|
#endif | | #endif // (_WIN32_IE >= 0x0400) |
SHSTDAPI SHILCreateFromPath(LPCWSTR szPath, LPITEMIDLIST *ppidl, DWORD *rgfInOut | | |
); | | SHSTDAPI SHILCreateFromPath(LPCWSTR pszPath, __out PIDLIST_ABSOLUTE *ppidl, __in |
| | out_opt DWORD *rgfInOut); |
| | |
| | #define VOID_OFFSET(pv, cb) ((void*)(((BYTE*)(pv))+(cb))) |
| | |
| | #if defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus) |
| | |
| | } // extern "C" |
| | |
| | inline PIDLIST_ABSOLUTE ILCloneFull(__in PCUIDLIST_ABSOLUTE pidl) { return reint |
| | erpret_cast<PIDLIST_ABSOLUTE>(ILClone(pidl)); } |
| | inline PITEMID_CHILD ILCloneChild(__in PCUITEMID_CHILD pidl) { return ILClo |
| | neFirst(pidl); } |
| | |
| | inline HRESULT ILLoadFromStreamEx(__in IStream *pstm, __deref_out PIDLIST_ABSOLU |
| | TE *ppidl) { return ILLoadFromStreamEx(pstm, reinterpret_cast<PIDLIST_RELATIVE*> |
| | (ppidl)); } |
| | inline HRESULT ILLoadFromStreamEx(__in IStream *pstm, __deref_out PITEMID_CHILD |
| | *ppidl) { return ILLoadFromStreamEx(pstm, reinterpret_cast<PIDLIST_RELATIVE*> |
| | (ppidl)); } |
| | |
| | inline PCUIDLIST_RELATIVE ILSkip(__in PCUIDLIST_RELATIVE pidl, UINT cb) { return |
| | reinterpret_cast<PCUIDLIST_RELATIVE>(VOID_OFFSET(pidl, cb)); } |
| | inline PUIDLIST_RELATIVE ILSkip(__in PUIDLIST_RELATIVE pidl, UINT cb) { return |
| | const_cast<PUIDLIST_RELATIVE>(ILSkip(const_cast<PCUIDLIST_RELATIVE>(pidl), cb)) |
| | ; } |
| | |
| | inline PCUIDLIST_RELATIVE ILNext(__in PCUIDLIST_RELATIVE pidl) { return ILSkip(p |
| | idl, pidl->mkid.cb); } |
| | inline PUIDLIST_RELATIVE ILNext(__in PUIDLIST_RELATIVE pidl) { return const_ca |
| | st<PUIDLIST_RELATIVE>(ILNext(const_cast<PCUIDLIST_RELATIVE>(pidl))); } |
| | |
| | inline BOOL ILIsAligned(__in PCUIDLIST_RELATIVE pidl) { return (((DWORD_PT |
| | R)(pidl) & (sizeof(void*) - 1)) == 0); } |
| | |
| | inline BOOL ILIsEmpty(__in_opt PCUIDLIST_RELATIVE pidl) { return ((pidl == N |
| | ULL) || (pidl->mkid.cb==0)); } |
| | |
| | // ILIsChild does not guarantee that pidl is non-null or non-empty. |
| | inline BOOL ILIsChild(__in_opt PCUIDLIST_RELATIVE pidl) { return (ILIsEm |
| | pty(pidl) || ILIsEmpty(ILNext(pidl))); } |
| | |
| | extern "C" { |
| | |
| | #else // !defined(STRICT_TYPED_ITEMIDS) || !defined(__cplusplus) |
| | |
| | #define ILCloneFull ILClone |
| | #define ILCloneChild ILCloneFirst |
| | |
| | #define ILSkip(pidl, cb) ((PUIDLIST_RELATIVE)VOID_OFFSET((pidl), (cb))) |
| | #define ILNext(pidl) ILSkip(pidl, (pidl)->mkid.cb) |
| | |
| | #define ILIsAligned(pidl) (((DWORD_PTR)(pidl) & (sizeof(void*) - 1)) == 0) |
| | |
| | #define ILIsEmpty(pidl) ((pidl) == NULL || (pidl)->mkid.cb==0) |
| | |
| | // ILIsChild does not guarantee that pidl is non-null or non-empty. |
| | #define ILIsChild(pidl) (ILIsEmpty(pidl) || ILIsEmpty(ILNext(pidl))) |
| | |
| | #endif // defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus) |
| | |
| | SHSTDAPI_(PIDLIST_RELATIVE) ILAppendID(PIDLIST_RELATIVE pidl, LPCSHITEMID pmkid, |
| | BOOL fAppend); |
| | |
| | #if (NTDDI_VERSION >= NTDDI_WIN2K && NTDDI_VERSION < NTDDI_LONGHORN) |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IDefViewFrame | | #define INTERFACE IDefViewFrame |
|
DECLARE_INTERFACE_(IDefViewFrame, IUnknown) | | DECLARE_INTERFACE_IID_(IDefViewFrame, IUnknown, "710EB7A0-45ED-11D0-924A-0020AFC
7AC4D") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, __out void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IDefViewFrame methods *** | | // *** IDefViewFrame methods *** |
|
STDMETHOD(GetWindowLV) (THIS_ HWND * phwnd) PURE; | | STDMETHOD(GetWindowLV) (THIS_ __out HWND * phwnd) PURE; |
STDMETHOD(ReleaseWindowLV) (THIS) PURE; | | STDMETHOD(ReleaseWindowLV) (THIS) PURE; |
|
STDMETHOD(GetShellFolder)(THIS_ IShellFolder **ppsf) PURE; | | STDMETHOD(GetShellFolder)(THIS_ __out IShellFolder **ppsf) PURE; |
}; | | }; |
|
| | #endif |
//=========================================================================== | | //=========================================================================== |
// Shell restrictions. (Parameter for SHRestricted) | | // Shell restrictions. (Parameter for SHRestricted) |
|
| | // SHRestricted has been deprecated in favor of SHWindowsPolicy |
| | //--- do not add restrictions here, see winpolicy.cpp c_rgWindowsPolicies |
typedef enum RESTRICTIONS | | typedef enum RESTRICTIONS |
{ | | { |
REST_NONE = 0x00000000, | | REST_NONE = 0x00000000, |
REST_NORUN = 0x00000001, | | REST_NORUN = 0x00000001, |
REST_NOCLOSE = 0x00000002, | | REST_NOCLOSE = 0x00000002, |
REST_NOSAVESET = 0x00000004, | | REST_NOSAVESET = 0x00000004, |
REST_NOFILEMENU = 0x00000008, | | REST_NOFILEMENU = 0x00000008, |
REST_NOSETFOLDERS = 0x00000010, | | REST_NOSETFOLDERS = 0x00000010, |
REST_NOSETTASKBAR = 0x00000020, | | REST_NOSETTASKBAR = 0x00000020, |
REST_NODESKTOP = 0x00000040, | | REST_NODESKTOP = 0x00000040, |
| | |
skipping to change at line 4162 | | skipping to change at line 3193 |
REST_NOCHANGINGWALLPAPER = 0x40000011, | | REST_NOCHANGINGWALLPAPER = 0x40000011, |
REST_NODESKCOMP = 0x40000012, | | REST_NODESKCOMP = 0x40000012, |
REST_NOADDDESKCOMP = 0x40000013, | | REST_NOADDDESKCOMP = 0x40000013, |
REST_NODELDESKCOMP = 0x40000014, | | REST_NODELDESKCOMP = 0x40000014, |
REST_NOCLOSEDESKCOMP = 0x40000015, | | REST_NOCLOSEDESKCOMP = 0x40000015, |
REST_NOCLOSE_DRAGDROPBAND = 0x40000016, // Disable Close and Drag &
Drop on ALL Bands | | REST_NOCLOSE_DRAGDROPBAND = 0x40000016, // Disable Close and Drag &
Drop on ALL Bands |
REST_NOMOVINGBAND = 0x40000017, // Disable Moving ALL Bands | | REST_NOMOVINGBAND = 0x40000017, // Disable Moving ALL Bands |
REST_NOEDITDESKCOMP = 0x40000018, | | REST_NOEDITDESKCOMP = 0x40000018, |
REST_NORESOLVESEARCH = 0x40000019, | | REST_NORESOLVESEARCH = 0x40000019, |
REST_NORESOLVETRACK = 0x4000001A, | | REST_NORESOLVETRACK = 0x4000001A, |
|
REST_FORCECOPYACLWITHFILE = 0X4000001B, | | REST_FORCECOPYACLWITHFILE = 0x4000001B, |
| | #if (NTDDI_VERSION < NTDDI_LONGHORN) |
REST_NOLOGO3CHANNELNOTIFY = 0x4000001C, | | REST_NOLOGO3CHANNELNOTIFY = 0x4000001C, |
|
| | #endif |
REST_NOFORGETSOFTWAREUPDATE = 0x4000001D, | | REST_NOFORGETSOFTWAREUPDATE = 0x4000001D, |
REST_NOSETACTIVEDESKTOP = 0x4000001E, // No Active desktop on Sett
ings Menu | | REST_NOSETACTIVEDESKTOP = 0x4000001E, // No Active desktop on Sett
ings Menu |
REST_NOUPDATEWINDOWS = 0x4000001F, // No Windows Update on Sett
ings Menu | | REST_NOUPDATEWINDOWS = 0x4000001F, // No Windows Update on Sett
ings Menu |
REST_NOCHANGESTARMENU = 0x40000020, // No Context menu or Drag a
nd Drop on Start menu | | REST_NOCHANGESTARMENU = 0x40000020, // No Context menu or Drag a
nd Drop on Start menu |
REST_NOFOLDEROPTIONS = 0x40000021, // No Folder Options on Sett
ings Menu | | REST_NOFOLDEROPTIONS = 0x40000021, // No Folder Options on Sett
ings Menu |
REST_HASFINDCOMPUTERS = 0x40000022, // Show Start/Search/Compute
rs | | REST_HASFINDCOMPUTERS = 0x40000022, // Show Start/Search/Compute
rs |
REST_INTELLIMENUS = 0x40000023, | | REST_INTELLIMENUS = 0x40000023, |
REST_RUNDLGMEMCHECKBOX = 0x40000024, | | REST_RUNDLGMEMCHECKBOX = 0x40000024, |
REST_ARP_ShowPostSetup = 0x40000025, // ARP: Show Post-Setup page | | REST_ARP_ShowPostSetup = 0x40000025, // ARP: Show Post-Setup page |
REST_NOCSC = 0x40000026, // Disable the ClientSide ca
ching on SM | | REST_NOCSC = 0x40000026, // Disable the ClientSide ca
ching on SM |
| | |
skipping to change at line 4196 | | skipping to change at line 3229 |
REST_NOWEBVIEW = 0x40000033, // Disable Web View | | REST_NOWEBVIEW = 0x40000033, // Disable Web View |
REST_NOCUSTOMIZETHISFOLDER = 0x40000034, // Disable Customize This Fo
lder | | REST_NOCUSTOMIZETHISFOLDER = 0x40000034, // Disable Customize This Fo
lder |
REST_NOENCRYPTION = 0x40000035, // Don't allow file encrypti
on | | REST_NOENCRYPTION = 0x40000035, // Don't allow file encrypti
on |
// Do NOT use me 0x40000036, | | // Do NOT use me 0x40000036, |
REST_DONTSHOWSUPERHIDDEN = 0x40000037, // don't show super hidden f
iles | | REST_DONTSHOWSUPERHIDDEN = 0x40000037, // don't show super hidden f
iles |
REST_NOSHELLSEARCHBUTTON = 0x40000038, | | REST_NOSHELLSEARCHBUTTON = 0x40000038, |
REST_NOHARDWARETAB = 0x40000039, // No Hardware tab on Drives
or in control panel | | REST_NOHARDWARETAB = 0x40000039, // No Hardware tab on Drives
or in control panel |
REST_NORUNASINSTALLPROMPT = 0x4000003A, // Don't bring up "Run As" p
rompt for install programs | | REST_NORUNASINSTALLPROMPT = 0x4000003A, // Don't bring up "Run As" p
rompt for install programs |
REST_PROMPTRUNASINSTALLNETPATH = 0x4000003B, // Force the "Run As" promp
t for install programs on unc/network shares | | REST_PROMPTRUNASINSTALLNETPATH = 0x4000003B, // Force the "Run As" promp
t for install programs on unc/network shares |
REST_NOMANAGEMYCOMPUTERVERB = 0x4000003C, // No Manage verb on My Comp
uter | | REST_NOMANAGEMYCOMPUTERVERB = 0x4000003C, // No Manage verb on My Comp
uter |
|
REST_NORECENTDOCSNETHOOD = 0x4000003D, // dont add the recent docs
shares to nethood | | // Do NOT use me 0x4000003D, |
REST_DISALLOWRUN = 0x4000003E, // don't allow certain apps
to be run | | REST_DISALLOWRUN = 0x4000003E, // don't allow certain apps
to be run |
REST_NOWELCOMESCREEN = 0x4000003F, // don't allow the welcome s
creen to be displayed. | | REST_NOWELCOMESCREEN = 0x4000003F, // don't allow the welcome s
creen to be displayed. |
REST_RESTRICTCPL = 0x40000040, // only allow certain cpls t
o be run | | REST_RESTRICTCPL = 0x40000040, // only allow certain cpls t
o be run |
REST_DISALLOWCPL = 0x40000041, // don't allow certain cpls
to be run | | REST_DISALLOWCPL = 0x40000041, // don't allow certain cpls
to be run |
REST_NOSMBALLOONTIP = 0x40000042, // No Start Menu Balloon Tip | | REST_NOSMBALLOONTIP = 0x40000042, // No Start Menu Balloon Tip |
REST_NOSMHELP = 0x40000043, // No Help on the Start Menu | | REST_NOSMHELP = 0x40000043, // No Help on the Start Menu |
REST_NOWINKEYS = 0x40000044, // No Windows-X Hot keys | | REST_NOWINKEYS = 0x40000044, // No Windows-X Hot keys |
REST_NOENCRYPTONMOVE = 0x40000045, // Don't automatically try t
o encrypt files that are moved to encryped directories | | REST_NOENCRYPTONMOVE = 0x40000045, // Don't automatically try t
o encrypt files that are moved to encryped directories |
REST_NOLOCALMACHINERUN = 0x40000046, // ignore HKLM\sw\ms\win\cv\
Run and all of it's sub keys | | REST_NOLOCALMACHINERUN = 0x40000046, // ignore HKLM\sw\ms\win\cv\
Run and all of it's sub keys |
REST_NOCURRENTUSERRUN = 0x40000047, // ignore HKCU\sw\ms\win\cv\
Run and all of it's sub keys | | REST_NOCURRENTUSERRUN = 0x40000047, // ignore HKCU\sw\ms\win\cv\
Run and all of it's sub keys |
REST_NOLOCALMACHINERUNONCE = 0x40000048, // ignore HKLM\sw\ms\win\cv\
RunOnce and all of it's sub keys | | REST_NOLOCALMACHINERUNONCE = 0x40000048, // ignore HKLM\sw\ms\win\cv\
RunOnce and all of it's sub keys |
REST_NOCURRENTUSERRUNONCE = 0x40000049, // ignore HKCU\sw\ms\win\cv\
RunOnce and all of it's sub keys | | REST_NOCURRENTUSERRUNONCE = 0x40000049, // ignore HKCU\sw\ms\win\cv\
RunOnce and all of it's sub keys |
REST_FORCEACTIVEDESKTOPON = 0x4000004A, // Force ActiveDesktop to be
turned ON all the time. | | REST_FORCEACTIVEDESKTOPON = 0x4000004A, // Force ActiveDesktop to be
turned ON all the time. |
|
REST_NOCOMPUTERSNEARME = 0x4000004B, // removes the "Computers ne
ar me" link | | // Do NOT use me 0x4000004B, |
REST_NOVIEWONDRIVE = 0x4000004C, // disallows CreateViewObjec
t() on specified drives (CFSFolder only) | | REST_NOVIEWONDRIVE = 0x4000004C, // disallows CreateViewObjec
t() on specified drives (CFSFolder only) |
|
| | #if (NTDDI_VERSION >= NTDDI_WINXP) || defined(IE_BACKCOMPAT_VERSION) |
REST_NONETCRAWL = 0x4000004D, // disables the crawling of
the WNet namespace. | | REST_NONETCRAWL = 0x4000004D, // disables the crawling of
the WNet namespace. |
REST_NOSHAREDDOCUMENTS = 0x4000004E, // don't auto share the Shar
ed Documents/create link | | REST_NOSHAREDDOCUMENTS = 0x4000004E, // don't auto share the Shar
ed Documents/create link |
|
| | #endif // NTDDI_WINXP |
REST_NOSMMYDOCS = 0x4000004F, // Don't show the My Documen
ts item on the Start Menu. | | REST_NOSMMYDOCS = 0x4000004F, // Don't show the My Documen
ts item on the Start Menu. |
|
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
REST_NOSMMYPICS = 0x40000050, // Don't show the My Picture
s item on the Start Menu | | REST_NOSMMYPICS = 0x40000050, // Don't show the My Picture
s item on the Start Menu |
REST_ALLOWBITBUCKDRIVES = 0x40000051, // Bit mask indicating which
which drives have bit bucket support | | REST_ALLOWBITBUCKDRIVES = 0x40000051, // Bit mask indicating which
which drives have bit bucket support |
REST_NONLEGACYSHELLMODE = 0x40000052, // new consumer shell modes | | REST_NONLEGACYSHELLMODE = 0x40000052, // new consumer shell modes |
REST_NOCONTROLPANELBARRICADE = 0x40000053, // The webview barricade in
Control Panel | | REST_NOCONTROLPANELBARRICADE = 0x40000053, // The webview barricade in
Control Panel |
REST_NOSTARTPAGE = 0x40000054, // Whistler Start Page on de
sktop. | | REST_NOSTARTPAGE = 0x40000054, // Whistler Start Page on de
sktop. |
REST_NOAUTOTRAYNOTIFY = 0x40000055, // Whistler auto-tray notify
feature | | REST_NOAUTOTRAYNOTIFY = 0x40000055, // Whistler auto-tray notify
feature |
REST_NOTASKGROUPING = 0x40000056, // Whistler taskbar button g
rouping feature | | REST_NOTASKGROUPING = 0x40000056, // Whistler taskbar button g
rouping feature |
REST_NOCDBURNING = 0x40000057, // whistler cd burning featu
re | | REST_NOCDBURNING = 0x40000057, // whistler cd burning featu
re |
|
| | #endif // NTDDI_WINXP |
| | #if (NTDDI_VERSION >= NTDDI_WIN2KSP3) |
REST_MYCOMPNOPROP = 0x40000058, // disables Properties on My
Computer's context menu | | REST_MYCOMPNOPROP = 0x40000058, // disables Properties on My
Computer's context menu |
REST_MYDOCSNOPROP = 0x40000059, // disables Properties on My
Documents' context menu | | REST_MYDOCSNOPROP = 0x40000059, // disables Properties on My
Documents' context menu |
|
| | #endif // NTDDI_WIN2KSP3 |
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
REST_NOSTARTPANEL = 0x4000005A, // Windows start panel (New
start menu) for Whistler. | | REST_NOSTARTPANEL = 0x4000005A, // Windows start panel (New
start menu) for Whistler. |
REST_NODISPLAYAPPEARANCEPAGE = 0x4000005B, // disable Themes and Appear
ance tabs in the Display Control Panel. | | REST_NODISPLAYAPPEARANCEPAGE = 0x4000005B, // disable Themes and Appear
ance tabs in the Display Control Panel. |
REST_NOTHEMESTAB = 0x4000005C, // disable the Themes tab in
the Display Control Panel. | | REST_NOTHEMESTAB = 0x4000005C, // disable the Themes tab in
the Display Control Panel. |
REST_NOVISUALSTYLECHOICE = 0x4000005D, // disable the visual style
drop down in the Appearance tab of the Display Control Panel. | | REST_NOVISUALSTYLECHOICE = 0x4000005D, // disable the visual style
drop down in the Appearance tab of the Display Control Panel. |
REST_NOSIZECHOICE = 0x4000005E, // disable the size drop dow
n in the Appearance tab of the Display Control Panel. | | REST_NOSIZECHOICE = 0x4000005E, // disable the size drop dow
n in the Appearance tab of the Display Control Panel. |
REST_NOCOLORCHOICE = 0x4000005F, // disable the color drop do
wn in the Appearance tab of the Display Control Panel. | | REST_NOCOLORCHOICE = 0x4000005F, // disable the color drop do
wn in the Appearance tab of the Display Control Panel. |
REST_SETVISUALSTYLE = 0x40000060, // Load the specified file a
s the visual style. | | REST_SETVISUALSTYLE = 0x40000060, // Load the specified file a
s the visual style. |
|
| | #endif // NTDDI_WINXP |
| | #if (NTDDI_VERSION >= NTDDI_WIN2KSP3) |
REST_STARTRUNNOHOMEPATH = 0x40000061, // dont use the %HOMEPATH% e
nv var for the Start-Run dialog | | REST_STARTRUNNOHOMEPATH = 0x40000061, // dont use the %HOMEPATH% e
nv var for the Start-Run dialog |
|
| | #endif // NTDDI_WIN2KSP3 |
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
REST_NOUSERNAMEINSTARTPANEL = 0x40000062, // don't show the username i
s the startpanel. | | REST_NOUSERNAMEINSTARTPANEL = 0x40000062, // don't show the username i
s the startpanel. |
REST_NOMYCOMPUTERICON = 0x40000063, // don't show my computer an
ywhere, hide its contents | | REST_NOMYCOMPUTERICON = 0x40000063, // don't show my computer an
ywhere, hide its contents |
REST_NOSMNETWORKPLACES = 0x40000064, // don't show network places
in startpanel. | | REST_NOSMNETWORKPLACES = 0x40000064, // don't show network places
in startpanel. |
REST_NOSMPINNEDLIST = 0x40000065, // don't show the pinned lis
t in startpanel. | | REST_NOSMPINNEDLIST = 0x40000065, // don't show the pinned lis
t in startpanel. |
REST_NOSMMYMUSIC = 0x40000066, // don't show MyMusic folder
in startpanel | | REST_NOSMMYMUSIC = 0x40000066, // don't show MyMusic folder
in startpanel |
REST_NOSMEJECTPC = 0x40000067, // don't show "Undoc PC" com
mand in startmenu | | REST_NOSMEJECTPC = 0x40000067, // don't show "Undoc PC" com
mand in startmenu |
REST_NOSMMOREPROGRAMS = 0x40000068, // don't show "More Programs
" button in StartPanel. | | REST_NOSMMOREPROGRAMS = 0x40000068, // don't show "More Programs
" button in StartPanel. |
REST_NOSMMFUPROGRAMS = 0x40000069, // don't show the MFU progra
ms list in StartPanel. | | REST_NOSMMFUPROGRAMS = 0x40000069, // don't show the MFU progra
ms list in StartPanel. |
REST_NOTRAYITEMSDISPLAY = 0x4000006A, // disables the display of t
he system tray | | REST_NOTRAYITEMSDISPLAY = 0x4000006A, // disables the display of t
he system tray |
REST_NOTOOLBARSONTASKBAR = 0x4000006B, // disables toolbar display
on the taskbar | | REST_NOTOOLBARSONTASKBAR = 0x4000006B, // disables toolbar display
on the taskbar |
|
| | #endif // NTDDI_WINXP |
| | #if (NTDDI_VERSION >= NTDDI_WIN2KSP3) |
REST_NOSMCONFIGUREPROGRAMS = 0x4000006F, // No Configure Programs on
Settings Menu | | REST_NOSMCONFIGUREPROGRAMS = 0x4000006F, // No Configure Programs on
Settings Menu |
|
| | #endif // NTDDI_WIN2KSP3 |
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
REST_HIDECLOCK = 0x40000070, // don't show the clock | | REST_HIDECLOCK = 0x40000070, // don't show the clock |
REST_NOLOWDISKSPACECHECKS = 0x40000071, // disable the low disk spac
e checking | | REST_NOLOWDISKSPACECHECKS = 0x40000071, // disable the low disk spac
e checking |
|
| | #endif // NTDDI_WINXP |
| | #if (NTDDI_VERSION >= NTDDI_WIN2KSP4) |
REST_NOENTIRENETWORK = 0x40000072, // removes the "Entire Netwo
rk" link (i.e. from "My Network Places") | | REST_NOENTIRENETWORK = 0x40000072, // removes the "Entire Netwo
rk" link (i.e. from "My Network Places") |
|
| | #endif // NTDDI_WIN2KSP4 |
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
REST_NODESKTOPCLEANUP = 0x40000073, // disable the desktop clean
up wizard | | REST_NODESKTOPCLEANUP = 0x40000073, // disable the desktop clean
up wizard |
REST_BITBUCKNUKEONDELETE = 0x40000074, // disables recycling of fil
es | | REST_BITBUCKNUKEONDELETE = 0x40000074, // disables recycling of fil
es |
REST_BITBUCKCONFIRMDELETE = 0x40000075, // always show the delete co
nfirmation dialog when deleting files | | REST_BITBUCKCONFIRMDELETE = 0x40000075, // always show the delete co
nfirmation dialog when deleting files |
REST_BITBUCKNOPROP = 0x40000076, // disables Properties on Re
cycle Bin's context menu | | REST_BITBUCKNOPROP = 0x40000076, // disables Properties on Re
cycle Bin's context menu |
REST_NODISPBACKGROUND = 0x40000077, // disables the Desktop tab
in the Display CPL | | REST_NODISPBACKGROUND = 0x40000077, // disables the Desktop tab
in the Display CPL |
REST_NODISPSCREENSAVEPG = 0x40000078, // disables the Screen Saver
tab in the Display CPL | | REST_NODISPSCREENSAVEPG = 0x40000078, // disables the Screen Saver
tab in the Display CPL |
REST_NODISPSETTINGSPG = 0x40000079, // disables the Settings tab
in the Display CPL | | REST_NODISPSETTINGSPG = 0x40000079, // disables the Settings tab
in the Display CPL |
REST_NODISPSCREENSAVEPREVIEW = 0x4000007A, // disables the screen saver
on the Screen Saver tab in the Display CPL | | REST_NODISPSCREENSAVEPREVIEW = 0x4000007A, // disables the screen saver
on the Screen Saver tab in the Display CPL |
REST_NODISPLAYCPL = 0x4000007B, // disables the Display CPL | | REST_NODISPLAYCPL = 0x4000007B, // disables the Display CPL |
REST_HIDERUNASVERB = 0x4000007C, // hides the "Run As..." con
text menu item | | REST_HIDERUNASVERB = 0x4000007C, // hides the "Run As..." con
text menu item |
REST_NOTHUMBNAILCACHE = 0x4000007D, // disables use of the thumb
nail cache | | REST_NOTHUMBNAILCACHE = 0x4000007D, // disables use of the thumb
nail cache |
|
| | #endif // NTDDI_WINXP |
| | #if (NTDDI_VERSION >= NTDDI_WINXPSP1) || defined(IE_BACKCOMPAT_VERSION) |
REST_NOSTRCMPLOGICAL = 0x4000007E, // dont use StrCmpLogical()
instead use default CompareString() | | REST_NOSTRCMPLOGICAL = 0x4000007E, // dont use StrCmpLogical()
instead use default CompareString() |
REST_NOPUBLISHWIZARD = 0x4000007F, // disables publishing wizar
d (WPW) | | REST_NOPUBLISHWIZARD = 0x4000007F, // disables publishing wizar
d (WPW) |
REST_NOONLINEPRINTSWIZARD = 0x40000080, // disables online prints wi
zard (OPW) | | REST_NOONLINEPRINTSWIZARD = 0x40000080, // disables online prints wi
zard (OPW) |
REST_NOWEBSERVICES = 0x40000081, // disables the web specifie
d services for both OPW and WPW | | REST_NOWEBSERVICES = 0x40000081, // disables the web specifie
d services for both OPW and WPW |
|
| | #endif // NTDDI_WINXPSP1 |
| | #if (NTDDI_VERSION >= NTDDI_WIN2KSP3) |
REST_ALLOWUNHASHEDWEBVIEW = 0x40000082, // allow the user to be prom
ted to accept web view templates that don't already have an md5 hash in the regi
stry | | REST_ALLOWUNHASHEDWEBVIEW = 0x40000082, // allow the user to be prom
ted to accept web view templates that don't already have an md5 hash in the regi
stry |
|
| | #endif // NTDDI_WIN2KSP3 |
REST_ALLOWLEGACYWEBVIEW = 0x40000083, // allow legacy webview temp
late to be shown. | | REST_ALLOWLEGACYWEBVIEW = 0x40000083, // allow legacy webview temp
late to be shown. |
|
| | #if (NTDDI_VERSION >= NTDDI_WIN2KSP3) |
REST_REVERTWEBVIEWSECURITY = 0x40000084, // disable added webview sec
urity measures (revert to w2k functionality). | | REST_REVERTWEBVIEWSECURITY = 0x40000084, // disable added webview sec
urity measures (revert to w2k functionality). |
|
| | #endif // NTDDI_WIN2KSP3 |
| | #if (NTDDI_VERSION >= NTDDI_WIN2KSP4) |
REST_INHERITCONSOLEHANDLES = 0x40000086, // ShellExec() will check fo
r the current process and target process being console processes to inherit hand
les | | REST_INHERITCONSOLEHANDLES = 0x40000086, // ShellExec() will check fo
r the current process and target process being console processes to inherit hand
les |
|
| | #endif // NTDDI_WIN2KSP4 |
| | #if (NTDDI_VERSION >= NTDDI_WINXPSP2 && NTDDI_VERSION < NTDDI_LONGHORN) |
REST_SORTMAXITEMCOUNT = 0x40000087, // Do not sort views with mo
re items than this key. Useful for viewing big amount of files in one folder. | | REST_SORTMAXITEMCOUNT = 0x40000087, // Do not sort views with mo
re items than this key. Useful for viewing big amount of files in one folder. |
|
| | #endif |
| | #if (NTDDI_VERSION >= NTDDI_WINXPSP2) |
REST_NOREMOTERECURSIVEEVENTS = 0x40000089, // Dont register network cha
nge events recursively to avoid network traffic | | REST_NOREMOTERECURSIVEEVENTS = 0x40000089, // Dont register network cha
nge events recursively to avoid network traffic |
|
REST_NOREMOTECHANGENOTIFY = 0x40000091, // Do not register for remot | | #endif // NTDDI_WINXPSP2 |
e change notifies | | #if (NTDDI_VERSION >= NTDDI_WINXPSP2) |
| | REST_NOREMOTECHANGENOTIFY = 0x40000091, // Do not notify for remote |
| | changy notifies |
| | #if (NTDDI_VERSION < NTDDI_LONGHORN) |
REST_NOSIMPLENETIDLIST = 0x40000092, // No simple network IDLists | | REST_NOSIMPLENETIDLIST = 0x40000092, // No simple network IDLists |
|
| | #endif |
REST_NOENUMENTIRENETWORK = 0x40000093, // Don't enumerate entire ne
twork if we happen to get to it (in conjunction with REST_NOENTIRENETWORK) | | REST_NOENUMENTIRENETWORK = 0x40000093, // Don't enumerate entire ne
twork if we happen to get to it (in conjunction with REST_NOENTIRENETWORK) |
|
| | #if (NTDDI_VERSION < NTDDI_LONGHORN) |
REST_NODETAILSTHUMBNAILONNETWORK= 0x40000094, // Disable Thumbnail for Net
work files in DUI Details pane | | REST_NODETAILSTHUMBNAILONNETWORK= 0x40000094, // Disable Thumbnail for Net
work files in DUI Details pane |
|
| | #endif |
REST_NOINTERNETOPENWITH = 0x40000095, // dont allow looking on the
internet for file associations | | REST_NOINTERNETOPENWITH = 0x40000095, // dont allow looking on the
internet for file associations |
|
REST_ALLOWLEGACYLMZBEHAVIOR = 0x4000009A, // allowable LMZ behavior fo | | #endif // NTDDI_WINXPSP2 |
r ActiveX objects changed in XPSP2, this policy gets the pre-XPSP2 behavior | | #if (NTDDI_VERSION >= NTDDI_WINXPSP2) |
REST_DONTRETRYBADNETNAME = 0x4000009B, // In Network Places: if pro
vider returns ERROR_BAD_NET_NAME, give up | | REST_DONTRETRYBADNETNAME = 0x4000009B, // In Network Places: if pro
vider returns ERROR_BAD_NET_NAME, give up |
REST_ALLOWFILECLSIDJUNCTIONS = 0x4000009C, // re-enable legacy support
for file.{guid} junctions in FileSystem Folder | | REST_ALLOWFILECLSIDJUNCTIONS = 0x4000009C, // re-enable legacy support
for file.{guid} junctions in FileSystem Folder |
REST_NOUPNPINSTALL = 0x4000009D, // disable "install UPnP" ta
sk in My Net Places | | REST_NOUPNPINSTALL = 0x4000009D, // disable "install UPnP" ta
sk in My Net Places |
|
| | #endif // NTDDI_WINXPSP2 |
| | REST_ARP_DONTGROUPPATCHES = 0x400000AC, //List individual patches in |
| | Add/Remove Programs |
| | REST_ARP_NOCHOOSEPROGRAMSPAGE = 0x400000AD, //Choose programs page |
| | |
REST_NODISCONNECT = 0x41000001, // No Disconnect option in S
tart menu | | REST_NODISCONNECT = 0x41000001, // No Disconnect option in S
tart menu |
REST_NOSECURITY = 0x41000002, // No Security option in sta
rt menu | | REST_NOSECURITY = 0x41000002, // No Security option in sta
rt menu |
REST_NOFILEASSOCIATE = 0x41000003, // Do not allow user to chan
ge file association | | REST_NOFILEASSOCIATE = 0x41000003, // Do not allow user to chan
ge file association |
|
| | #if (NTDDI_VERSION >= NTDDI_WINXPSP2) |
REST_ALLOWCOMMENTTOGGLE = 0x41000004, // Allow the user to toggle
the positions of the Comment and the Computer Name | | REST_ALLOWCOMMENTTOGGLE = 0x41000004, // Allow the user to toggle
the positions of the Comment and the Computer Name |
|
| | #if (NTDDI_VERSION < NTDDI_LONGHORN) |
REST_USEDESKTOPINICACHE = 0x41000005, // Cache desktop.ini entries
from network folders | | REST_USEDESKTOPINICACHE = 0x41000005, // Cache desktop.ini entries
from network folders |
|
| | #endif // NTDDI_LONGHORN |
| | #endif // NTDDI_WINXPSP2 |
} RESTRICTIONS; | | } RESTRICTIONS; |
SHSTDAPI_(IStream *) OpenRegStream(HKEY hkey, LPCWSTR pszSubkey, LPCWSTR pszValu
e, DWORD grfMode); | | SHSTDAPI_(IStream *) OpenRegStream(HKEY hkey, LPCWSTR pszSubkey, LPCWSTR pszValu
e, DWORD grfMode); |
|
SHSTDAPI_(BOOL) SHFindFiles(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlSaveFile | | SHSTDAPI_(BOOL) SHFindFiles(PCIDLIST_ABSOLUTE pidlFolder, PCIDLIST_ABSOLUTE pidl |
); | | SaveFile); |
SHSTDAPI_(void) PathGetShortPath(LPWSTR pszLongPath); | | SHSTDAPI_(void) PathGetShortPath(__inout_ecount(MAX_PATH) LPWSTR pszLongPath); |
SHSTDAPI_(BOOL) PathYetAnotherMakeUniqueName(LPWSTR pszUniqueName, LPCWSTR pszP | | SHSTDAPI_(BOOL) PathYetAnotherMakeUniqueName(__out_ecount(MAX_PATH) LPWSTR pszU |
ath, LPCWSTR pszShort, LPCWSTR pszFileSpec); | | niqueName, LPCWSTR pszPath, LPCWSTR pszShort, LPCWSTR pszFileSpec); |
SHSTDAPI_(BOOL) Win32DeleteFile(LPCWSTR pszPath); | | SHSTDAPI_(BOOL) Win32DeleteFile(LPCWSTR pszPath); |
|
| | #if (NTDDI_VERSION < NTDDI_LONGHORN) |
// | | // |
// Path processing function | | // Path processing function |
// | | // |
#define PPCF_ADDQUOTES 0x00000001 // return a quoted name i
f required | | #define PPCF_ADDQUOTES 0x00000001 // return a quoted name i
f required |
#define PPCF_ADDARGUMENTS 0x00000003 // appends arguments (and
wraps in quotes if required) | | #define PPCF_ADDARGUMENTS 0x00000003 // appends arguments (and
wraps in quotes if required) |
#define PPCF_NODIRECTORIES 0x00000010 // don't match to directo
ries | | #define PPCF_NODIRECTORIES 0x00000010 // don't match to directo
ries |
#define PPCF_FORCEQUALIFY 0x00000040 // qualify even non-relat
ive names | | #define PPCF_FORCEQUALIFY 0x00000040 // qualify even non-relat
ive names |
#define PPCF_LONGESTPOSSIBLE 0x00000080 // always find the longes
t possible name | | #define PPCF_LONGESTPOSSIBLE 0x00000080 // always find the longes
t possible name |
| | |
SHSTDAPI_(LONG) PathProcessCommand(LPCWSTR lpSrc, LPWSTR lpDest, int iMax, DWORD
dwFlags); | | SHSTDAPI_(LONG) PathProcessCommand(LPCWSTR lpSrc, LPWSTR lpDest, int iMax, DWORD
dwFlags); |
|
| | #endif |
SHSTDAPI_(DWORD) SHRestricted(RESTRICTIONS rest); | | SHSTDAPI_(DWORD) SHRestricted(RESTRICTIONS rest); |
|
SHSTDAPI_(BOOL) SignalFileOpen(LPCITEMIDLIST pidl); | | SHSTDAPI_(BOOL) SignalFileOpen(PCIDLIST_ABSOLUTE pidl); |
SHSTDAPI_(LPITEMIDLIST) SHSimpleIDListFromPath(LPCWSTR pszPath); | | SHSTDAPI_(PIDLIST_ABSOLUTE) SHSimpleIDListFromPath(LPCWSTR pszPath); |
| | |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | SHSTDAPI AssocGetDetailsOfPropKey(__in IShellFolder *psf, __in PCUITEMID_CHILD p |
| | idl, __in const PROPERTYKEY *pkey, __out VARIANT *pv, __out_opt BOOL *pfFoundPro |
| | pKey); |
| | #endif |
| | |
| | #if (NTDDI_VERSION < NTDDI_LONGHORN) |
SHSTDAPI SHLoadOLE(LPARAM lParam); | | SHSTDAPI SHLoadOLE(LPARAM lParam); |
|
SHSTDAPI SHStartNetConnectionDialogA(HWND hwnd, LPCSTR pszRemoteName, DWORD dwTy | | #endif |
pe); | | |
SHSTDAPI SHStartNetConnectionDialogW(HWND hwnd, LPCWSTR pszRemoteName, DWORD dwT | | // both ANSI and UNICODE |
ype); | | SHSTDAPI SHStartNetConnectionDialogA(HWND hwnd, __in_opt LPCSTR pszRemoteName, D |
| | WORD dwType); |
| | // both ANSI and UNICODE |
| | SHSTDAPI SHStartNetConnectionDialogW(HWND hwnd, __in_opt LPCWSTR pszRemoteName, |
| | DWORD dwType); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHStartNetConnectionDialog SHStartNetConnectionDialogW | | #define SHStartNetConnectionDialog SHStartNetConnectionDialogW |
#else | | #else |
#define SHStartNetConnectionDialog SHStartNetConnectionDialogA | | #define SHStartNetConnectionDialog SHStartNetConnectionDialogA |
#endif // !UNICODE | | #endif // !UNICODE |
SHSTDAPI SHDefExtractIconA(LPCSTR pszIconFile, int iIndex, UINT uFlags, | | SHSTDAPI SHDefExtractIconA(LPCSTR pszIconFile, int iIndex, UINT uFlags, |
|
HICON *phiconLarge, HICON *phiconSmall, UINT nIconSiz
e); | | __out_opt HICON *phiconLarge, __out_opt HICON *phicon
Small, UINT nIconSize); |
SHSTDAPI SHDefExtractIconW(LPCWSTR pszIconFile, int iIndex, UINT uFlags, | | SHSTDAPI SHDefExtractIconW(LPCWSTR pszIconFile, int iIndex, UINT uFlags, |
|
HICON *phiconLarge, HICON *phiconSmall, UINT nIconSiz
e); | | __out_opt HICON *phiconLarge, __out_opt HICON *phicon
Small, UINT nIconSize); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHDefExtractIcon SHDefExtractIconW | | #define SHDefExtractIcon SHDefExtractIconW |
#else | | #else |
#define SHDefExtractIcon SHDefExtractIconA | | #define SHDefExtractIcon SHDefExtractIconA |
#endif // !UNICODE | | #endif // !UNICODE |
|
SHSTDAPI_(BOOL) Shell_GetImageLists(HIMAGELIST *phiml, HIMAGELIST *phimlSmall); | | |
SHSTDAPI_(int) Shell_GetCachedImageIndex(LPCWSTR pszIconPath, int iIconIndex, U | | // Elevation |
INT uIconFlags); | | |
| | // OpenAsInfo flags |
| | enum tagOPEN_AS_INFO_FLAGS { |
| | OAIF_ALLOW_REGISTRATION = 0x00000001, // enable the "always use this fil |
| | e" checkbox (NOTE if you don't pass this, it will be disabled) |
| | OAIF_REGISTER_EXT = 0x00000002, // do the registration after the u |
| | ser hits "ok" |
| | OAIF_EXEC = 0x00000004, // execute file after registering |
| | OAIF_FORCE_REGISTRATION = 0x00000008, // force the "always use this file |
| | " checkbox to be checked (normally, you won't use the OAIF_ALLOW_REGISTRATION wh |
| | en you pass this) |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | OAIF_HIDE_REGISTRATION = 0x00000020, // hide the "always use this file" |
| | checkbox |
| | OAIF_URL_PROTOCOL = 0x00000040, // the "extension" passed is actua |
| | lly a protocol, and open with should show apps registered as capable of handling |
| | that protocol |
| | #endif |
| | }; |
| | typedef int OPEN_AS_INFO_FLAGS; |
| | |
| | #include <pshpack8.h> |
| | |
| | typedef struct _openasinfo |
| | { |
| | LPCTSTR pcszFile; // [in] file name, or protocol name if |
| | // OAIF_URL_PROTOCOL is set. |
| | LPCTSTR pcszClass; // [in] file class description. NULL means |
| | // use pcszFile's extension. ignored |
| | // if OAIF_URL_PROTOCOL is set. |
| | OPEN_AS_INFO_FLAGS oaifInFlags; // [in] input flags from OPEN_AS_INFO_FLAGS |
| | enumeration |
| | } OPENASINFO, * POPENASINFO; |
| | |
| | #include <poppack.h> /* Return to byte packing */ |
| | |
| | SHSTDAPI SHOpenWithDialog(__in HWND hwndParent, __in const OPENASINFO* poainfo); |
| | |
| | SHSTDAPI_(BOOL) Shell_GetImageLists(__out_opt HIMAGELIST *phiml, __out_opt HIMAG |
| | ELIST *phimlSmall); |
| | SHSTDAPI_(int) Shell_GetCachedImageIndex(LPCWSTR pwszIconPath, int iIconIndex, |
| | UINT uIconFlags); |
| | SHSTDAPI_(int) Shell_GetCachedImageIndexA(LPCSTR pszIconPath, int iIconIndex, U |
| | INT uIconFlags); |
| | SHSTDAPI_(int) Shell_GetCachedImageIndexW(LPCWSTR pszIconPath, int iIconIndex, |
| | UINT uIconFlags); |
| | #ifdef UNICODE |
| | #define Shell_GetCachedImageIndex Shell_GetCachedImageIndexW |
| | #else |
| | #define Shell_GetCachedImageIndex Shell_GetCachedImageIndexA |
| | #endif // !UNICODE |
| | |
// | | // |
// IDocViewSite | | // IDocViewSite |
// | | // |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IDocViewSite | | #define INTERFACE IDocViewSite |
|
DECLARE_INTERFACE_(IDocViewSite, IUnknown) | | DECLARE_INTERFACE_IID_(IDocViewSite, IUnknown, "87D605E0-C511-11CF-89A9-00A0C905
4129") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef)(THIS) PURE; | | STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
STDMETHOD_(ULONG,Release)(THIS) PURE; | | STDMETHOD_(ULONG,Release)(THIS) PURE; |
| | |
// *** IDocViewSite methods *** | | // *** IDocViewSite methods *** |
STDMETHOD(OnSetTitle) (THIS_ VARIANTARG *pvTitle) PURE; | | STDMETHOD(OnSetTitle) (THIS_ VARIANTARG *pvTitle) PURE; |
| | |
} ; | | } ; |
|
#define VALIDATEUNC_NOUI 0x0002 // don't bring up UI | | |
#define VALIDATEUNC_CONNECT 0x0001 // connect a drive letter | | #define VALIDATEUNC_CONNECT 0x0001 // connect a drive letter |
|
| | #define VALIDATEUNC_NOUI 0x0002 // don't bring up UI |
#define VALIDATEUNC_PRINT 0x0004 // validate as print share inste
ad of disk share | | #define VALIDATEUNC_PRINT 0x0004 // validate as print share inste
ad of disk share |
|
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #define VALIDATEUNC_PERSIST 0x0008 // the connection should be made |
| | persistent |
| | #define VALIDATEUNC_VALID 0x000F // valid flags |
| | #else |
#define VALIDATEUNC_VALID 0x0007 // valid flags | | #define VALIDATEUNC_VALID 0x0007 // valid flags |
|
| | #endif |
| | |
|
SHSTDAPI_(BOOL) SHValidateUNC(HWND hwndOwner, LPWSTR pszFile, UINT fConnect); | | SHSTDAPI_(BOOL) SHValidateUNC(HWND hwndOwner, __inout LPWSTR pszFile, UINT fConn
ect); |
#define OPENPROPS_NONE 0x0000 | | #define OPENPROPS_NONE 0x0000 |
#define OPENPROPS_INHIBITPIF 0x8000 | | #define OPENPROPS_INHIBITPIF 0x8000 |
#define GETPROPS_NONE 0x0000 | | #define GETPROPS_NONE 0x0000 |
#define SETPROPS_NONE 0x0000 | | #define SETPROPS_NONE 0x0000 |
#define CLOSEPROPS_NONE 0x0000 | | #define CLOSEPROPS_NONE 0x0000 |
#define CLOSEPROPS_DISCARD 0x0001 | | #define CLOSEPROPS_DISCARD 0x0001 |
| | |
#define PIFNAMESIZE 30 | | #define PIFNAMESIZE 30 |
#define PIFSTARTLOCSIZE 63 | | #define PIFSTARTLOCSIZE 63 |
#define PIFDEFPATHSIZE 64 | | #define PIFDEFPATHSIZE 64 |
| | |
skipping to change at line 4378 | | skipping to change at line 3512 |
WORD wIconIndex; // index of icon within file | | WORD wIconIndex; // index of icon within file |
DWORD dwEnhModeFlags; // reserved enh-mode flags | | DWORD dwEnhModeFlags; // reserved enh-mode flags |
DWORD dwRealModeFlags; // real-mode flags (see RMOPT_*) | | DWORD dwRealModeFlags; // real-mode flags (see RMOPT_*) |
CHAR achOtherFile[PIFDEFFILESIZE]; // name of "other" file in directory | | CHAR achOtherFile[PIFDEFFILESIZE]; // name of "other" file in directory |
CHAR achPIFFile[PIFMAXFILEPATH]; // name of PIF file | | CHAR achPIFFile[PIFMAXFILEPATH]; // name of PIF file |
} PROPPRG; | | } PROPPRG; |
typedef UNALIGNED PROPPRG *PPROPPRG; | | typedef UNALIGNED PROPPRG *PPROPPRG; |
typedef UNALIGNED PROPPRG FAR *LPPROPPRG; | | typedef UNALIGNED PROPPRG FAR *LPPROPPRG; |
typedef const UNALIGNED PROPPRG FAR *LPCPROPPRG; | | typedef const UNALIGNED PROPPRG FAR *LPCPROPPRG; |
| | |
|
SHSTDAPI_(HANDLE) PifMgr_OpenProperties(LPCWSTR pszApp, LPCWSTR pszPIF, UINT hIn | | SHSTDAPI_(HANDLE) PifMgr_OpenProperties(LPCWSTR pszApp, __in_opt LPCWSTR pszPIF, |
f, UINT flOpt); | | UINT hInf, UINT flOpt); |
SHSTDAPI_(int) PifMgr_GetProperties(HANDLE hProps, LPCSTR pszGroup, void *lpP | | SHSTDAPI_(int) PifMgr_GetProperties(__in_opt HANDLE hProps, __in_opt LPCSTR p |
rops, int cbProps, UINT flOpt); | | szGroup, __out_bcount_opt(cbProps) void *lpProps, int cbProps, UINT flOpt); |
SHSTDAPI_(int) PifMgr_SetProperties(HANDLE hProps, LPCSTR pszGroup, const VOI | | SHSTDAPI_(int) PifMgr_SetProperties(__in_opt HANDLE hProps, __in_opt LPCSTR p |
D *lpProps, int cbProps, UINT flOpt); | | szGroup, __in_bcount(cbProps) const void *lpProps, int cbProps, UINT flOpt); |
SHSTDAPI_(HANDLE) PifMgr_CloseProperties(HANDLE hProps, UINT flOpt); | | SHSTDAPI_(HANDLE) PifMgr_CloseProperties(__in_opt HANDLE hProps, UINT flOpt); |
| | |
SHSTDAPI_(void) SHSetInstanceExplorer(IUnknown *punk); | | SHSTDAPI_(void) SHSetInstanceExplorer(IUnknown *punk); |
SHSTDAPI_(BOOL) IsUserAnAdmin(void); | | SHSTDAPI_(BOOL) IsUserAnAdmin(void); |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IInitializeObject | | #define INTERFACE IInitializeObject |
| | |
|
DECLARE_INTERFACE_(IInitializeObject, IUnknown) | | DECLARE_INTERFACE_IID_(IInitializeObject, IUnknown, "4622AD16-FF23-11d0-8D34-00A
0C90F2719") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IInitializeObject methods | | // *** IInitializeObject methods |
STDMETHOD(Initialize)(THIS) PURE; | | STDMETHOD(Initialize)(THIS) PURE; |
}; | | }; |
| | |
enum | | enum |
{ | | { |
BMICON_LARGE = 0, | | BMICON_LARGE = 0, |
BMICON_SMALL | | BMICON_SMALL |
}; | | }; |
| | |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IBanneredBar | | #define INTERFACE IBanneredBar |
| | |
|
DECLARE_INTERFACE_(IBanneredBar, IUnknown) | | DECLARE_INTERFACE_IID_(IBanneredBar, IUnknown, "596A9A94-013E-11d1-8D34-00A0C90F
2719") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IBanneredBar methods *** | | // *** IBanneredBar methods *** |
STDMETHOD(SetIconSize)(THIS_ DWORD iIcon) PURE; | | STDMETHOD(SetIconSize)(THIS_ DWORD iIcon) PURE; |
STDMETHOD(GetIconSize)(THIS_ DWORD* piIcon) PURE; | | STDMETHOD(GetIconSize)(THIS_ DWORD* piIcon) PURE; |
STDMETHOD(SetBitmap)(THIS_ HBITMAP hBitmap) PURE; | | STDMETHOD(SetBitmap)(THIS_ HBITMAP hBitmap) PURE; |
STDMETHOD(GetBitmap)(THIS_ HBITMAP* phBitmap) PURE; | | STDMETHOD(GetBitmap)(THIS_ HBITMAP* phBitmap) PURE; |
| | |
}; | | }; |
| | |
SHSTDAPI_(LRESULT) SHShellFolderView_Message(HWND hwndMain, UINT uMsg, LPARAM lP
aram); | | SHSTDAPI_(LRESULT) SHShellFolderView_Message(HWND hwndMain, UINT uMsg, LPARAM lP
aram); |
| | |
// | | // |
|
// Callback interface for the IShellFolderView | | // Callback interface for the IShellView object returned from SHCreateShellFolde |
| | rView. |
| | |
// | | // |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE IShellFolderViewCB | | #define INTERFACE IShellFolderViewCB |
| | |
|
DECLARE_INTERFACE_(IShellFolderViewCB, IUnknown) | | DECLARE_INTERFACE_IID_(IShellFolderViewCB, IUnknown, "2047E320-F2A9-11CE-AE65-08
002B2E1262") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
// *** IShellFolderViewCB methods *** | | // *** IShellFolderViewCB methods *** |
STDMETHOD(MessageSFVCB)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE; | | STDMETHOD(MessageSFVCB)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE; |
}; | | }; |
| | |
#include <pshpack8.h> | | #include <pshpack8.h> |
| | |
|
#undef UNSIZED_ARRAY2 | | |
#undef EMPTY_SIZE2 | | |
#define UNSIZED_ARRAY2 | | |
#define EMPTY_SIZE2 UNSIZED_ARRAY2 | | |
| | |
#define QCMINFO_PLACE_BEFORE 0 | | #define QCMINFO_PLACE_BEFORE 0 |
#define QCMINFO_PLACE_AFTER 1 | | #define QCMINFO_PLACE_AFTER 1 |
typedef struct _QCMINFO_IDMAP_PLACEMENT | | typedef struct _QCMINFO_IDMAP_PLACEMENT |
{ | | { |
UINT id; | | UINT id; |
UINT fFlags; | | UINT fFlags; |
} QCMINFO_IDMAP_PLACEMENT; | | } QCMINFO_IDMAP_PLACEMENT; |
| | |
typedef struct _QCMINFO_IDMAP | | typedef struct _QCMINFO_IDMAP |
{ | | { |
| | |
skipping to change at line 4488 | | skipping to change at line 3618 |
#define TBIF_DEFAULT 0x00000000 | | #define TBIF_DEFAULT 0x00000000 |
#define TBIF_INTERNETBAR 0x00010000 | | #define TBIF_INTERNETBAR 0x00010000 |
#define TBIF_STANDARDTOOLBAR 0x00020000 | | #define TBIF_STANDARDTOOLBAR 0x00020000 |
#define TBIF_NOTOOLBAR 0x00030000 | | #define TBIF_NOTOOLBAR 0x00030000 |
| | |
typedef struct _TBINFO | | typedef struct _TBINFO |
{ | | { |
UINT cbuttons; // out | | UINT cbuttons; // out |
UINT uFlags; // out (one of TBIF_ flags) | | UINT uFlags; // out (one of TBIF_ flags) |
} TBINFO; | | } TBINFO; |
|
| | typedef TBINFO * LPTBINFO; |
| | |
typedef struct _DETAILSINFO | | typedef struct _DETAILSINFO |
{ | | { |
|
LPCITEMIDLIST pidl; | | PCUITEMID_CHILD pidl; |
int fmt; | | int fmt; |
int cxChar; | | int cxChar; |
STRRET str; | | STRRET str; |
int iImage; | | int iImage; |
} DETAILSINFO; | | } DETAILSINFO; |
|
| | typedef DETAILSINFO *PDETAILSINFO; |
| | |
typedef struct _SFVM_PROPPAGE_DATA | | typedef struct _SFVM_PROPPAGE_DATA |
{ | | { |
DWORD dwReserved; | | DWORD dwReserved; |
LPFNADDPROPSHEETPAGE pfn; | | LPFNADDPROPSHEETPAGE pfn; |
LPARAM lParam; | | LPARAM lParam; |
} SFVM_PROPPAGE_DATA; | | } SFVM_PROPPAGE_DATA; |
| | |
typedef struct _SFVM_HELPTOPIC_DATA | | typedef struct _SFVM_HELPTOPIC_DATA |
{ | | { |
| | |
skipping to change at line 4535 | | skipping to change at line 3667 |
#define SFVM_DEFVIEWMODE 27 // - FOLDERVIEWMODE* | | #define SFVM_DEFVIEWMODE 27 // - FOLDERVIEWMODE* |
#define SFVM_UNMERGEMENU 28 // - hmenu | | #define SFVM_UNMERGEMENU 28 // - hmenu |
#define SFVM_UPDATESTATUSBAR 31 // fInitialize - | | #define SFVM_UPDATESTATUSBAR 31 // fInitialize - |
#define SFVM_BACKGROUNDENUM 32 // - - | | #define SFVM_BACKGROUNDENUM 32 // - - |
#define SFVM_DIDDRAGDROP 36 // dwEffect IDataObject * | | #define SFVM_DIDDRAGDROP 36 // dwEffect IDataObject * |
#define SFVM_SETISFV 39 // - IShellFolderView* | | #define SFVM_SETISFV 39 // - IShellFolderView* |
#define SFVM_THISIDLIST 41 // - LPITMIDLIST* | | #define SFVM_THISIDLIST 41 // - LPITMIDLIST* |
#define SFVM_ADDPROPERTYPAGES 47 // - SFVM_PROPPAGE_DATA
* | | #define SFVM_ADDPROPERTYPAGES 47 // - SFVM_PROPPAGE_DATA
* |
#define SFVM_BACKGROUNDENUMDONE 48 // - - | | #define SFVM_BACKGROUNDENUMDONE 48 // - - |
#define SFVM_GETNOTIFY 49 // LPITEMIDLIST* LONG* | | #define SFVM_GETNOTIFY 49 // LPITEMIDLIST* LONG* |
|
| | // Note: SFVM_QUERYSTANDARDVIEWS NOT USED: must use SFVM_GETVIEWDATA instead |
#define SFVM_GETSORTDEFAULTS 53 // iDirection iParamSort | | #define SFVM_GETSORTDEFAULTS 53 // iDirection iParamSort |
#define SFVM_SIZE 57 // - - | | #define SFVM_SIZE 57 // - - |
#define SFVM_GETZONE 58 // - DWORD* | | #define SFVM_GETZONE 58 // - DWORD* |
#define SFVM_GETPANE 59 // Pane ID DWORD* | | #define SFVM_GETPANE 59 // Pane ID DWORD* |
#define SFVM_GETHELPTOPIC 63 // - SFVM_HELPTOPIC_DAT
A * | | #define SFVM_GETHELPTOPIC 63 // - SFVM_HELPTOPIC_DAT
A * |
#define SFVM_GETANIMATION 68 // HINSTANCE * WCHAR * | | #define SFVM_GETANIMATION 68 // HINSTANCE * WCHAR * |
|
| | |
| | // IShellFolderView |
| | // |
| | // Deprecated: use IFolderView and IFolderView2 instead. |
| | // |
| | // IShellFolderView is supported by the IShellView object returned from SHCreate |
| | ShellFolderView. |
| | // |
| | // Warnings: |
| | // - Some methods on this interface do not follow standard COM rules. |
| | // - Some methods can be used to configure the IShellView or cause it to behave |
| | incorrectly. |
| | // - Few of these methods have parameter or range validation, so callers can ca |
| | use the IShellView to fault. |
| | |
| | typedef struct _ITEMSPACING |
| | { |
| | int cxSmall; |
| | int cySmall; |
| | int cxLarge; |
| | int cyLarge; |
| | } ITEMSPACING; |
| | |
| | // defines for IShellFolderView::SetObjectCount |
| | #define SFVSOC_INVALIDATE_ALL 0x00000001 // Assumed to reset only what is nec |
| | cessary... |
| | #define SFVSOC_NOSCROLL LVSICF_NOSCROLL |
| | |
| | // defines for IShellFolderView::SelectItems() |
| | #define SFVS_SELECT_NONE 0x0 // unselect all |
| | #define SFVS_SELECT_ALLITEMS 0x1 // select all |
| | #define SFVS_SELECT_INVERT 0x2 // Inver the selection |
| | |
| | #undef INTERFACE |
| | #define INTERFACE IShellFolderView |
| | |
| | DECLARE_INTERFACE_IID_(IShellFolderView, IUnknown, "37A378C0-F82D-11CE-AE65-0800 |
| | 2B2E1262") |
| | { |
| | // *** IUnknown methods *** |
| | STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; |
| | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
| | STDMETHOD_(ULONG,Release) (THIS) PURE; |
| | |
| | // *** IShellFolderView methods *** |
| | STDMETHOD(Rearrange) (THIS_ LPARAM lParamSort) PURE; // use IFolderView2::Se |
| | tSortColumns |
| | STDMETHOD(GetArrangeParam) (THIS_ LPARAM *plParamSort) PURE; // use IFolderV |
| | iew2::GetSortColumns |
| | STDMETHOD(ArrangeGrid) (THIS) PURE; // select Arrange by Grid |
| | STDMETHOD(AutoArrange) (THIS) PURE; // select Auto Arrange |
| | STDMETHOD(GetAutoArrange) (THIS) PURE; // use IFolderView::GetAutoArrange |
| | STDMETHOD(AddObject) (THIS_ PUITEMID_CHILD pidl, UINT *puItem) PURE; // item |
| | s added here may disappear (the data source is the final arbiter of which items |
| | are available to the view) |
| | STDMETHOD(GetObject) (THIS_ PITEMID_CHILD *ppidl, UINT uItem) PURE; // use I |
| | FolderView::Item |
| | STDMETHOD(RemoveObject) (THIS_ PUITEMID_CHILD pidl, UINT *puItem) PURE; // i |
| | tems removed here may reappear (the data source is the final arbiter of which it |
| | ems are available to the view) |
| | STDMETHOD(GetObjectCount) (THIS_ UINT *puCount) PURE; // use IFolderView::It |
| | emCount |
| | STDMETHOD(SetObjectCount) (THIS_ UINT uCount, UINT dwFlags) PURE; // not imp |
| | lemented on Vista. Sends LVM_SETITEMCOUNT with WPARAM=uCount and LPARAM=dwFlags |
| | to listview on XP. |
| | STDMETHOD(UpdateObject) (THIS_ PUITEMID_CHILD pidlOld, PUITEMID_CHILD pidlNe |
| | w, UINT *puItem) PURE; // swaps ITEMID_CHILDs, returning new index. Changes may |
| | be discarded (the data source is the final arbiter of which items are available |
| | to the view) |
| | STDMETHOD(RefreshObject) (THIS_ PUITEMID_CHILD pidl, UINT *puItem) PURE; // |
| | tickles the listview to re-draw the item |
| | STDMETHOD(SetRedraw) (THIS_ BOOL bRedraw) PURE; // sends WM_SETREDRAW to the |
| | listview |
| | STDMETHOD(GetSelectedCount) (THIS_ UINT *puSelected) PURE; // use IFolderVie |
| | w2::GetSelection |
| | // NOTE: GetSelectedObjects hands out const pointers to internal ITEMID_CHIL |
| | D structures. The caller is expected to act on them immediately (and not cache t |
| | hem). LocalFree the array, but not the items it contains. |
| | STDMETHOD(GetSelectedObjects) (THIS_ PCUITEMID_CHILD **pppidl, UINT *puItems |
| | ) PURE; // use IFolderView2::GetSelection. |
| | STDMETHOD(IsDropOnSource) (THIS_ IDropTarget *pDropTarget) PURE; // use IFol |
| | derView2::IsMoveInSameFolder |
| | STDMETHOD(GetDragPoint) (THIS_ POINT *ppt) PURE; // returns point correspond |
| | ing to drag-and-drop operation |
| | STDMETHOD(GetDropPoint) (THIS_ POINT *ppt) PURE; // returns point correspond |
| | ing to drag-and-drop operation |
| | STDMETHOD(MoveIcons) (THIS_ IDataObject *pDataObject) PURE; // not implement |
| | ed |
| | STDMETHOD(SetItemPos) (THIS_ PCUITEMID_CHILD pidl, POINT *ppt) PURE; // use |
| | IFolderView::SelectAndPositionItems |
| | STDMETHOD(IsBkDropTarget) (THIS_ IDropTarget *pDropTarget) PURE; // returns |
| | S_OK if drag-and-drop is on the background, S_FALSE otherwise |
| | STDMETHOD(SetClipboard) (THIS_ BOOL bMove) PURE; // if bMove is TRUE, this a |
| | ttempts to cut (edit.cut, ctrl-x) the current selection. bMove of FALSE is not |
| | supported. |
| | STDMETHOD(SetPoints) (THIS_ IDataObject *pDataObject) PURE; // copies points |
| | of current selection in to data object. Call is not needed if drag operation w |
| | as originated by the IShellView. |
| | STDMETHOD(GetItemSpacing) (THIS_ ITEMSPACING *pSpacing) PURE; // use IFolder |
| | View::GetSpacing instead. GetItemSpacing returns the spacing for small and larg |
| | e view modes only, returning S_OK if the current view mode is is positionable, S |
| | _FALSE otherwise. |
| | STDMETHOD(SetCallback) (THIS_ IShellFolderViewCB* pNewCB, IShellFolderViewCB |
| | ** ppOldCB) PURE; // replace the IShellFolderViewCB that the IShellView uses |
| | STDMETHOD(Select) ( THIS_ UINT dwFlags ) PURE; // SFVS_ select flags: selec |
| | t all, select none, invert selection |
| | STDMETHOD(QuerySupport) (THIS_ UINT * pdwSupport ) PURE; // does nothing, re |
| | turns S_OK. |
| | STDMETHOD(SetAutomationObject)(THIS_ IDispatch* pdisp) PURE; // replaces the |
| | IShellView's internal automation object. |
| | } ; |
| | |
// SHCreateShellFolderView struct | | // SHCreateShellFolderView struct |
typedef struct _SFV_CREATE | | typedef struct _SFV_CREATE |
{ | | { |
|
UINT cbSize; | | UINT cbSize; // must be sizeof(SFV_CREATE) |
IShellFolder* pshf; | | IShellFolder* pshf; // IShellFolder the IShellView will use |
IShellView* psvOuter; | | IShellView* psvOuter; // optional: IShellView to pass to psfvcb |
IShellFolderViewCB* psfvcb; // No callback if NULL | | IShellFolderViewCB* psfvcb; // No callback if NULL |
} SFV_CREATE; | | } SFV_CREATE; |
| | |
|
SHSTDAPI SHCreateShellFolderView(const SFV_CREATE* pcsfv, IShellView **ppsv); | | SHSTDAPI SHCreateShellFolderView(__in const SFV_CREATE* pcsfv, __deref_out IShel
lView ** ppsv); |
typedef HRESULT (CALLBACK * LPFNDFMCALLBACK)(IShellFolder *psf, HWND hwnd, | | typedef HRESULT (CALLBACK * LPFNDFMCALLBACK)(IShellFolder *psf, HWND hwnd, |
IDataObject *pdtobj, UINT uMsg, WPA
RAM wParam, LPARAM lParam); | | IDataObject *pdtobj, UINT uMsg, WPA
RAM wParam, LPARAM lParam); |
| | |
|
SHSTDAPI CDefFolderMenu_Create2(LPCITEMIDLIST pidlFolder, HWND hwnd, | | SHSTDAPI CDefFolderMenu_Create2(__in PCIDLIST_ABSOLUTE pidlFolder, __in_opt HWND |
UINT cidl, LPCITEMIDLIST *apidl, | | hwnd, |
IShellFolder *psf, LPFNDFMCALLBACK lpfn, | | __in_opt UINT cidl, __in_ecount_opt(cidl) PCUITE |
UINT nKeys, const HKEY *ahkeyClsKeys, | | MID_CHILD_ARRAY apidl, |
IContextMenu **ppcm); | | __in IShellFolder *psf, __in LPFNDFMCALLBACK pfn |
| | , |
| | __in UINT nKeys, __in_ecount(nKeys) const HKEY * |
| | ahkeys, |
| | __deref_out IContextMenu **ppcm); |
| | typedef struct { |
| | HWND hwnd; |
| | IContextMenuCB *pcmcb; // optional: callback object |
| | PCIDLIST_ABSOLUTE pidlFolder; // optional: IDList to folder of the items, |
| | computed from psf if NULL |
| | IShellFolder *psf; // folder of the items |
| | UINT cidl; // # of items in apidl |
| | PCUITEMID_CHILD_ARRAY apidl; // items operating on, used to get IDataObje |
| | ct and IAssociationArray |
| | IUnknown *punkAssociationInfo; // optional: IQueryAssociations, specifies w |
| | here to load extensions from, computed from apidl if NULL |
| | UINT cKeys; // # of items in aKeys, may be zero |
| | const HKEY *aKeys; // optional: specifies where to load extensi |
| | ons from |
| | } DEFCONTEXTMENU; |
| | |
|
SHSTDAPI_(BOOL) SHOpenPropSheetA(LPCSTR pszCaption, HKEY ahkeys[], UINT cikeys, | | // creates object that implements IContextMenu/IContextMenu2/IContextMenu3, typi |
const CLSID * pclsidDefault, IDataObject *pdtob | | cally |
j, | | // used in the implemetnation of ::GetUIObjectOf() |
IShellBrowser *psb, LPCSTR pStartPage); | | |
SHSTDAPI_(BOOL) SHOpenPropSheetW(LPCWSTR pszCaption, HKEY ahkeys[], UINT cikeys, | | SHSTDAPI SHCreateDefaultContextMenu(__in const DEFCONTEXTMENU *pdcm, __in REFIID |
const CLSID * pclsidDefault, IDataObject *pdtob | | riid, __deref_out void **ppv); |
j, | | |
IShellBrowser *psb, LPCWSTR pStartPage); | | SHSTDAPI_(BOOL) SHOpenPropSheetA(__in_opt LPCSTR pszCaption, __in_ecount_opt(cik |
| | eys) HKEY ahkeys[], UINT cikeys, |
| | __in_opt const CLSID * pclsidDefault, __in IDat |
| | aObject *pdtobj, |
| | __in_opt IShellBrowser *psb, __in_opt LPCSTR pS |
| | tartPage); |
| | SHSTDAPI_(BOOL) SHOpenPropSheetW(__in_opt LPCWSTR pszCaption, __in_ecount_opt(ci |
| | keys) HKEY ahkeys[], UINT cikeys, |
| | __in_opt const CLSID * pclsidDefault, __in IDat |
| | aObject *pdtobj, |
| | __in_opt IShellBrowser *psb, __in_opt LPCWSTR p |
| | StartPage); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHOpenPropSheet SHOpenPropSheetW | | #define SHOpenPropSheet SHOpenPropSheetW |
#else | | #else |
#define SHOpenPropSheet SHOpenPropSheetA | | #define SHOpenPropSheet SHOpenPropSheetA |
#endif // !UNICODE | | #endif // !UNICODE |
|
| | |
| | // structure for lParam of DFM_INFOKECOMMANDEX |
| | typedef struct |
| | { |
| | DWORD cbSize; |
| | DWORD fMask; // CMIC_MASK_ values for the invoke |
| | LPARAM lParam; // same as lParam of DFM_INFOKECOMMAND |
| | UINT idCmdFirst; |
| | UINT idDefMax; |
| | LPCMINVOKECOMMANDINFO pici; // the whole thing so you can re-invoke on a chi |
| | ld |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | IUnknown *punkSite; // site pointer for context menu handler |
| | #endif |
| | } DFMICS, *PDFMICS; |
| | |
| | // Note on context menus ranges: |
| | // Standard Items // DFM_MERGECONTEXTMENU, context menu extensions, DFM_MERGECO |
| | NTEXTMENU_TOP |
| | // Separator |
| | // View Items // context menu extensions can get here |
| | // Separator |
| | // (defcm S_FALSE "default" items, if applicable) |
| | // Separator |
| | // Folder Items // context menu extensions can get here |
| | // Separator |
| | // Bottom Items // DFM_MERGECONTEXTMENU_BOTTOM |
| | |
// uMsg wParam lParam | | // uMsg wParam lParam |
#define DFM_MERGECONTEXTMENU 1 // uFlags LPQCMINFO | | #define DFM_MERGECONTEXTMENU 1 // uFlags LPQCMINFO |
#define DFM_INVOKECOMMAND 2 // idCmd pszArgs | | #define DFM_INVOKECOMMAND 2 // idCmd pszArgs |
|
| | #define DFM_GETHELPTEXT 5 // idCmd,cchMax pszText -Ansi |
| | #define DFM_WM_MEASUREITEM 6 // ---from the message--- |
| | #define DFM_WM_DRAWITEM 7 // ---from the message--- |
| | #define DFM_WM_INITMENUPOPUP 8 // ---from the message--- |
| | #define DFM_VALIDATECMD 9 // idCmd 0 |
| | #define DFM_MERGECONTEXTMENU_TOP 10 // uFlags LPQCMINFO |
| | #define DFM_GETHELPTEXTW 11 // idCmd,cchMax pszText -Unicode |
| | #define DFM_INVOKECOMMANDEX 12 // idCmd PDFMICS |
| | #define DFM_MAPCOMMANDNAME 13 // idCmd * pszCommandName |
#define DFM_GETDEFSTATICID 14 // idCmd * 0 | | #define DFM_GETDEFSTATICID 14 // idCmd * 0 |
|
| | #define DFM_GETVERBW 15 // idCmd,cchMax pszText -Unicode |
| | #define DFM_GETVERBA 16 // idCmd,cchMax pszText -Ansi |
| | #define DFM_MERGECONTEXTMENU_BOTTOM 17 // uFlags LPQCMINFO |
| | |
// Commands from DFM_INVOKECOMMAND when strings are passed in | | // Commands from DFM_INVOKECOMMAND when strings are passed in |
|
| | #define DFM_CMD_DELETE ((UINT)-1) |
| | #define DFM_CMD_MOVE ((UINT)-2) |
| | #define DFM_CMD_COPY ((UINT)-3) |
| | #define DFM_CMD_LINK ((UINT)-4) |
#define DFM_CMD_PROPERTIES ((UINT)-5) | | #define DFM_CMD_PROPERTIES ((UINT)-5) |
|
typedef TBINFO * LPTBINFO; | | #define DFM_CMD_NEWFOLDER ((UINT)-6) |
| | #define DFM_CMD_PASTE ((UINT)-7) |
typedef DETAILSINFO *PDETAILSINFO; | | #define DFM_CMD_VIEWLIST ((UINT)-8) |
| | #define DFM_CMD_VIEWDETAILS ((UINT)-9) |
| | #define DFM_CMD_PASTELINK ((UINT)-10) |
| | #define DFM_CMD_PASTESPECIAL ((UINT)-11) |
| | #define DFM_CMD_MODALPROP ((UINT)-12) |
| | #define DFM_CMD_RENAME ((UINT)-13) |
| | |
typedef HRESULT (CALLBACK * LPFNVIEWCALLBACK)(IShellView *psvOuter, | | typedef HRESULT (CALLBACK * LPFNVIEWCALLBACK)(IShellView *psvOuter, |
IShellFolder *psf, | | IShellFolder *psf, |
HWND hwndMain, | | HWND hwndMain, |
UINT uMsg, | | UINT uMsg, |
WPARAM wParam, | | WPARAM wParam, |
LPARAM lParam); | | LPARAM lParam); |
| | |
// SHCreateShellFolderViewEx struct | | // SHCreateShellFolderViewEx struct |
typedef struct _CSFV | | typedef struct _CSFV |
{ | | { |
|
UINT cbSize; | | UINT cbSize; |
IShellFolder * pshf; | | IShellFolder * pshf; |
IShellView * psvOuter; | | IShellView * psvOuter; |
LPCITEMIDLIST pidl; | | PCIDLIST_ABSOLUTE pidl; |
LONG lEvents; | | LONG lEvents; |
LPFNVIEWCALLBACK pfnCallback; // No callback if NULL | | LPFNVIEWCALLBACK pfnCallback; // No callback if NULL |
FOLDERVIEWMODE fvm; | | FOLDERVIEWMODE fvm; |
} CSFV, * LPCSFV; | | } CSFV, * LPCSFV; |
| | |
// Tell the FolderView to rearrange. The lParam will be passed to | | // Tell the FolderView to rearrange. The lParam will be passed to |
// IShellFolder::CompareIDs | | // IShellFolder::CompareIDs |
#define SFVM_REARRANGE 0x00000001 | | #define SFVM_REARRANGE 0x00000001 |
#define ShellFolderView_ReArrange(_hwnd, _lparam) \ | | #define ShellFolderView_ReArrange(_hwnd, _lparam) \ |
(BOOL)SHShellFolderView_Message(_hwnd, SFVM_REARRANGE, _lparam) | | (BOOL)SHShellFolderView_Message(_hwnd, SFVM_REARRANGE, _lparam) |
// Add an OBJECT into the view | | // Add an OBJECT into the view |
#define SFVM_ADDOBJECT 0x00000003 | | #define SFVM_ADDOBJECT 0x00000003 |
#define ShellFolderView_AddObject(_hwnd, _pidl) \ | | #define ShellFolderView_AddObject(_hwnd, _pidl) \ |
|
(LPARAM)SHShellFolderView_Message(_hwnd, SFVM_ADDOBJECT, (LPARAM)_pidl) | | (LPARAM)SHShellFolderView_Message(_hwnd, SFVM_ADDOBJECT, (LPARAM)(_pidl)
) |
// Remove an OBJECT into the view | | // Remove an OBJECT into the view |
#define SFVM_REMOVEOBJECT 0x00000006 | | #define SFVM_REMOVEOBJECT 0x00000006 |
#define ShellFolderView_RemoveObject(_hwnd, _pidl) \ | | #define ShellFolderView_RemoveObject(_hwnd, _pidl) \ |
|
(LPARAM)SHShellFolderView_Message(_hwnd, SFVM_REMOVEOBJECT, (LPARAM)_pid
l) | | (LPARAM)SHShellFolderView_Message(_hwnd, SFVM_REMOVEOBJECT, (LPARAM)(_pi
dl)) |
| | |
// updates an object by passing in pointer to two PIDLS, the first | | // updates an object by passing in pointer to two PIDLS, the first |
// is the old pidl, the second one is the one with update information. | | // is the old pidl, the second one is the one with update information. |
// | | // |
// _ppidl[1] must be a *copy* of a pidl, as control over the lifetime | | // _ppidl[1] must be a *copy* of a pidl, as control over the lifetime |
// of the pidl belongs to the view after successful completion of | | // of the pidl belongs to the view after successful completion of |
// this call. (Unsuccessful completion (a -1 return) implies failure | | // this call. (Unsuccessful completion (a -1 return) implies failure |
// and the caller must free the memory.) Win95 waits a while before | | // and the caller must free the memory.) Win95 waits a while before |
// freeing the pidl, IE4 frees the pidl immediately. | | // freeing the pidl, IE4 frees the pidl immediately. |
// IShellFolderView::UpdateObject does not suffer from this problem. | | // IShellFolderView::UpdateObject does not suffer from this problem. |
// | | // |
#define SFVM_UPDATEOBJECT 0x00000007 | | #define SFVM_UPDATEOBJECT 0x00000007 |
#define ShellFolderView_UpdateObject(_hwnd, _ppidl) \ | | #define ShellFolderView_UpdateObject(_hwnd, _ppidl) \ |
|
(LPARAM)SHShellFolderView_Message(_hwnd, SFVM_UPDATEOBJECT, (LPARAM)_ppi
dl) | | (LPARAM)SHShellFolderView_Message(_hwnd, SFVM_UPDATEOBJECT, (LPARAM)(_pp
idl)) |
| | |
// Returns an array of the selected IDS to the caller. | | // Returns an array of the selected IDS to the caller. |
// lparam is a pointer to receive the idlists into | | // lparam is a pointer to receive the idlists into |
// return value is the count of items in the array. | | // return value is the count of items in the array. |
#define SFVM_GETSELECTEDOBJECTS 0x00000009 | | #define SFVM_GETSELECTEDOBJECTS 0x00000009 |
#define ShellFolderView_GetSelectedObjects(_hwnd, ppidl) \ | | #define ShellFolderView_GetSelectedObjects(_hwnd, ppidl) \ |
|
(LPARAM)SHShellFolderView_Message(_hwnd, SFVM_GETSELECTEDOBJECTS, (LPARA
M)ppidl) | | (LPARAM)SHShellFolderView_Message(_hwnd, SFVM_GETSELECTEDOBJECTS, (LPARA
M)(ppidl)) |
typedef struct _SFV_SETITEMPOS | | typedef struct _SFV_SETITEMPOS |
{ | | { |
|
LPCITEMIDLIST pidl; | | PCUITEMID_CHILD pidl; |
POINT pt; | | POINT pt; |
|
} SFV_SETITEMPOS, *LPSFV_SETITEMPOS; | | } SFV_SETITEMPOS; |
| | typedef SFV_SETITEMPOS *LPSFV_SETITEMPOS; |
| | typedef const SFV_SETITEMPOS *PCSFV_SETITEMPOS; |
| | |
// Sets the position of an item in the viewer | | // Sets the position of an item in the viewer |
// lparam is a pointer to a SVF_SETITEMPOS | | // lparam is a pointer to a SVF_SETITEMPOS |
// return value is unused | | // return value is unused |
#define SFVM_SETITEMPOS 0x0000000e | | #define SFVM_SETITEMPOS 0x0000000e |
#define ShellFolderView_SetItemPos(_hwnd, _pidl, _x, _y) \ | | #define ShellFolderView_SetItemPos(_hwnd, _pidl, _x, _y) \ |
{ SFV_SETITEMPOS _sip = {_pidl, {_x, _y}}; \ | | { SFV_SETITEMPOS _sip = {_pidl, {_x, _y}}; \ |
SHShellFolderView_Message(_hwnd, SFVM_SETITEMPOS, (LPARAM)(LPSFV_SETITEM
POS)&_sip);} | | SHShellFolderView_Message(_hwnd, SFVM_SETITEMPOS, (LPARAM)(LPSFV_SETITEM
POS)&_sip);} |
// Notifies a ShellView when one of its objects get put on the clipboard | | // Notifies a ShellView when one of its objects get put on the clipboard |
// as a result of a menu command. | | // as a result of a menu command. |
// | | // |
// | | // |
// lparam is the dwEffect (DROPEFFECT_MOVE, DROPEFFECT_COPY) | | // lparam is the dwEffect (DROPEFFECT_MOVE, DROPEFFECT_COPY) |
// return value is void. | | // return value is void. |
#define SFVM_SETCLIPBOARD 0x00000010 | | #define SFVM_SETCLIPBOARD 0x00000010 |
#define ShellFolderView_SetClipboard(_hwnd, _dwEffect) \ | | #define ShellFolderView_SetClipboard(_hwnd, _dwEffect) \ |
(void)SHShellFolderView_Message(_hwnd, SFVM_SETCLIPBOARD, (LPARAM)(DWORD
)(_dwEffect)) | | (void)SHShellFolderView_Message(_hwnd, SFVM_SETCLIPBOARD, (LPARAM)(DWORD
)(_dwEffect)) |
#define SFVM_SETPOINTS 0x00000017 | | #define SFVM_SETPOINTS 0x00000017 |
#define ShellFolderView_SetPoints(_hwnd, _pdtobj) \ | | #define ShellFolderView_SetPoints(_hwnd, _pdtobj) \ |
|
(void)SHShellFolderView_Message(_hwnd, SFVM_SETPOINTS, (LPARAM)_pdtobj) | | (void)SHShellFolderView_Message(_hwnd, SFVM_SETPOINTS, (LPARAM)(_pdtobj)
) |
#include <poppack.h> /* Return to byte packing */ | | #include <poppack.h> /* Return to byte packing */ |
SHSTDAPI_(IContextMenu *) SHFind_InitMenuPopup(HMENU hmenu, HWND hwndOwner, UINT
idCmdFirst, UINT idCmdLast); | | SHSTDAPI_(IContextMenu *) SHFind_InitMenuPopup(HMENU hmenu, HWND hwndOwner, UINT
idCmdFirst, UINT idCmdLast); |
|
SHSTDAPI SHCreateShellFolderViewEx(LPCSFV pcsfv, IShellView ** ppsv); | | SHSTDAPI SHCreateShellFolderViewEx(LPCSFV pcsfv, __out IShellView ** ppsv); |
| | |
|
// | | // Legacy PROPIDs for Internet Shortcuts (FMTID_Intshcut) to be used with |
// PROPIDs for Internet Shortcuts (FMTID_Intshcut) to be used with | | // IPropertySetStorage/IPropertyStorage. |
// IPropertySetStorage/IPropertyStorage | | |
// | | // |
// The known property ids and their variant types are: | | // The known property ids and their variant types are: |
// PID_IS_URL [VT_LPWSTR] URL | | // PID_IS_URL [VT_LPWSTR] URL |
// PID_IS_NAME [VT_LPWSTR] Name of the internet shortcut | | // PID_IS_NAME [VT_LPWSTR] Name of the internet shortcut |
// PID_IS_WORKINGDIR [VT_LPWSTR] Working directory for the shortcut | | // PID_IS_WORKINGDIR [VT_LPWSTR] Working directory for the shortcut |
// PID_IS_HOTKEY [VT_UI2] Hotkey for the shortcut | | // PID_IS_HOTKEY [VT_UI2] Hotkey for the shortcut |
// PID_IS_SHOWCMD [VT_I4] Show command for shortcut | | // PID_IS_SHOWCMD [VT_I4] Show command for shortcut |
// PID_IS_ICONINDEX [VT_I4] Index into file that has icon | | // PID_IS_ICONINDEX [VT_I4] Index into file that has icon |
// PID_IS_ICONFILE [VT_LPWSTR] File that has the icon | | // PID_IS_ICONFILE [VT_LPWSTR] File that has the icon |
// PID_IS_WHATSNEW [VT_LPWSTR] What's New text | | // PID_IS_WHATSNEW [VT_LPWSTR] What's New text |
// PID_IS_AUTHOR [VT_LPWSTR] Author | | // PID_IS_AUTHOR [VT_LPWSTR] Author |
// PID_IS_DESCRIPTION [VT_LPWSTR] Description text of site | | // PID_IS_DESCRIPTION [VT_LPWSTR] Description text of site |
// PID_IS_COMMENT [VT_LPWSTR] User annotated comment | | // PID_IS_COMMENT [VT_LPWSTR] User annotated comment |
|
// | | |
| | |
#define PID_IS_URL 2 | | #define PID_IS_URL 2 |
#define PID_IS_NAME 4 | | #define PID_IS_NAME 4 |
#define PID_IS_WORKINGDIR 5 | | #define PID_IS_WORKINGDIR 5 |
#define PID_IS_HOTKEY 6 | | #define PID_IS_HOTKEY 6 |
#define PID_IS_SHOWCMD 7 | | #define PID_IS_SHOWCMD 7 |
#define PID_IS_ICONINDEX 8 | | #define PID_IS_ICONINDEX 8 |
#define PID_IS_ICONFILE 9 | | #define PID_IS_ICONFILE 9 |
#define PID_IS_WHATSNEW 10 | | #define PID_IS_WHATSNEW 10 |
#define PID_IS_AUTHOR 11 | | #define PID_IS_AUTHOR 11 |
#define PID_IS_DESCRIPTION 12 | | #define PID_IS_DESCRIPTION 12 |
#define PID_IS_COMMENT 13 | | #define PID_IS_COMMENT 13 |
| | |
|
// | | |
// PROPIDs for Internet Sites (FMTID_InternetSite) to be used with | | // PROPIDs for Internet Sites (FMTID_InternetSite) to be used with |
// IPropertySetStorage/IPropertyStorage | | // IPropertySetStorage/IPropertyStorage |
// | | // |
// The known property ids and their variant types are: | | // The known property ids and their variant types are: |
// PID_INTSITE_WHATSNEW [VT_LPWSTR] What's New text | | // PID_INTSITE_WHATSNEW [VT_LPWSTR] What's New text |
// PID_INTSITE_AUTHOR [VT_LPWSTR] Author | | // PID_INTSITE_AUTHOR [VT_LPWSTR] Author |
// PID_INTSITE_LASTVISIT [VT_FILETIME] Time site was last visited | | // PID_INTSITE_LASTVISIT [VT_FILETIME] Time site was last visited |
// PID_INTSITE_LASTMOD [VT_FILETIME] Time site was last modified | | // PID_INTSITE_LASTMOD [VT_FILETIME] Time site was last modified |
// PID_INTSITE_VISITCOUNT [VT_UI4] Number of times user has visited | | // PID_INTSITE_VISITCOUNT [VT_UI4] Number of times user has visited |
// PID_INTSITE_DESCRIPTION [VT_LPWSTR] Description text of site | | // PID_INTSITE_DESCRIPTION [VT_LPWSTR] Description text of site |
// PID_INTSITE_COMMENT [VT_LPWSTR] User annotated comment | | // PID_INTSITE_COMMENT [VT_LPWSTR] User annotated comment |
// PID_INTSITE_RECURSE [VT_UI4] Levels to recurse (0-3) | | // PID_INTSITE_RECURSE [VT_UI4] Levels to recurse (0-3) |
// PID_INTSITE_WATCH [VT_UI4] PIDISM_ flags | | // PID_INTSITE_WATCH [VT_UI4] PIDISM_ flags |
// PID_INTSITE_SUBSCRIPTION [VT_UI8] Subscription cookie | | // PID_INTSITE_SUBSCRIPTION [VT_UI8] Subscription cookie |
// PID_INTSITE_URL [VT_LPWSTR] URL | | // PID_INTSITE_URL [VT_LPWSTR] URL |
// PID_INTSITE_TITLE [VT_LPWSTR] Title | | // PID_INTSITE_TITLE [VT_LPWSTR] Title |
// PID_INTSITE_CODEPAGE [VT_UI4] Codepage of the document | | // PID_INTSITE_CODEPAGE [VT_UI4] Codepage of the document |
// PID_INTSITE_TRACKING [VT_UI4] Tracking | | // PID_INTSITE_TRACKING [VT_UI4] Tracking |
// PID_INTSITE_ICONINDEX [VT_I4] Retrieve the index to the icon | | // PID_INTSITE_ICONINDEX [VT_I4] Retrieve the index to the icon |
// PID_INTSITE_ICONFILE [VT_LPWSTR] Retrieve the file containing the
icon index. | | // PID_INTSITE_ICONFILE [VT_LPWSTR] Retrieve the file containing the
icon index. |
|
| | // PID_INTSITE_RAWURL [VT_LPWSTR] The raw, un-encoded, unicode url. |
| | |
#define PID_INTSITE_WHATSNEW 2 | | #define PID_INTSITE_WHATSNEW 2 |
#define PID_INTSITE_AUTHOR 3 | | #define PID_INTSITE_AUTHOR 3 |
#define PID_INTSITE_LASTVISIT 4 | | #define PID_INTSITE_LASTVISIT 4 |
#define PID_INTSITE_LASTMOD 5 | | #define PID_INTSITE_LASTMOD 5 |
#define PID_INTSITE_VISITCOUNT 6 | | #define PID_INTSITE_VISITCOUNT 6 |
#define PID_INTSITE_DESCRIPTION 7 | | #define PID_INTSITE_DESCRIPTION 7 |
#define PID_INTSITE_COMMENT 8 | | #define PID_INTSITE_COMMENT 8 |
#define PID_INTSITE_FLAGS 9 | | #define PID_INTSITE_FLAGS 9 |
#define PID_INTSITE_CONTENTLEN 10 | | #define PID_INTSITE_CONTENTLEN 10 |
| | |
skipping to change at line 4788 | | skipping to change at line 4056 |
| | |
UINT version; | | UINT version; |
| | |
// new for win2k. need notUsed var to calc the right size of ie4 struct | | // new for win2k. need notUsed var to calc the right size of ie4 struct |
// FIELD_OFFSET does not work on bit fields | | // FIELD_OFFSET does not work on bit fields |
UINT uNotUsed; // feel free to rename and use | | UINT uNotUsed; // feel free to rename and use |
BOOL fSepProcess: 1; | | BOOL fSepProcess: 1; |
| | |
// new for Whistler. | | // new for Whistler. |
BOOL fStartPanelOn: 1; //Indicates if the Whistler StartPanel mode is
ON or OFF. | | BOOL fStartPanelOn: 1; //Indicates if the Whistler StartPanel mode is
ON or OFF. |
|
| | |
BOOL fShowStartPage: 1; //Indicates if the Whistler StartPage on deskto
p is ON or OFF. | | BOOL fShowStartPage: 1; //Indicates if the Whistler StartPage on deskto
p is ON or OFF. |
| | |
|
UINT fSpareFlags : 13; | | // new for Longhorn |
| | BOOL fAutoCheckSelect: 1; |
| | BOOL fIconsOnly: 1; |
| | BOOL fShowTypeOverlay: 1; |
| | |
| | UINT fSpareFlags : 11; |
| | |
} SHELLSTATEA, *LPSHELLSTATEA; | | } SHELLSTATEA, *LPSHELLSTATEA; |
| | |
typedef struct { | | typedef struct { |
BOOL fShowAllObjects : 1; | | BOOL fShowAllObjects : 1; |
BOOL fShowExtensions : 1; | | BOOL fShowExtensions : 1; |
BOOL fNoConfirmRecycle : 1; | | BOOL fNoConfirmRecycle : 1; |
BOOL fShowSysFiles : 1; | | BOOL fShowSysFiles : 1; |
BOOL fShowCompColor : 1; | | BOOL fShowCompColor : 1; |
BOOL fDoubleClickInWebView : 1; | | BOOL fDoubleClickInWebView : 1; |
| | |
skipping to change at line 4829 | | skipping to change at line 4101 |
int iSortDirection; | | int iSortDirection; |
UINT version; | | UINT version; |
| | |
// new for win2k. need notUsed var to calc the right size of ie4 struct | | // new for win2k. need notUsed var to calc the right size of ie4 struct |
// FIELD_OFFSET does not work on bit fields | | // FIELD_OFFSET does not work on bit fields |
UINT uNotUsed; // feel free to rename and use | | UINT uNotUsed; // feel free to rename and use |
BOOL fSepProcess: 1; | | BOOL fSepProcess: 1; |
| | |
// new for Whistler. | | // new for Whistler. |
BOOL fStartPanelOn: 1; //Indicates if the Whistler StartPage mode is O
N or OFF. | | BOOL fStartPanelOn: 1; //Indicates if the Whistler StartPage mode is O
N or OFF. |
|
| | |
BOOL fShowStartPage: 1; //Indicates if the Whistler StartPage on deskto
p is ON or OFF. | | BOOL fShowStartPage: 1; //Indicates if the Whistler StartPage on deskto
p is ON or OFF. |
| | |
|
| | // new for Longhorn |
| | BOOL fAutoCheckSelect: 1; |
| | BOOL fIconsOnly: 1; |
| | BOOL fShowTypeOverlay: 1; |
| | |
// If you need a new flag, steal a bit from from fSpareFlags. | | // If you need a new flag, steal a bit from from fSpareFlags. |
|
UINT fSpareFlags : 13; | | UINT fSpareFlags : 11; |
| | |
} SHELLSTATEW, *LPSHELLSTATEW; | | } SHELLSTATEW, *LPSHELLSTATEW; |
| | |
#define SHELLSTATEVERSION_IE4 9 | | #define SHELLSTATEVERSION_IE4 9 |
#define SHELLSTATEVERSION_WIN2K 10 | | #define SHELLSTATEVERSION_WIN2K 10 |
| | |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHELLSTATE SHELLSTATEW | | #define SHELLSTATE SHELLSTATEW |
#define LPSHELLSTATE LPSHELLSTATEW | | #define LPSHELLSTATE LPSHELLSTATEW |
#else | | #else |
#define SHELLSTATE SHELLSTATEA | | #define SHELLSTATE SHELLSTATEA |
#define LPSHELLSTATE LPSHELLSTATEA | | #define LPSHELLSTATE LPSHELLSTATEA |
#endif | | #endif |
| | |
#define SHELLSTATE_SIZE_WIN95 FIELD_OFFSET(SHELLSTATE,lParamSort) | | #define SHELLSTATE_SIZE_WIN95 FIELD_OFFSET(SHELLSTATE,lParamSort) |
#define SHELLSTATE_SIZE_NT4 FIELD_OFFSET(SHELLSTATE,version) | | #define SHELLSTATE_SIZE_NT4 FIELD_OFFSET(SHELLSTATE,version) |
#define SHELLSTATE_SIZE_IE4 FIELD_OFFSET(SHELLSTATE,uNotUsed) | | #define SHELLSTATE_SIZE_IE4 FIELD_OFFSET(SHELLSTATE,uNotUsed) |
#define SHELLSTATE_SIZE_WIN2K sizeof(SHELLSTATE) | | #define SHELLSTATE_SIZE_WIN2K sizeof(SHELLSTATE) |
| | |
|
SHSTDAPI_(void) SHGetSetSettings(LPSHELLSTATE lpss, DWORD dwMask, BOOL bSet); | | SHSTDAPI_(void) SHGetSetSettings(__inout_opt LPSHELLSTATE lpss, DWORD dwMask, BO
OL bSet); |
| | |
// | | // |
// SysFiles are these windows special files: | | // SysFiles are these windows special files: |
// "dll sys vxd 386 drv" | | // "dll sys vxd 386 drv" |
// | | // |
// hidden files are files with the FILE_ATTRIBUTE_HIDDEN attribute | | // hidden files are files with the FILE_ATTRIBUTE_HIDDEN attribute |
// | | // |
// system files are files with the FILE_ATTRIBUTE_SYSTEM attribute | | // system files are files with the FILE_ATTRIBUTE_SYSTEM attribute |
// | | // |
// fShowAllObjects fShowSysFiles Result | | // fShowAllObjects fShowSysFiles Result |
| | |
skipping to change at line 4884 | | skipping to change at line 4160 |
BOOL fShowSysFiles : 1; | | BOOL fShowSysFiles : 1; |
BOOL fShowCompColor : 1; | | BOOL fShowCompColor : 1; |
BOOL fDoubleClickInWebView : 1; | | BOOL fDoubleClickInWebView : 1; |
BOOL fDesktopHTML : 1; | | BOOL fDesktopHTML : 1; |
BOOL fWin95Classic : 1; | | BOOL fWin95Classic : 1; |
BOOL fDontPrettyPath : 1; | | BOOL fDontPrettyPath : 1; |
BOOL fShowAttribCol : 1; | | BOOL fShowAttribCol : 1; |
BOOL fMapNetDrvBtn : 1; | | BOOL fMapNetDrvBtn : 1; |
BOOL fShowInfoTip : 1; | | BOOL fShowInfoTip : 1; |
BOOL fHideIcons : 1; | | BOOL fHideIcons : 1; |
|
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | BOOL fAutoCheckSelect: 1; |
| | BOOL fIconsOnly: 1; |
| | UINT fRestFlags : 1; |
| | #else |
UINT fRestFlags : 3; | | UINT fRestFlags : 3; |
|
| | #endif |
} SHELLFLAGSTATE, *LPSHELLFLAGSTATE; | | } SHELLFLAGSTATE, *LPSHELLFLAGSTATE; |
| | |
#define SSF_SHOWALLOBJECTS 0x00000001 | | #define SSF_SHOWALLOBJECTS 0x00000001 |
#define SSF_SHOWEXTENSIONS 0x00000002 | | #define SSF_SHOWEXTENSIONS 0x00000002 |
#define SSF_HIDDENFILEEXTS 0x00000004 | | #define SSF_HIDDENFILEEXTS 0x00000004 |
#define SSF_SERVERADMINUI 0x00000004 | | #define SSF_SERVERADMINUI 0x00000004 |
#define SSF_SHOWCOMPCOLOR 0x00000008 | | #define SSF_SHOWCOMPCOLOR 0x00000008 |
#define SSF_SORTCOLUMNS 0x00000010 | | #define SSF_SORTCOLUMNS 0x00000010 |
#define SSF_SHOWSYSFILES 0x00000020 | | #define SSF_SHOWSYSFILES 0x00000020 |
#define SSF_DOUBLECLICKINWEBVIEW 0x00000080 | | #define SSF_DOUBLECLICKINWEBVIEW 0x00000080 |
| | |
skipping to change at line 4907 | | skipping to change at line 4189 |
#define SSF_WIN95CLASSIC 0x00000400 | | #define SSF_WIN95CLASSIC 0x00000400 |
#define SSF_DONTPRETTYPATH 0x00000800 | | #define SSF_DONTPRETTYPATH 0x00000800 |
#define SSF_SHOWINFOTIP 0x00002000 | | #define SSF_SHOWINFOTIP 0x00002000 |
#define SSF_MAPNETDRVBUTTON 0x00001000 | | #define SSF_MAPNETDRVBUTTON 0x00001000 |
#define SSF_NOCONFIRMRECYCLE 0x00008000 | | #define SSF_NOCONFIRMRECYCLE 0x00008000 |
#define SSF_HIDEICONS 0x00004000 | | #define SSF_HIDEICONS 0x00004000 |
#define SSF_FILTER 0x00010000 | | #define SSF_FILTER 0x00010000 |
#define SSF_WEBVIEW 0x00020000 | | #define SSF_WEBVIEW 0x00020000 |
#define SSF_SHOWSUPERHIDDEN 0x00040000 | | #define SSF_SHOWSUPERHIDDEN 0x00040000 |
#define SSF_SEPPROCESS 0x00080000 | | #define SSF_SEPPROCESS 0x00080000 |
|
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
#define SSF_NONETCRAWLING 0x00100000 | | #define SSF_NONETCRAWLING 0x00100000 |
#define SSF_STARTPANELON 0x00200000 | | #define SSF_STARTPANELON 0x00200000 |
#define SSF_SHOWSTARTPAGE 0x00400000 | | #define SSF_SHOWSTARTPAGE 0x00400000 |
|
| | #endif // NTDDI_WINXP |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | #define SSF_AUTOCHECKSELECT 0x00800000 |
| | |
| | #define SSF_ICONSONLY 0x01000000 |
| | #define SSF_SHOWTYPEOVERLAY 0x02000000 |
| | |
| | #endif // NTDDI_LONGHORN |
| | |
|
// SHGetSettings(LPSHELLFLAGSTATE lpss, DWORD dwMask) | | |
// | | // |
// Specify the bits you are interested in in dwMask and they will be | | // Specify the bits you are interested in in dwMask and they will be |
// filled out in the lpss structure. | | // filled out in the lpss structure. |
// | | // |
// When these settings change, a WM_SETTINGCHANGE message is sent | | // When these settings change, a WM_SETTINGCHANGE message is sent |
// with the string lParam value of "ShellState". | | // with the string lParam value of "ShellState". |
// | | // |
|
SHSTDAPI_(void) SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask); | | SHSTDAPI_(void) SHGetSettings(__out SHELLFLAGSTATE *psfs, DWORD dwMask); |
| | |
|
// SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, void **ppv, LPCITEMIDLIST *pp
idlLast) | | |
// | | // |
// Given a pidl, you can get an interface pointer (as specified by riid) of the
pidl's parent folder (in ppv) | | // Given a pidl, you can get an interface pointer (as specified by riid) of the
pidl's parent folder (in ppv) |
// If ppidlLast is non-NULL, you can also get the pidl of the last item. | | // If ppidlLast is non-NULL, you can also get the pidl of the last item. |
// | | // |
|
SHSTDAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, void **ppv, LPCITEMIDLI | | SHSTDAPI SHBindToParent(PCIDLIST_ABSOLUTE pidl, REFIID riid, __out void **ppv, _ |
ST *ppidlLast); | | _out_opt PCUITEMID_CHILD *ppidlLast); |
| | |
| | #if (NTDDI_VERSION >= NTDDI_LONGHORN) |
| | |
| | // Same as SHBindToParent, except you also specify which root to use. |
| | SHSTDAPI SHBindToFolderIDListParent(IShellFolder *psfRoot, PCUIDLIST_RELATIVE pi |
| | dl, REFIID riid, __out void **ppv, __out_opt PCUITEMID_CHILD *ppidlLast); |
| | |
| | // same as SHBindToFolderIDListParent but with a IBindCtx *pbc; |
| | SHSTDAPI SHBindToFolderIDListParentEx(IShellFolder *psfRoot, PCUIDLIST_RELATIVE |
| | pidl, __in_opt IBindCtx *ppbc, REFIID riid, __out void **ppv, __out_opt PCUITEMI |
| | D_CHILD *ppidlLast); |
| | |
| | // helper function that gets the desktop object, then calls BindToObject on that |
| | SHSTDAPI SHBindToObject(__in_opt IShellFolder *psf, __in PCUIDLIST_RELATIVE pidl |
| | , __in_opt IBindCtx *pbc, __in REFIID riid, __deref_out void **ppv); |
| | |
| | #endif // NTDDI_LONGHORN |
| | |
|
// SHSTDAPI SHParseDisplayName(PCWSTR pszName, IBindCtx *pbc, LPITEMIDLIST *ppid
l, SFGAOF sfgaoIn, SFGAOF *psfgaoOut) | | |
// | | // |
// given a string it will call psfDesktop->ParseDisplayName() to try and create
a pidl | | // given a string it will call psfDesktop->ParseDisplayName() to try and create
a pidl |
// if no pbc specified, it uses the preferred options for parsing. | | // if no pbc specified, it uses the preferred options for parsing. |
// this includes mapping file system paths to their appropriate aliased locatio
n (RegisterObjectParam(STR_PARSE_TRANSLATE_ALIASES)) | | // this includes mapping file system paths to their appropriate aliased locatio
n (RegisterObjectParam(STR_PARSE_TRANSLATE_ALIASES)) |
// psfgaoOut is optional for SFGAO attributes | | // psfgaoOut is optional for SFGAO attributes |
// | | // |
|
SHSTDAPI SHParseDisplayName(PCWSTR pszName, IBindCtx *pbc, LPITEMIDLIST *ppidl, | | #if (NTDDI_VERSION >= NTDDI_WINXP) |
SFGAOF sfgaoIn, SFGAOF *psfgaoOut); | | SHSTDAPI SHParseDisplayName(PCWSTR pszName, __in_opt IBindCtx *pbc, __out PIDLIS |
| | T_ABSOLUTE *ppidl, SFGAOF sfgaoIn, __out_opt SFGAOF *psfgaoOut); |
| | #endif // NTDDI_WINXP |
| | |
|
// SHPathPrepareForWrite(HWND hwnd, IUnknown *punkEnableModless, LPCTSTR pszPath
, DWORD dwFlags) | | |
// | | // |
|
// DESCRIPTION: | | // This API will make its best effort to prepare the path for the caller. This |
// This API will prepare the path for the caller. This includes: | | includes: |
// 1. Prompting for the ejectable media to be re-inserted. (Floppy, CD-ROM, ZIP
drive, etc.) | | // 1. Prompting for the ejectable media to be re-inserted. (Floppy, CD-ROM, ZIP
drive, etc.) |
// 2. Prompting for the media to be formatted. (Floppy, hard drive, etc.) | | // 2. Prompting for the media to be formatted. (Floppy, hard drive, etc.) |
// 3. Remount mapped drives if the connection was lost. (\\unc\share mapped to N
: becomes disconnected) | | // 3. Remount mapped drives if the connection was lost. (\\unc\share mapped to N
: becomes disconnected) |
// 4. If the path doesn't exist, create it. (SHPPFW_DIRCREATE and SHPPFW_ASKDIR
CREATE) | | // 4. If the path doesn't exist, create it. (SHPPFW_DIRCREATE and SHPPFW_ASKDIR
CREATE) |
// 5. Display an error if the media is read only. (SHPPFW_NOWRITECHECK not set) | | // 5. Display an error if the media is read only. (SHPPFW_NOWRITECHECK not set) |
// | | // |
// PARAMETERS: | | // PARAMETERS: |
// hwnd: Parernt window for UI. NULL means don't display UI. OPTIONAL | | // hwnd: Parernt window for UI. NULL means don't display UI. OPTIONAL |
// punkEnableModless: Parent that will be set to modal during UI using IOle
InPlaceActiveObject::EnableModeless(). OPTIONAL | | // punkEnableModless: Parent that will be set to modal during UI using IOle
InPlaceActiveObject::EnableModeless(). OPTIONAL |
// pszPath: Path to verify is valid for writting. This can be a UNC or fil
e drive path. The path | | // pszPath: Path to verify is valid for writting. This can be a UNC or fil
e drive path. The path |
// should only contain directories. Pass SHPPFW_IGNOREFILENAME if
the last path segment | | // should only contain directories. Pass SHPPFW_IGNOREFILENAME if
the last path segment |
// is always filename to ignore. | | // is always filename to ignore. |
// dwFlags: SHPPFW_* Flags to modify behavior | | // dwFlags: SHPPFW_* Flags to modify behavior |
|
// | | |
//------------------------------------------------------------------------- | | |
#define SHPPFW_NONE 0x00000000 | | #define SHPPFW_NONE 0x00000000 |
#define SHPPFW_DEFAULT SHPPFW_DIRCREATE // May change | | #define SHPPFW_DEFAULT SHPPFW_DIRCREATE // May change |
#define SHPPFW_DIRCREATE 0x00000001 // Create the directory
if it doesn't exist without asking the user. | | #define SHPPFW_DIRCREATE 0x00000001 // Create the directory
if it doesn't exist without asking the user. |
#define SHPPFW_ASKDIRCREATE 0x00000002 // Create the directory
if it doesn't exist after asking the user. | | #define SHPPFW_ASKDIRCREATE 0x00000002 // Create the directory
if it doesn't exist after asking the user. |
#define SHPPFW_IGNOREFILENAME 0x00000004 // Ignore the last item
in pszPath because it's a file. Example: pszPath="C:\DirA\DirB", only use "C:\D
irA". | | #define SHPPFW_IGNOREFILENAME 0x00000004 // Ignore the last item
in pszPath because it's a file. Example: pszPath="C:\DirA\DirB", only use "C:\D
irA". |
#define SHPPFW_NOWRITECHECK 0x00000008 // Caller only needs to
read from the drive, so don't check if it's READ ONLY. | | #define SHPPFW_NOWRITECHECK 0x00000008 // Caller only needs to
read from the drive, so don't check if it's READ ONLY. |
|
| | #if (NTDDI_VERSION >= NTDDI_WINXP) |
#define SHPPFW_MEDIACHECKONLY 0x00000010 // do the retrys on the
media (or net path), return errors if the file can't be found | | #define SHPPFW_MEDIACHECKONLY 0x00000010 // do the retrys on the
media (or net path), return errors if the file can't be found |
|
| | #endif // NTDDI_WINXP |
| | |
SHSTDAPI SHPathPrepareForWriteA(HWND hwnd, IUnknown *punkEnableModless, LPCSTR p
szPath, DWORD dwFlags); | | SHSTDAPI SHPathPrepareForWriteA(HWND hwnd, IUnknown *punkEnableModless, LPCSTR p
szPath, DWORD dwFlags); |
SHSTDAPI SHPathPrepareForWriteW(HWND hwnd, IUnknown *punkEnableModless, LPCWSTR
pszPath, DWORD dwFlags); | | SHSTDAPI SHPathPrepareForWriteW(HWND hwnd, IUnknown *punkEnableModless, LPCWSTR
pszPath, DWORD dwFlags); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHPathPrepareForWrite SHPathPrepareForWriteW | | #define SHPathPrepareForWrite SHPathPrepareForWriteW |
#else | | #else |
#define SHPathPrepareForWrite SHPathPrepareForWriteA | | #define SHPathPrepareForWrite SHPathPrepareForWriteA |
#endif // !UNICODE | | #endif // !UNICODE |
| | |
//-------------------------------------------------------------------------- | | //-------------------------------------------------------------------------- |
// | | // |
// Interface used for exposing the INI file methods on a shortcut file | | // Interface used for exposing the INI file methods on a shortcut file |
// | | // |
// | | // |
//-------------------------------------------------------------------------- | | //-------------------------------------------------------------------------- |
#undef INTERFACE | | #undef INTERFACE |
#define INTERFACE INamedPropertyBag | | #define INTERFACE INamedPropertyBag |
|
DECLARE_INTERFACE_(INamedPropertyBag, IUnknown) | | DECLARE_INTERFACE_IID_(INamedPropertyBag, IUnknown, "FB700430-952C-11d1-946F-000
000000000") |
{ | | { |
// *** IUnknown methods *** | | // *** IUnknown methods *** |
STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; | | STDMETHOD(QueryInterface) (THIS_ REFIID riid, void **ppv) PURE; |
STDMETHOD_(ULONG,AddRef) (THIS) PURE; | | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
STDMETHOD_(ULONG,Release) (THIS) PURE; | | STDMETHOD_(ULONG,Release) (THIS) PURE; |
// *** INamedPropertyBag methods *** | | // *** INamedPropertyBag methods *** |
|
STDMETHOD(ReadPropertyNPB) (THIS_ /* [in] */ LPCOLESTR pszBagname, | | STDMETHOD(ReadPropertyNPB) (THIS_ /* [in] */ LPCWSTR pszBagname, |
/* [in] */ LPCOLESTR pszPropName, | | /* [in] */ LPCWSTR pszPropName, |
/* [out][in] */ PROPVARIANT *pVar) PURE; | | /* [out][in] */ PROPVARIANT *pVar) PURE; |
| | |
|
STDMETHOD(WritePropertyNPB)(THIS_ /* [in] */ LPCOLESTR pszBagname, | | STDMETHOD(WritePropertyNPB)(THIS_ /* [in] */ LPCWSTR pszBagname, |
/* [in] */ LPCOLESTR pszPropName, | | /* [in] */ LPCWSTR pszPropName, |
/* [in] */ PROPVARIANT *pVar) PURE; | | /* [in] */ PROPVARIANT *pVar) PURE; |
| | |
|
STDMETHOD(RemovePropertyNPB)(THIS_ /* [in] */ LPCOLESTR pszBagname, | | STDMETHOD(RemovePropertyNPB)(THIS_ /* [in] */ LPCWSTR pszBagname, |
/* [in] */ LPCOLESTR pszPropName) PURE; | | /* [in] */ LPCWSTR pszPropName) PURE; |
}; | | }; |
| | |
#ifdef __urlmon_h__ | | #ifdef __urlmon_h__ |
// NOTE: urlmon.h must be included before shlobj.h to access this function. | | // NOTE: urlmon.h must be included before shlobj.h to access this function. |
// | | // |
// SoftwareUpdateMessageBox | | // SoftwareUpdateMessageBox |
// | | // |
// Provides a standard message box for the alerting the user that a software | | // Provides a standard message box for the alerting the user that a software |
// update is available or installed. No UI will be displayed if there is no | | // update is available or installed. No UI will be displayed if there is no |
// update available or if the available update version is less than or equal | | // update available or if the available update version is less than or equal |
| | |
skipping to change at line 5038 | | skipping to change at line 4340 |
// | | // |
// IDIGNORE - There is no pending software update. Note: There is | | // IDIGNORE - There is no pending software update. Note: There is |
// no Ignore button in the standard UI. This occurs if the availab
le | | // no Ignore button in the standard UI. This occurs if the availab
le |
// version is less than the installed version or is not present or
if the | | // version is less than the installed version or is not present or
if the |
// Advertised version is greater than or equal to the update versi
on. | | // Advertised version is greater than or equal to the update versi
on. |
// | | // |
// IDABORT - An error occured. Call GetSoftwareUpdateInfo() for a more speci
fic HRESULT. | | // IDABORT - An error occured. Call GetSoftwareUpdateInfo() for a more speci
fic HRESULT. |
// Note: There is no Abort button in the standard UI. | | // Note: There is no Abort button in the standard UI. |
| | |
SHDOCAPI_(DWORD) SoftwareUpdateMessageBox( HWND hWnd, | | SHDOCAPI_(DWORD) SoftwareUpdateMessageBox( HWND hWnd, |
|
LPCWSTR szDistUnit, | | LPCWSTR pszDistUnit, |
DWORD dwFlags, | | DWORD dwFlags, |
|
LPSOFTDISTINFO psdi ); | | __out_opt LPSOFTDISTINFO psdi ); |
#endif // if __urlmon_h__ | | #endif // if __urlmon_h__ |
| | |
// SHPropStgCreate() | | // SHPropStgCreate() |
// Wrap of IPropertySetStorage::Open/Create | | // Wrap of IPropertySetStorage::Open/Create |
// | | // |
// This function ensures proper handling of code page retrieval/assignment | | // This function ensures proper handling of code page retrieval/assignment |
// for the requested property set operation. | | // for the requested property set operation. |
// | | // |
// psstg, // Address of IPropertySetStorage vtable | | // psstg, // Address of IPropertySetStorage vtable |
// fmtid, // property set ID | | // fmtid, // property set ID |
// pclsid, // class ID associated with the set. This can be NULL | | // pclsid, // class ID associated with the set. This can be NULL |
// grfFlags, // PROPSETFLAG_xxx. All sets containing ansi bytes should
be created with | | // grfFlags, // PROPSETFLAG_xxx. All sets containing ansi bytes should
be created with |
// PROPSETFLAG_ANSI, otherwise PROPSETFLAG_DEFAULT. | | // PROPSETFLAG_ANSI, otherwise PROPSETFLAG_DEFAULT. |
// grfMode, // STGM_ flags. Must contain STGM_DIRECT|STGM_EXCLUSIVE. | | // grfMode, // STGM_ flags. Must contain STGM_DIRECT|STGM_EXCLUSIVE. |
// dwDisposition, // OPEN_EXISTING. OPEN_ALWAYS, CREATE_NEW, or CREATE_ALWAYS | | // dwDisposition, // OPEN_EXISTING. OPEN_ALWAYS, CREATE_NEW, or CREATE_ALWAYS |
// IPropertyStorage** ppstg, // Address to receive requested vtable | | // IPropertyStorage** ppstg, // Address to receive requested vtable |
// puCodePage // Optional address to receive the code page ID for the set
. | | // puCodePage // Optional address to receive the code page ID for the set
. |
// | | // |
|
SHSTDAPI SHPropStgCreate( IPropertySetStorage* psstg, REFFMTID fmtid, CLSID* pcl
sid, DWORD grfFlags, DWORD grfMode, DWORD dwDisposition, OUT IPropertyStorage**
ppstg, OUT OPTIONAL UINT* puCodePage ); | | SHSTDAPI SHPropStgCreate( IPropertySetStorage* psstg, REFFMTID fmtid, const CLSI
D *pclsid, DWORD grfFlags, DWORD grfMode, DWORD dwDisposition, __out IPropertySt
orage** ppstg, __out_opt UINT* puCodePage ); |
| | |
// SHPropStgReadMultiple() | | // SHPropStgReadMultiple() |
// IPropertyStorage::ReadMultiple wrap | | // IPropertyStorage::ReadMultiple wrap |
// | | // |
// The wrap ensures ANSI/UNICODE translations are handled properly for | | // The wrap ensures ANSI/UNICODE translations are handled properly for |
// legacy property sets. | | // legacy property sets. |
// | | // |
// pps, // address of IPropertyStorage vtable. | | // pps, // address of IPropertyStorage vtable. |
// uCodePage, //Code page value retrieved from SHCreatePropertySet | | // uCodePage, //Code page value retrieved from SHCreatePropertySet |
// cpspec, //Count of properties being read | | // cpspec, //Count of properties being read |
// rgpspec, //Array of the properties to be read | | // rgpspec, //Array of the properties to be read |
// rgvar //Array of PROPVARIANTs containing the property values on return | | // rgvar //Array of PROPVARIANTs containing the property values on return |
// | | // |
|
SHSTDAPI SHPropStgReadMultiple( IPropertyStorage* pps, UINT uCodePage, ULONG cps
pec, PROPSPEC const rgpspec[], PROPVARIANT rgvar[] ); | | SHSTDAPI SHPropStgReadMultiple( IPropertyStorage* pps, UINT uCodePage, ULONG cps
pec, __in_ecount(cpspec) PROPSPEC const rgpspec[], __out_ecount_full(cpspec) PRO
PVARIANT rgvar[] ); |
| | |
// SHPropStgWriteMultiple() | | // SHPropStgWriteMultiple() |
// IPropertyStorage::WriteMultiple wrap | | // IPropertyStorage::WriteMultiple wrap |
// | | // |
// The wrap ensures ANSI/UNICODE translations are handled properly for | | // The wrap ensures ANSI/UNICODE translations are handled properly for |
// legacy property sets. | | // legacy property sets. |
// | | // |
// pps, // address of IPropertyStorage vtable. | | // pps, // address of IPropertyStorage vtable. |
// uCodePage, // code page retrieved from SHCreatePropertySet. | | // uCodePage, // code page retrieved from SHCreatePropertySet. |
// cpspec, // The number of properties being set | | // cpspec, // The number of properties being set |
// rgpspec, // Property specifiers | | // rgpspec, // Property specifiers |
// rgvar, // Array of PROPVARIANT values | | // rgvar, // Array of PROPVARIANT values |
// propidNameFirst // Minimum value for property identifiers. This value should
be >= PID_FIRST_USABLE | | // propidNameFirst // Minimum value for property identifiers. This value should
be >= PID_FIRST_USABLE |
// | | // |
|
SHSTDAPI SHPropStgWriteMultiple( IPropertyStorage* pps, UINT* puCodePage, ULONG
cpspec, PROPSPEC const rgpspec[], PROPVARIANT rgvar[], PROPID propidNameFirst ); | | SHSTDAPI SHPropStgWriteMultiple( IPropertyStorage* pps, __inout_opt UINT* puCode
Page, ULONG cpspec, __in_ecount(cpspec) PROPSPEC const rgpspec[], __inout_ecount
(cpspec) PROPVARIANT rgvar[], PROPID propidNameFirst ); |
| | |
|
SHSTDAPI SHCreateFileExtractIconA(LPCSTR pszFile, DWORD dwFileAttributes, REFIID | | #if (NTDDI_VERSION >= NTDDI_WINXP) |
riid, void **ppv); | | SHSTDAPI SHCreateFileExtractIconA(LPCSTR pszFile, DWORD dwFileAttributes, REFIID |
SHSTDAPI SHCreateFileExtractIconW(LPCWSTR pszFile, DWORD dwFileAttributes, REFII | | riid, __out void **ppv); |
D riid, void **ppv); | | SHSTDAPI SHCreateFileExtractIconW(LPCWSTR pszFile, DWORD dwFileAttributes, REFII |
| | D riid, __out void **ppv); |
#ifdef UNICODE | | #ifdef UNICODE |
#define SHCreateFileExtractIcon SHCreateFileExtractIconW | | #define SHCreateFileExtractIcon SHCreateFileExtractIconW |
#else | | #else |
#define SHCreateFileExtractIcon SHCreateFileExtractIconA | | #define SHCreateFileExtractIcon SHCreateFileExtractIconA |
#endif // !UNICODE | | #endif // !UNICODE |
#include <pshpack8.h> | | #include <pshpack8.h> |
|
| | #include <poppack.h> /* Return to byte packing */ |
SHSTDAPI SHLimitInputEdit(HWND hwndEdit, IShellFolder *psf); | | SHSTDAPI SHLimitInputEdit(HWND hwndEdit, IShellFolder *psf); |
|
| | STDAPI SHGetAttributesFromDataObject(IDataObject *pdo, DWORD dwAttributeMask, __ |
| | out_opt DWORD *pdwAttributes, __out_opt UINT *pcItems); |
| | #endif // NTDDI_WINXP |
| | |
|
#if (_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0500) | | #if (NTDDI_VERSION >= NTDDI_WIN2K) |
| | |
// | | // |
// The SHMultiFileProperties API displays a property sheet for a | | // The SHMultiFileProperties API displays a property sheet for a |
// set of files specified in an IDList Array. | | // set of files specified in an IDList Array. |
// | | // |
// Parameters: | | // Parameters: |
// pdtobj - Data object containing list of files. The data | | // pdtobj - Data object containing list of files. The data |
// object must provide the "Shell IDList Array" | | // object must provide the "Shell IDList Array" |
// clipboard format. The parent folder's implementation of | | // clipboard format. The parent folder's implementation of |
// IShellFolder::GetDisplayNameOf must return a fully-qualified | | // IShellFolder::GetDisplayNameOf must return a fully-qualified |
// filesystem path for each item in response to the | | // filesystem path for each item in response to the |
// SHGDN_FORPARSING flag. | | // SHGDN_FORPARSING flag. |
// | | // |
// dwFlags - Reserved for future use. Should be set to 0. | | // dwFlags - Reserved for future use. Should be set to 0. |
// | | // |
// Returns: | | // Returns: |
// S_OK | | // S_OK |
// | | // |
SHSTDAPI SHMultiFileProperties(IDataObject *pdtobj, DWORD dwFlags); | | SHSTDAPI SHMultiFileProperties(IDataObject *pdtobj, DWORD dwFlags); |
| | |
|
#endif | | #endif // NTDDI_WIN2K |
| | |
#if (_WIN32_IE >= 0x0600) | | |
// | | |
// | | |
typedef void (CALLBACK *PFNASYNCICONTASKBALLBACK)(LPCITEMIDLIST pidl, LPVOID pvD | | |
ata, LPVOID pvHint, INT iIconIndex, INT iOpenIconIndex); | | |
| | |
// HRESULT SHMapIDListToImageListIndexAsync(IShellTaskScheduler* pts, IShellFold | | |
er *psf, LPCITEMIDLIST pidl, UINT flags, | | |
// PFNASYNCICONTASKBALLBACK pfn, LPVO | | |
ID pvData, LPVOID pvHint, int *piIndex, int *piIndexSel); | | |
// A usefull function for asynchronously mapping idlist into index into system | | |
// image list. Optionally it can also look up the index of the selected icon. | | |
// pts Task scheduler interface to use to create the background task | | |
// psf Shell folder relating to the pidl | | |
// pidl Item whose icon is requested | | |
// flags GIL_ flags | | |
// pfn Function called back when the background task is done | | |
// pvData User data passed back in the (*pfn) callback | | |
// pvHint User data passed back in the (*pfn) callback | | |
// piIndex Icon index returned. This is the temporary index if the function | | |
returns E_PENDING. The final index will be provided thru the callback | | |
// piIndexSel Optional icon index for the open icon case (GIL_OPENICON). | | |
// | | |
// Returns S_OK if all the requested info was available. E_PENDING means that yo | | |
u get temporary icons, and will be called back | | |
// asynchronously with the final icons. Other failure code means th | | |
e function failed. | | |
SHSTDAPI SHMapIDListToImageListIndexAsync(IShellTaskScheduler* pts, IShellFolder | | |
*psf, LPCITEMIDLIST pidl, UINT flags, | | |
PFNASYNCICONTASKBALLBACK pfn, LPVOID | | |
pvData, LPVOID pvHint, int *piIndex, int *piIndexSel); | | |
#endif // (_WIN32_IE >= 0x0600) | | |
| | |
// A usefull function in Defview for mapping idlist into index into system | | // A usefull function in Defview for mapping idlist into index into system |
// image list. Optionally it can also look up the index of the selected | | // image list. Optionally it can also look up the index of the selected |
// icon. | | // icon. |
|
SHSTDAPI_(int) SHMapPIDLToSystemImageListIndex(IShellFolder *pshf, LPCITEMIDLIST
pidl, int *piIndexSel); | | SHSTDAPI_(int) SHMapPIDLToSystemImageListIndex(IShellFolder *pshf, PCUITEMID_CHI
LD pidl, __out_opt int *piIndexSel); |
| | |
|
STDAPI SHCLSIDFromString(PCWSTR lpsz, CLSID *pclsid); | | SHSTDAPI SHCLSIDFromString(LPCWSTR psz, __out CLSID *pclsid); |
STDAPI SHFlushClipboard(void); | | SHSTDAPI SHCreateQueryCancelAutoPlayMoniker(__out IMoniker** ppmoniker); // d |
STDAPI SHCreateQueryCancelAutoPlayMoniker(IMoniker** ppmoniker); | | eprecated: use CreateClassMoniker(CLSID_YourOwnClsid, ...) |
HINSTANCE WINAPI SHGetShellStyleHInstance(void); | | |
STDAPI_(void) PerUserInit(void); | | STDAPI_(void) PerUserInit(void); |
|
WINSHELLAPI BOOL WINAPI SHRunControlPanel(LPCWSTR lpcszCmdLine, HWND hwndMsgP
arent); | | SHSTDAPI_(BOOL)SHRunControlPanel(LPCWSTR lpcszCmdLine, HWND hwndMsgParent); |
| | |
|
WINSHELLAPI int WINAPI PickIconDlg(HWND hwnd, LPWSTR pszIconPath, UINT cbIconP | | SHSTDAPI_(int) PickIconDlg(HWND hwnd, __inout_ecount(cchIconPath) LPWSTR pszIcon |
ath, int *piIconIndex); | | Path, UINT cchIconPath, __inout_opt int *piIconIndex); |
| | |
| | #include <pshpack8.h> |
| | |
typedef struct tagAAMENUFILENAME | | typedef struct tagAAMENUFILENAME |
{ | | { |
SHORT cbTotal; | | SHORT cbTotal; |
BYTE rgbReserved[12]; | | BYTE rgbReserved[12]; |
|
WCHAR szFileName[1]; // variable length string | | WCHAR szFileName[1]; // variable length string |
} AASHELLMENUFILENAME, *LPAASHELLMENUFILENAME; | | } AASHELLMENUFILENAME, *LPAASHELLMENUFILENAME; |
| | |
typedef struct tagAASHELLMENUITEM | | typedef struct tagAASHELLMENUITEM |
{ | | { |
void* lpReserved1; | | void* lpReserved1; |
int iReserved; | | int iReserved; |
UINT uiReserved; | | UINT uiReserved; |
LPAASHELLMENUFILENAME lpName; // name of file | | LPAASHELLMENUFILENAME lpName; // name of file |
|
LPWSTR psz; // text to use if no file | | LPWSTR psz; // text to use if no file |
} AASHELLMENUITEM, *LPAASHELLMENUITEM; | | } AASHELLMENUITEM, *LPAASHELLMENUITEM; |
| | |
|
STDAPI SHGetAttributesFromDataObject(IDataObject *pdo, DWORD dwAttributeMask, DW | | |
ORD *pdwAttributes, UINT *pcItems); | | |
| | |
#include <poppack.h> /* Return to byte packing */ | | #include <poppack.h> /* Return to byte packing */ |
| | |
|
#ifdef __cplusplus | | #if (_WIN32_IE >= _WIN32_IE_IE70) |
} | | typedef enum tagIESHORTCUTFLAGS |
| | { |
#endif /* __cplusplus */ | | IESHORTCUT_NEWBROWSER = 0x01, |
| | IESHORTCUT_OPENNEWTAB = 0x02, |
| | IESHORTCUT_FORCENAVIGATE = 0x04, |
| | IESHORTCUT_BACKGROUNDTAB = 0x08, |
| | } IESHORTCUTFLAGS; |
| | #endif // _WIN32_IE_IE70 |
| | |
|
#include <poppack.h> | | #if (_WIN32_IE >= _WIN32_IE_XP) |
| | |
|
SHDOCAPI_(BOOL) ImportPrivacySettings( LPCWSTR szFilename, | | SHDOCAPI_(BOOL) ImportPrivacySettings(LPCWSTR pszFilename, __inout BOOL* pfParse |
IN OUT BOOL* pfParsePrivacyPreferences, IN OUT BOOL* | | PrivacyPreferences, __inout BOOL* pfParsePerSiteRules); |
pfParsePerSiteRules); | | |
#ifndef IEnumPrivacyRecords | | #ifndef IEnumPrivacyRecords |
typedef interface IEnumPrivacyRecords IEnumPrivacyRecords; | | typedef interface IEnumPrivacyRecords IEnumPrivacyRecords; |
#endif | | #endif |
|
SHDOCAPI DoPrivacyDlg( HWND hwndParent, LPOLESTR pszUrl, IEnumPrivacyRecords *pP | | SHDOCAPI DoPrivacyDlg(HWND hwndOwner, __in LPWSTR pszUrl, __in IEnumPrivacyRecor |
rivacyEnum, BOOL fReportAllSites); | | ds *pPrivacyEnum, BOOL fReportAllSites); |
| | |
| | #endif // _WIN32_IE_XP |
| | |
| | #include <poppack.h> |
| | |
| | #ifdef __cplusplus |
| | } |
| | #endif /* __cplusplus */ |
| | |
#endif // _SHLOBJ_H_ | | #endif // _SHLOBJ_H_ |
| | |
End of changes. 377 change blocks. |
1943 lines changed or deleted | | 1335 lines changed or added |
|