55 #define CONROLPANELSHELLVIEWCOLUMNS 2 83 cchComment =
wcslen(pszComment);
86 cbData =
sizeof(pidl->mkid.cb) +
sizeof(
pData->type) +
sizeof(
pData->u.cpanel) -
sizeof(
pData->u.cpanel.szName)
93 pidl->mkid.cb = cbData;
97 pCP = &
pData->u.cpanel;
134 CComPtr<IDefaultExtractIconInit> initIcon;
139 initIcon->SetNormalIcon(
pData->szName, (
int)
pData->iconIdx != -1 ?
pData->iconIdx : 0);
141 return initIcon->QueryInterface(
riid, ppvOut);
153 if (applet->
info[
i].idIcon > 0)
154 iconIdx = -applet->
info[
i].idIcon;
159 applet->
info[
i].name,
160 applet->
info[
i].info,
218 if (
dwFlags & SHCONTF_NONFOLDERS)
237 if (
wcscmp(wfd.cFileName,
L"ncpa.cpl"))
257 TRACE(
"-- destroying IShellFolder(%p)\n",
this);
270 DWORD *pdwAttributes)
273 return m_regFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
281 CComPtr<IEnumIDList> pRegEnumerator;
340 ERR(
"Got wrong lParam!\n");
352 CComPtr<IShellView> pShellView;
361 WARN(
"IDropTarget not implemented\n");
364 WARN(
"IContextMenu not implemented\n");
371 TRACE(
"--(%p)->(interface=%p)\n",
this, ppvOut);
382 SFGAO_HASSUBFOLDER | SFGAO_FOLDER | SFGAO_CANLINK;
384 TRACE(
"(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n",
385 this, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
401 while(cidl > 0 && *apidl)
405 *rgfInOut &= SFGAO_CANLINK;
409 ERR(
"Got an unkown pidl here!\n");
415 *rgfInOut &= ~SFGAO_VALIDATE;
417 TRACE(
"-- result=0x%08x\n", *rgfInOut);
439 TRACE(
"(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
449 for (
UINT i = 0;
i < cidl;
i++)
458 hr = ShellObjectCreatorInit<CCPLItemMenu>(cidl, apidl,
riid, &pObj);
477 TRACE(
"(%p)->hr=0x%08x\n",
this,
hr);
518 FIXME(
"(%p)->(%p,pidl=%p,%s,%u,%p)\n",
this, hwndOwner, pidl,
debugstr_w(
lpName),
dwFlags, pPidlOut);
524 FIXME(
"(%p)\n",
this);
530 FIXME(
"(%p)\n",
this);
536 TRACE(
"(%p)\n",
this);
538 if (pSort) *pSort = 0;
539 if (pDisplay) *pDisplay = 0;
545 TRACE(
"(%p)\n",
this);
554 FIXME(
"(%p)\n",
this);
571 return m_regFolder->GetDetailsOf(pidl, iColumn, psd);
594 FIXME(
"(%p)\n",
this);
603 TRACE(
"(%p)\n",
this);
607 *lpClassId = CLSID_ControlPanel;
626 static const WCHAR* pszCPanelPath =
L"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}";
643 TRACE(
"(%p)->(%p)\n",
this, pidl);
700 TRACE(
"(%p)->(invcom=%p verb=%p wnd=%p)\n",
this, lpcmi, lpcmi->
lpVerb, lpcmi->
hwnd);
707 PCWSTR wszFormat =
L"shell32.dll,Control_RunDLL %s,%s";
716 CComPtr<IDataObject> pDataObj;
726 CComPtr<IShellFolder> psf;
727 CComPtr<IDropTarget> pDT;
753 TRACE(
"(%p)->(idcom=%lx flags=%x %p name=%p len=%x)\n",
this, idCommand,
uFlags, lpReserved, lpszName, uMaxNameLen);
755 FIXME(
"unknown command string\n");
767 TRACE(
"ICPanel_IContextMenu_HandleMenuMsg (%p)->(msg=%x wp=%lx lp=%lx)\n",
this, uMsg,
wParam,
lParam);
virtual HRESULT WINAPI BindToStorage(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
void WINAPI _InsertMenuItemW(HMENU hmenu, UINT indexMenu, BOOL fByPosition, UINT wID, UINT fType, LPCWSTR dwTypeData, UINT fState)
#define IDS_SHV_COLUMN_COMMENTS
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
struct applet_info info[1]
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
HRESULT WINAPI SHCreateDataObject(PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, IDataObject *pdtInner, REFIID riid, void **ppv)
interface IBindCtx * LPBC
HRESULT WINAPI Initialize(DWORD dwFlags, IEnumIDList *pRegEnumerator)
virtual HRESULT WINAPI GetUIObjectOf(HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, LPVOID *ppvOut)
BOOL AddToEnumList(LPITEMIDLIST pidl)
static PIDLCPanelStruct * _ILGetCPanelPointer(LPCITEMIDLIST pidl)
EXTERN_C void WINAPI Control_RunDLLW(HWND hWnd, HINSTANCE hInst, LPCWSTR cmd, DWORD nCmdShow)
#define HKEY_CURRENT_USER
static const shvheader ControlPanelSFHeader[]
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
virtual HRESULT WINAPI GetDetailsEx(PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pv)
const char * shdebugstr_guid(const struct _GUID *id)
HRESULT CCPLExtractIcon_CreateInstance(IShellFolder *psf, LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppvOut)
#define INVALID_HANDLE_VALUE
CComPtr< IShellFolder2 > m_regFolder
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
#define MAKEINTRESOURCEA(i)
const GUID IID_IDataObject
#define MAKE_COMPARE_HRESULT(x)
virtual HRESULT WINAPI EnumSearches(IEnumExtraSearch **ppenum)
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
#define IID_PPV_ARG(Itype, ppType)
virtual HRESULT WINAPI GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD *rgfInOut)
_In_ PSID _Out_writes_to_opt_ cchName LPSTR _Inout_ LPDWORD cchName
LONG WINAPI RegCloseKey(HKEY hKey)
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
static BOOL _ILIsSpecialFolder(LPCITEMIDLIST pidl)
static LPITEMIDLIST _ILCreateCPanelApplet(LPCWSTR pszName, LPCWSTR pszDisplayName, LPCWSTR pszComment, int iIconIdx)
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
static const WCHAR wszFile[]
static const DWORD dwControlPanelAttributes
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
virtual HRESULT WINAPI SetNameOf(HWND hwndOwner, PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut)
HRESULT IDataObject_Constructor(HWND hwndOwner, PCIDLIST_ABSOLUTE pMyPidl, PCUIDLIST_RELATIVE_ARRAY apidl, UINT cidl, BOOL bExtendedObject, IDataObject **dataObject)
virtual HRESULT WINAPI BindToObject(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
struct _SFV_CREATE SFV_CREATE
#define MAKE_HRESULT(sev, fac, code)
static PROTOCOLDATA * pdata
#define FILE_ATTRIBUTE_DIRECTORY
virtual HRESULT WINAPI CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2)
HRESULT SHELL32_CompareDetails(IShellFolder2 *isf, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
HRESULT CRegFolder_CreateInstance(const GUID *pGuid, LPCITEMIDLIST pidlRoot, LPCWSTR lpszPath, LPCWSTR lpszEnumKeyName, REFIID riid, void **ppv)
BOOL _ILIsCPanelStruct(LPCITEMIDLIST pidl)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
virtual HRESULT WINAPI MapColumnToSCID(UINT column, SHCOLUMNID *pscid)
#define FAILED_UNEXPECTEDLY(hr)
virtual HRESULT WINAPI GetClassID(CLSID *lpClassId)
HRESULT AppendItemsFromEnumerator(IEnumIDList *pEnum)
virtual HRESULT WINAPI GetDefaultColumn(DWORD dwRes, ULONG *pSort, ULONG *pDisplay)
unsigned __int3264 UINT_PTR
void Control_UnloadApplet(CPlApplet *applet)
virtual HRESULT WINAPI GetDefaultSearchGUID(GUID *pguid)
virtual HRESULT WINAPI CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
#define CONROLPANELSHELLVIEWCOLUMNS
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
virtual HRESULT WINAPI EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList)
void _ILFreeaPidl(LPITEMIDLIST *apidl, UINT cidl)
virtual HRESULT WINAPI GetDefaultColumnState(UINT iColumn, DWORD *pcsFlags)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define shell32_hInstance
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
void shell(int argc, const char *argv[])
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
#define COM_INTERFACE_ENTRY_IID(iid, x)
void pdump(LPCITEMIDLIST pidl)
virtual HRESULT WINAPI GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd)
virtual HRESULT WINAPI ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, DWORD *pchEaten, PIDLIST_RELATIVE *ppidl, DWORD *pdwAttributes)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
#define FILE_ATTRIBUTE_HIDDEN
virtual HRESULT WINAPI GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet)
BOOL pcheck(LPCITEMIDLIST pidl)
CPlApplet * Control_LoadApplet(HWND hWnd, LPCWSTR cmd, CPanel *panel)
WINE_DEFAULT_DEBUG_CHANNEL(shell)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
void WINAPI SHFree(LPVOID pv)
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
virtual HRESULT WINAPI GetCurFolder(PIDLIST_ABSOLUTE *pidl)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
#define MAKEINTRESOURCEW(i)
#define IDS_SHV_COLUMN_NAME
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
LPITEMIDLIST _ILCreateControlPanel(void)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
LPVOID WINAPI SHAlloc(SIZE_T len)
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
PITEMID_CHILD * _ILCopyaPidl(PCUITEMID_CHILD_ARRAY apidlsrc, UINT cidl)
#define IsEqualIID(riid1, riid2)
BOOL CreateCPanelEnumList(DWORD dwFlags)
virtual HRESULT WINAPI Initialize(PCIDLIST_ABSOLUTE pidl)
BOOL RegisterCPanelApp(LPCWSTR path)
int RegisterRegistryCPanelApps(HKEY hkey_root, LPCWSTR szRepPath)
BOOL WINAPI SHSimulateDrop(IDropTarget *pDrop, IDataObject *pDataObj, DWORD grfKeyState, PPOINTL lpPt, DWORD *pdwEffect)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
_In_ LPCSTR _Out_writes_to_opt_ cchDisplayName LPSTR _Inout_ LPDWORD cchDisplayName
#define HKEY_LOCAL_MACHINE
BOOL WINAPI FindClose(HANDLE hFindFile)