278 lines
12 KiB
C
278 lines
12 KiB
C
#ifndef SHELL32_VIEWS_INC
|
|
#define SHELL32_VIEWS_INC
|
|
|
|
#include "idlcomm.h"
|
|
#include "pidl.h"
|
|
|
|
|
|
// Some constants for folder callbacks
|
|
#define DEFVIEW_FVM_MANY_CUTOFF 50
|
|
#define DEFVIEW_FVM_FEW_CUTOFF 25
|
|
|
|
// VIEWCOMM.C
|
|
STDAPI_(LPTSTR) SHGetCaption(HIDA hida);
|
|
STDAPI SHPropertiesForPidl(HWND hwnd, LPCITEMIDLIST pidlFull, LPCTSTR lpParameters);
|
|
|
|
// RUNDLL32.C
|
|
STDAPI_(BOOL) SHRunDLLProcess(HWND hwnd, LPCTSTR pszCmdLine, int nCmdShow, UINT idStr, BOOL fRunAsNewUser);
|
|
STDAPI_(BOOL) SHRunDLLThread(HWND hwnd, LPCTSTR pszCmdLine, int nCmdShow);
|
|
|
|
// CPLOBJ.C
|
|
STDAPI_(BOOL) SHRunControlPanelEx(LPCTSTR pszOrigCmdLine, HWND hwnd, BOOL fRunAsNewUser);
|
|
|
|
|
|
// REGITMS.C
|
|
|
|
typedef struct
|
|
{
|
|
const CLSID * pclsid;
|
|
UINT uNameID;
|
|
LPCTSTR pszIconFile;
|
|
int iDefIcon;
|
|
BYTE bOrder;
|
|
DWORD dwAttributes;
|
|
LPCTSTR pszCPL;
|
|
} REQREGITEM;
|
|
|
|
#define RIISA_ORIGINAL 0x00000001 // regitems first then rest (desktop)
|
|
#define RIISA_FOLDERFIRST 0x00000002 // folders first then the rest (regitems or not)
|
|
#define RIISA_ALPHABETICAL 0x00000004 // alphabetical (doesn't care about folder, regitems, ...)
|
|
|
|
typedef struct
|
|
{
|
|
LPCTSTR pszAllow;
|
|
RESTRICTIONS restAllow;
|
|
LPCTSTR pszDisallow;
|
|
RESTRICTIONS restDisallow;
|
|
} REGITEMSPOLICY;
|
|
|
|
typedef struct
|
|
{
|
|
LPCTSTR pszRegKey; // registry location for this name space
|
|
REGITEMSPOLICY* pPolicy; // registry location to look for Restrict and Disallow info
|
|
TCHAR cRegItem; // parsing prefix, must be TEXT(':')
|
|
BYTE bFlags; // flags field for PIDL construction
|
|
int iCmp; // compare multiplier used to revers the sort order
|
|
DWORD rgfRegItems; // default attributes for items
|
|
int iReqItems; // # of required items
|
|
REQREGITEM const * pReqItems; // require items array
|
|
DWORD dwSortAttrib; // sorting attributes
|
|
LPCTSTR pszMachine; // optional remote machine to init items from (\\server)
|
|
DWORD cbPadding; // Number of bytes of padding to put between IDREGITEMEX.bOrder and IDREGITEMEX.clsid
|
|
BYTE bFlagsLegacy; // legacy "bFlags", so that we can handle previous bFlags (equiv of cbPadding = 0)
|
|
// CANNOT be 0, 0 means no bFlagsLegacy
|
|
} REGITEMSINFO;
|
|
|
|
// class factory like entry to create the regitems folder. it only supports the agregatied case
|
|
|
|
STDAPI CRegFolder_CreateInstance(REGITEMSINFO *pri, IUnknown *punkOutter, REFIID riid, void **ppv);
|
|
STDAPI_(BOOL) RegGetsFirstShot(REFIID riid);
|
|
|
|
// this should be private
|
|
#pragma pack(1)
|
|
typedef struct
|
|
{
|
|
IDREGITEM idri;
|
|
USHORT cbNext;
|
|
} IDLREGITEM; // "RegItem" IDList
|
|
typedef UNALIGNED IDLREGITEM *LPIDLREGITEM;
|
|
typedef const UNALIGNED IDLREGITEM *LPCIDLREGITEM;
|
|
#pragma pack()
|
|
|
|
EXTERN_C const IDLREGITEM c_idlNet;
|
|
EXTERN_C const IDLREGITEM c_idlDrives;
|
|
EXTERN_C const IDLREGITEM c_idlInetRoot;
|
|
EXTERN_C const IDLREGITEM c_idlMyDocs;
|
|
|
|
#define MAX_REGITEMCCH 128 // for rename in place operations
|
|
|
|
//--------------------------------------------------------------------------
|
|
// Menu offset-IDs for object context menu (CFSMenu)
|
|
// They must be 0-based and not too big (<0x3ff)
|
|
// We are lumping all of the DefView clients in here so that we are
|
|
// sure the ID ranges are separate (making MenuHelp easier)
|
|
//---------------------------------------------------------------------------
|
|
#define FSIDM_OBJPROPS_FIRST 0x0000
|
|
#define FSIDM_PROPERTIESBG (FSIDM_OBJPROPS_FIRST + 0x0000)
|
|
|
|
// find extension commands
|
|
#define FSIDM_FINDFILES 0x0004
|
|
#define FSIDM_FINDCOMPUTER 0x0005
|
|
#define FSIDM_SAVESEARCH 0x0006
|
|
#define FSIDM_OPENCONTAININGFOLDER 0x0007
|
|
|
|
#define FSIDM_DRIVES_FIRST 0x0008
|
|
#define FSIDM_FORMAT (FSIDM_DRIVES_FIRST + 0x0000)
|
|
#define FSIDM_DISCONNECT (FSIDM_DRIVES_FIRST + 0x0001)
|
|
#define FSIDM_EJECT (FSIDM_DRIVES_FIRST + 0x0002)
|
|
#define FSIDM_DISKCOPY (FSIDM_DRIVES_FIRST + 0x0003)
|
|
#define FSIDM_DRIVES_LAST (FSIDM_DRIVES_FIRST + 0x0004)
|
|
|
|
#define FSIDM_NETWORK_FIRST (FSIDM_DRIVES_LAST + 0x0000)
|
|
#define FSIDM_CONNECT (FSIDM_NETWORK_FIRST + 0x0001)
|
|
#define FSIDM_NETPRN_INSTALL (FSIDM_NETWORK_FIRST + 0x0002)
|
|
#define FSIDM_CONNECT_PRN (FSIDM_NETWORK_FIRST + 0x0003)
|
|
#define FSIDM_DISCONNECT_PRN (FSIDM_NETWORK_FIRST + 0x0004)
|
|
#define FSIDM_NETWORK_LAST (FSIDM_NETWORK_FIRST + 0x0005)
|
|
|
|
// Command offsets for context menu (verb ids must be mutually exclusive
|
|
// from non-verb ids. Non-verb ids are first for easier menu merging.)
|
|
// non-verb ids:
|
|
#define FSIDM_CPLPRN_FIRST (FSIDM_NETWORK_LAST + 0x0000)
|
|
#define FSIDM_SETDEFAULTPRN (FSIDM_CPLPRN_FIRST + 0x0001)
|
|
#define FSIDM_SHARING (FSIDM_CPLPRN_FIRST + 0x0002)
|
|
#define FSIDM_DOCUMENTDEFAULTS (FSIDM_CPLPRN_FIRST + 0x0003)
|
|
#define FSIDM_SERVERPROPERTIES (FSIDM_CPLPRN_FIRST + 0x0004)
|
|
#define FSIDM_ADDPRINTERWIZARD (FSIDM_CPLPRN_FIRST + 0x0005)
|
|
#define FSIDM_SENDFAXWIZARD (FSIDM_CPLPRN_FIRST + 0x0006)
|
|
#define FSIDM_SETUPFAXING (FSIDM_CPLPRN_FIRST + 0x0007)
|
|
|
|
// verb ids:
|
|
#define FSIDM_OPENPRN (FSIDM_CPLPRN_FIRST + 0x0008)
|
|
#define FSIDM_RESUMEPRN (FSIDM_CPLPRN_FIRST + 0x0009)
|
|
#define FSIDM_PAUSEPRN (FSIDM_CPLPRN_FIRST + 0x000a)
|
|
#define FSIDM_WORKONLINE (FSIDM_CPLPRN_FIRST + 0x000b)
|
|
#define FSIDM_WORKOFFLINE (FSIDM_CPLPRN_FIRST + 0x000c)
|
|
#define FSIDM_PURGEPRN (FSIDM_CPLPRN_FIRST + 0x000d)
|
|
#define FSIDM_CREATELOCALFAX (FSIDM_CPLPRN_FIRST + 0x000e)
|
|
#define FSIDM_CPLPRN_LAST (FSIDM_CPLPRN_FIRST + 0x000e)
|
|
|
|
#define FSIDM_RUNAS_FIRST (FSIDM_CPLPRN_LAST + 0x0000)
|
|
#define FSIDM_RUNAS (FSIDM_RUNAS_FIRST + 0x0001)
|
|
#define FSIDM_RUNAS_SHARING (FSIDM_RUNAS_FIRST + 0x0002)
|
|
#define FSIDM_RUNAS_ADDPRN (FSIDM_RUNAS_FIRST + 0x0003)
|
|
#define FSIDM_RUNAS_SVRPROP (FSIDM_RUNAS_FIRST + 0x0004)
|
|
#define FSIDM_RUNAS_OPENPRN (FSIDM_RUNAS_FIRST + 0x0005)
|
|
#define FSIDM_RUNAS_RESUMEPRN (FSIDM_RUNAS_FIRST + 0x0006)
|
|
#define FSIDM_RUNAS_PAUSEPRN (FSIDM_RUNAS_FIRST + 0x0007)
|
|
#define FSIDM_RUNAS_WORKONLINE (FSIDM_RUNAS_FIRST + 0x0008)
|
|
#define FSIDM_RUNAS_WORKOFFLINE (FSIDM_RUNAS_FIRST + 0x0009)
|
|
#define FSIDM_RUNAS_PURGEPRN (FSIDM_RUNAS_FIRST + 0x0010)
|
|
#define FSIDM_RUNAS_DELETE (FSIDM_RUNAS_FIRST + 0x0011)
|
|
#define FSIDM_RUNAS_PROPERTIES (FSIDM_RUNAS_FIRST + 0x0012)
|
|
#define FSIDM_RUNAS_LAST (FSIDM_RUNAS_FIRST + 0x001f)
|
|
|
|
|
|
// these need to be in the same order as the ICOL in fstreex.c (chee)
|
|
#define FSIDM_SORT_FIRST (FSIDM_RUNAS_LAST + 0x0000)
|
|
#define FSIDM_SORT_LAST (FSIDM_SORT_FIRST + 0x0010)
|
|
|
|
#define FSIDM_MENUSENDTO_FIRST (FSIDM_SORT_LAST + 0x0000)
|
|
#define FSIDM_MENU_SENDTO (FSIDM_MENUSENDTO_FIRST + 0x0001)
|
|
#define FSIDM_SENDTOFIRST (FSIDM_MENUSENDTO_FIRST + 0x0002)
|
|
#define FSIDM_SENDTOLAST (FSIDM_MENUSENDTO_FIRST + 0x0013)
|
|
#define FSIDM_MENUSENDTO_LAST (FSIDM_MENUSENDTO_FIRST + 0x0014)
|
|
|
|
#define FSIDM_MENUNEW_FIRST (FSIDM_MENUSENDTO_LAST + 0x0000)
|
|
#define FSIDM_MENU_NEW (FSIDM_MENUNEW_FIRST + 0x0001)
|
|
#define FSIDM_NEWFOLDER (FSIDM_MENUNEW_FIRST + 0x0002)
|
|
#define FSIDM_NEWLINK (FSIDM_MENUNEW_FIRST + 0x0003)
|
|
#define FSIDM_NEWOTHER (FSIDM_MENUNEW_FIRST + 0x0004)
|
|
#define FSIDM_NEWLAST (FSIDM_MENUNEW_FIRST + 0x0027)
|
|
#define FSIDM_MENUNEW_LAST (FSIDM_MENUNEW_FIRST + 0x0028)
|
|
|
|
// BITBUCKET ids.
|
|
#define FSIDM_BITBUCKET_FIRST (FSIDM_MENUNEW_LAST + 0x0000)
|
|
#define FSIDM_RESTORE (FSIDM_BITBUCKET_FIRST + 0x0001)
|
|
#define FSIDM_PURGE (FSIDM_BITBUCKET_FIRST + 0x0002)
|
|
#define FSIDM_PURGEALL (FSIDM_BITBUCKET_FIRST + 0x0003)
|
|
#define FSIDM_BITBUCKET_LAST (FSIDM_BITBUCKET_FIRST + 0x0004)
|
|
|
|
// cd burn ids.
|
|
#define FSIDM_BURN_FIRST (FSIDM_BITBUCKET_LAST + 0x0000)
|
|
#define FSIDM_BURN (FSIDM_BURN_FIRST + 0x0001)
|
|
#define FSIDM_CLEANUP (FSIDM_BURN_FIRST + 0x0002)
|
|
#define FSIDM_ERASE (FSIDM_BURN_FIRST + 0x0003)
|
|
#define FSIDM_BURN_LAST (FSIDM_BURN_FIRST + 0x0004)
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Briefcase view specific command IDs
|
|
//
|
|
#define FSIDM_BRIEFCASE_FIRST (FSIDM_BURN_LAST + 0x0000)
|
|
#define FSIDM_MENU_BRIEFCASE (FSIDM_BRIEFCASE_FIRST + 0x0001)
|
|
#define FSIDM_UPDATEALL (FSIDM_BRIEFCASE_FIRST + 0x0002)
|
|
#define FSIDM_UPDATESELECTION (FSIDM_BRIEFCASE_FIRST + 0x0003)
|
|
#define FSIDM_SPLIT (FSIDM_BRIEFCASE_FIRST + 0x0004)
|
|
#define FSIDM_BRIEFCASE_LAST (FSIDM_BRIEFCASE_FIRST + 0x00b0)
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Items added by DefCM
|
|
//
|
|
// HACK: Put these at the same offsets from each other as the SFVIDM
|
|
// commands so that we can easily reuse the help strings and the menu
|
|
// initialization code
|
|
//
|
|
#define DCMIDM_LINK SHARED_FILE_LINK
|
|
#define DCMIDM_DELETE SHARED_FILE_DELETE
|
|
#define DCMIDM_RENAME SHARED_FILE_RENAME
|
|
#define DCMIDM_PROPERTIES SHARED_FILE_PROPERTIES
|
|
|
|
#define DCMIDM_CUT SHARED_EDIT_CUT
|
|
#define DCMIDM_COPY SHARED_EDIT_COPY
|
|
#define DCMIDM_PASTE SHARED_EDIT_PASTE
|
|
|
|
//
|
|
// Now for the MenuHelp ID's for the defview client menu commands
|
|
//
|
|
#define IDS_MH_PROPERTIESBG (IDS_MH_FSIDM_FIRST + FSIDM_PROPERTIESBG)
|
|
|
|
#define IDS_MH_FORMAT (IDS_MH_FSIDM_FIRST + FSIDM_FORMAT)
|
|
#define IDS_MH_DISCONNECT (IDS_MH_FSIDM_FIRST + FSIDM_DISCONNECT)
|
|
#define IDS_MH_EJECT (IDS_MH_FSIDM_FIRST + FSIDM_EJECT)
|
|
#define IDS_MH_DISKCOPY (IDS_MH_FSIDM_FIRST + FSIDM_DISKCOPY)
|
|
|
|
#define IDS_MH_CONNECT (IDS_MH_FSIDM_FIRST + FSIDM_CONNECT)
|
|
|
|
#define IDS_MH_NETPRN_INSTALL (IDS_MH_FSIDM_FIRST + FSIDM_NETPRN_INSTALL)
|
|
#define IDS_MH_CONNECT_PRN (IDS_MH_FSIDM_FIRST + FSIDM_CONNECT_PRN)
|
|
#define IDS_MH_DISCONNECT_PRN (IDS_MH_FSIDM_FIRST + FSIDM_DISCONNECT_PRN)
|
|
|
|
#define IDS_MH_SETDEFAULTPRN (IDS_MH_FSIDM_FIRST + FSIDM_SETDEFAULTPRN)
|
|
|
|
#define IDS_MH_SERVERPROPERTIES (IDS_MH_FSIDM_FIRST + FSIDM_SERVERPROPERTIES)
|
|
#define IDS_MH_ADDPRINTERWIZARD (IDS_MH_FSIDM_FIRST + FSIDM_ADDPRINTERWIZARD)
|
|
#define IDS_MH_SENDFAXWIZARD (IDS_MH_FSIDM_FIRST + FSIDM_SENDFAXWIZARD)
|
|
#define IDS_MH_SHARING (IDS_MH_FSIDM_FIRST + FSIDM_SHARING)
|
|
#define IDS_MH_DOCUMENTDEFAULTS (IDS_MH_FSIDM_FIRST + FSIDM_DOCUMENTDEFAULTS )
|
|
|
|
#define IDS_MH_OPENPRN (IDS_MH_FSIDM_FIRST + FSIDM_OPENPRN)
|
|
#define IDS_MH_RESUMEPRN (IDS_MH_FSIDM_FIRST + FSIDM_RESUMEPRN)
|
|
#define IDS_MH_PAUSEPRN (IDS_MH_FSIDM_FIRST + FSIDM_PAUSEPRN)
|
|
#define IDS_MH_WORKONLINE (IDS_MH_FSIDM_FIRST + FSIDM_WORKONLINE)
|
|
#define IDS_MH_WORKOFFLINE (IDS_MH_FSIDM_FIRST + FSIDM_WORKOFFLINE)
|
|
#define IDS_MH_PURGEPRN (IDS_MH_FSIDM_FIRST + FSIDM_PURGEPRN)
|
|
#define IDS_MH_SETUPFAXING (IDS_MH_FSIDM_FIRST + FSIDM_SETUPFAXING)
|
|
#define IDS_MH_CREATELOCALFAX (IDS_MH_FSIDM_FIRST + FSIDM_CREATELOCALFAX)
|
|
|
|
#define IDS_MH_RUNAS (IDS_MH_FSIDM_FIRST + FSIDM_RUNAS)
|
|
|
|
#define IDS_MH_MENU_SENDTO (IDS_MH_FSIDM_FIRST + FSIDM_MENU_SENDTO)
|
|
#define IDS_MH_SENDTOFIRST (IDS_MH_FSIDM_FIRST + FSIDM_SENDTOFIRST)
|
|
#define IDS_MH_SENDTOLAST (IDS_MH_FSIDM_FIRST + FSIDM_SENDTOLAST)
|
|
|
|
#define IDS_MH_MENU_NEW (IDS_MH_FSIDM_FIRST + FSIDM_MENU_NEW)
|
|
#define IDS_MH_NEWFOLDER (IDS_MH_FSIDM_FIRST + FSIDM_NEWFOLDER)
|
|
#define IDS_MH_NEWLINK (IDS_MH_FSIDM_FIRST + FSIDM_NEWLINK)
|
|
#define IDS_MH_NEWOTHER (IDS_MH_FSIDM_FIRST + FSIDM_NEWOTHER)
|
|
|
|
#define IDS_MH_MENU_BRIEFCASE (IDS_MH_FSIDM_FIRST + FSIDM_MENU_BRIEFCASE)
|
|
#define IDS_MH_UPDATEALL (IDS_MH_FSIDM_FIRST + FSIDM_UPDATEALL)
|
|
#define IDS_MH_UPDATESELECTION (IDS_MH_FSIDM_FIRST + FSIDM_UPDATESELECTION)
|
|
#define IDS_MH_SPLIT (IDS_MH_FSIDM_FIRST + FSIDM_SPLIT)
|
|
|
|
// bitbucket menu help strings
|
|
#define IDS_MH_RESTORE (IDS_MH_FSIDM_FIRST + FSIDM_RESTORE)
|
|
#define IDS_MH_PURGE (IDS_MH_FSIDM_FIRST + FSIDM_PURGE)
|
|
#define IDS_MH_PURGEALL (IDS_MH_FSIDM_FIRST + FSIDM_PURGEALL)
|
|
|
|
// find extensions
|
|
#define IDS_MH_FINDFILES (IDS_MH_FSIDM_FIRST + FSIDM_FINDFILES)
|
|
#define IDS_MH_FINDCOMPUTER (IDS_MH_FSIDM_FIRST + FSIDM_FINDCOMPUTER)
|
|
|
|
#define IDS_TT_UPDATEALL (IDS_TT_FSIDM_FIRST + FSIDM_UPDATEALL)
|
|
#define IDS_TT_UPDATESELECTION (IDS_TT_FSIDM_FIRST + FSIDM_UPDATESELECTION)
|
|
|
|
#endif
|
|
|