88 cchComment =
wcslen(pszComment);
91 cbData =
sizeof(pidl->mkid.cb) +
sizeof(
pData->type) +
sizeof(
pData->u.cpanel) -
sizeof(
pData->u.cpanel.szName)
98 pidl->mkid.cb = cbData;
102 pCP = &
pData->u.cpanel;
139 CComPtr<IDefaultExtractIconInit> initIcon;
144 initIcon->SetNormalIcon(
pData->szName, (
int)
pData->iconIdx != -1 ?
pData->iconIdx : 0);
158 if (applet->
info[
i].idIcon > 0)
159 iconIdx = -applet->
info[
i].idIcon;
164 applet->
info[
i].name,
165 applet->
info[
i].info,
223 if (
dwFlags & SHCONTF_NONFOLDERS)
242 if (
wcscmp(wfd.cFileName,
L"ncpa.cpl"))
262 TRACE(
"-- destroying IShellFolder(%p)\n",
this);
275 DWORD *pdwAttributes)
278 return m_regFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
286 CComPtr<IEnumIDList> pRegEnumerator;
345 ERR(
"Got wrong lParam!\n");
357 CComPtr<IShellView> pShellView;
366 WARN(
"IDropTarget not implemented\n");
369 WARN(
"IContextMenu not implemented\n");
376 TRACE(
"--(%p)->(interface=%p)\n",
this, ppvOut);
387 SFGAO_HASSUBFOLDER | SFGAO_FOLDER | SFGAO_CANLINK;
389 TRACE(
"(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n",
390 this, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
406 while(cidl > 0 && *apidl)
410 *rgfInOut &= SFGAO_CANLINK;
414 ERR(
"Got an unkown pidl here!\n");
420 *rgfInOut &= ~SFGAO_VALIDATE;
422 TRACE(
"-- result=0x%08x\n", *rgfInOut);
444 TRACE(
"(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
454 for (
UINT i = 0;
i < cidl;
i++)
463 hr = ShellObjectCreatorInit<CCPLItemMenu>(cidl, apidl,
riid, &pObj);
482 TRACE(
"(%p)->hr=0x%08x\n",
this,
hr);
523 FIXME(
"(%p)->(%p,pidl=%p,%s,%u,%p)\n",
this, hwndOwner, pidl,
debugstr_w(
lpName),
dwFlags, pPidlOut);
529 FIXME(
"(%p)\n",
this);
535 FIXME(
"(%p)\n",
this);
541 TRACE(
"(%p)\n",
this);
543 if (pSort) *pSort = 0;
544 if (pDisplay) *pDisplay = 0;
550 TRACE(
"(%p)\n",
this);
560 FIXME(
"(%p)\n",
this);
577 return m_regFolder->GetDetailsOf(pidl, iColumn, psd);
600 FIXME(
"(%p)\n",
this);
609 TRACE(
"(%p)\n",
this);
613 *lpClassId = CLSID_ControlPanel;
634 L"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{21EC2020-3AEA-1069-A2DD-08002B30309D}",
648 TRACE(
"(%p)->(%p)\n",
this, pidl);
705 TRACE(
"(%p)->(invcom=%p verb=%p wnd=%p)\n",
this, lpcmi, lpcmi->
lpVerb, lpcmi->
hwnd);
712 PCWSTR wszFormat =
L"shell32.dll,Control_RunDLL %s,%s";
721 CComPtr<IDataObject> pDataObj;
731 CComPtr<IShellFolder> psf;
732 CComPtr<IDropTarget> pDT;
758 TRACE(
"(%p)->(idcom=%lx flags=%x %p name=%p len=%x)\n",
this, idCommand,
uFlags, lpReserved, lpszName, uMaxNameLen);
760 FIXME(
"unknown command string\n");
772 TRACE(
"ICPanel_IContextMenu_HandleMenuMsg (%p)->(msg=%x wp=%lx lp=%lx)\n",
this, uMsg,
wParam,
lParam);
static const shvheader ControlPanelSFHeader[]
@ CONTROLPANEL_COL_COMMENT
static PIDLCPanelStruct * _ILGetCPanelPointer(LPCITEMIDLIST pidl)
EXTERN_C void WINAPI Control_RunDLLW(HWND hWnd, HINSTANCE hInst, LPCWSTR cmd, DWORD nCmdShow)
HRESULT CCPLExtractIcon_CreateInstance(IShellFolder *psf, LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppvOut)
static LPITEMIDLIST _ILCreateCPanelApplet(LPCWSTR pszName, LPCWSTR pszDisplayName, LPCWSTR pszComment, int iIconIdx)
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
static const DWORD dwControlPanelAttributes
HRESULT IDataObject_Constructor(HWND hwndOwner, PCIDLIST_ABSOLUTE pMyPidl, PCUIDLIST_RELATIVE_ARRAY apidl, UINT cidl, BOOL bExtendedObject, IDataObject **dataObject)
HRESULT WINAPI SHCreateDataObject(PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, IDataObject *pdtInner, REFIID riid, void **ppv)
HRESULT CRegFolder_CreateInstance(const GUID *pGuid, LPCITEMIDLIST pidlRoot, LPCWSTR lpszPath, LPCWSTR lpszEnumKeyName, REFIID riid, void **ppv)
#define shell32_hInstance
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
#define RegCloseKey(hKey)
BOOL RegisterCPanelApp(LPCWSTR path)
BOOL CreateCPanelEnumList(DWORD dwFlags)
HRESULT WINAPI Initialize(DWORD dwFlags, IEnumIDList *pRegEnumerator)
int RegisterRegistryCPanelApps(HKEY hkey_root, LPCWSTR szRepPath)
virtual HRESULT WINAPI ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, DWORD *pchEaten, PIDLIST_RELATIVE *ppidl, DWORD *pdwAttributes)
virtual HRESULT WINAPI CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2)
virtual HRESULT WINAPI SetNameOf(HWND hwndOwner, PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut)
virtual HRESULT WINAPI GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet)
virtual HRESULT WINAPI EnumSearches(IEnumExtraSearch **ppenum)
virtual HRESULT WINAPI MapColumnToSCID(UINT column, SHCOLUMNID *pscid)
CComPtr< IShellFolder2 > m_regFolder
virtual HRESULT WINAPI GetDetailsEx(PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pv)
virtual HRESULT WINAPI EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList)
virtual HRESULT WINAPI GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD *rgfInOut)
virtual HRESULT WINAPI GetDefaultColumnState(UINT iColumn, DWORD *pcsFlags)
virtual HRESULT WINAPI GetClassID(CLSID *lpClassId)
virtual HRESULT WINAPI CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
virtual HRESULT WINAPI GetDefaultSearchGUID(GUID *pguid)
virtual HRESULT WINAPI GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd)
virtual HRESULT WINAPI BindToStorage(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
virtual HRESULT WINAPI Initialize(PCIDLIST_ABSOLUTE pidl)
virtual HRESULT WINAPI GetDefaultColumn(DWORD dwRes, ULONG *pSort, ULONG *pDisplay)
virtual HRESULT WINAPI GetCurFolder(PIDLIST_ABSOLUTE *pidl)
virtual HRESULT WINAPI BindToObject(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
virtual HRESULT WINAPI GetUIObjectOf(HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, LPVOID *ppvOut)
BOOL AddToEnumList(LPITEMIDLIST pidl)
HRESULT AppendItemsFromEnumerator(IEnumIDList *pEnum)
void pdump(LPCITEMIDLIST pidl)
const char * shdebugstr_guid(const struct _GUID *id)
BOOL pcheck(LPCITEMIDLIST pidl)
#define IDS_SHV_COLUMN_NAME
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)
#define INVALID_HANDLE_VALUE
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
CPlApplet * Control_LoadApplet(HWND hWnd, LPCWSTR cmd, CPanel *panel)
void Control_UnloadApplet(CPlApplet *applet)
void WINAPI SHFree(LPVOID pv)
LPVOID WINAPI SHAlloc(SIZE_T len)
BOOL WINAPI SHSimulateDrop(IDropTarget *pDrop, IDataObject *pDataObj, DWORD grfKeyState, PPOINTL lpPt, DWORD *pdwEffect)
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
#define MAKE_HRESULT(sev, fac, code)
static BOOL _ILIsSpecialFolder(LPCITEMIDLIST pidl)
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
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define COM_INTERFACE_ENTRY_IID(iid, x)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
static PROTOCOLDATA * pdata
unsigned __int3264 UINT_PTR
#define FILE_ATTRIBUTE_HIDDEN
#define FILE_ATTRIBUTE_DIRECTORY
interface IBindCtx * LPBC
const GUID IID_IDataObject
PITEMID_CHILD * _ILCopyaPidl(PCUITEMID_CHILD_ARRAY apidlsrc, UINT cidl)
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
void _ILFreeaPidl(LPITEMIDLIST *apidl, UINT cidl)
LPITEMIDLIST _ILCreateControlPanel(void)
BOOL _ILIsCPanelStruct(LPCITEMIDLIST pidl)
#define IsEqualIID(riid1, riid2)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define FAILED_UNEXPECTEDLY(hr)
#define MAKE_COMPARE_HRESULT(x)
HRESULT SHELL32_CompareDetails(IShellFolder2 *isf, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
void WINAPI _InsertMenuItemW(HMENU hmenu, UINT indexMenu, BOOL fByPosition, UINT wID, UINT fType, LPCWSTR dwTypeData, UINT fState)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
struct _SFV_CREATE SFV_CREATE
#define IDS_SHV_COLUMN_COMMENTS
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
struct applet_info info[1]
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
static const WCHAR wszFile[]
_In_ LPCSTR _Out_writes_to_opt_ cchDisplayName LPSTR _Inout_ LPDWORD cchDisplayName
_In_ PSID _Out_writes_to_opt_ cchName LPSTR _Inout_ LPDWORD cchName
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
#define MAKEINTRESOURCEA(i)
#define MAKEINTRESOURCEW(i)
#define IID_PPV_ARG(Itype, ppType)