107 lines
3.5 KiB
C
107 lines
3.5 KiB
C
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
//
|
||
|
// Copyright (C) Microsoft Corporation, 1997 - 1999
|
||
|
//
|
||
|
// File: shellex.h
|
||
|
//
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
#ifndef _SHELLEX_H_
|
||
|
#define _SHELLEX_H_
|
||
|
|
||
|
#include "nopin.h"
|
||
|
|
||
|
class CCscShellExt : public IShellExtInit,
|
||
|
IContextMenu,
|
||
|
IShellIconOverlayIdentifier
|
||
|
{
|
||
|
LONG m_cRef;
|
||
|
LPDATAOBJECT m_lpdobj; // interface passed in by shell
|
||
|
DWORD m_dwUIStatus;
|
||
|
TCHAR m_szLocalMachine[MAX_COMPUTERNAME_LENGTH+1];
|
||
|
CNoPinList m_NoPinList;
|
||
|
|
||
|
public:
|
||
|
CCscShellExt() : m_cRef(1), m_lpdobj(NULL), m_dwUIStatus(0)
|
||
|
{
|
||
|
DllAddRef();
|
||
|
|
||
|
m_szLocalMachine[0] = TEXT('\0');
|
||
|
ULONG n = ARRAYSIZE(m_szLocalMachine);
|
||
|
GetComputerName(m_szLocalMachine, &n);
|
||
|
}
|
||
|
~CCscShellExt()
|
||
|
{
|
||
|
if (m_lpdobj)
|
||
|
m_lpdobj->Release();
|
||
|
DllRelease();
|
||
|
}
|
||
|
|
||
|
static HRESULT WINAPI CreateInstance(REFIID riid, LPVOID *ppv);
|
||
|
|
||
|
// IUnknown methods
|
||
|
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
|
||
|
STDMETHODIMP_(ULONG) AddRef();
|
||
|
STDMETHODIMP_(ULONG) Release();
|
||
|
|
||
|
// IShellExtInit method
|
||
|
STDMETHODIMP Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY);
|
||
|
|
||
|
// IContextMenu methods
|
||
|
STDMETHODIMP QueryContextMenu(HMENU hMenu,
|
||
|
UINT indexMenu,
|
||
|
UINT idCmdFirst,
|
||
|
UINT idCmdLast,
|
||
|
UINT uFlags);
|
||
|
STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi);
|
||
|
STDMETHODIMP GetCommandString(UINT_PTR idCmd,
|
||
|
UINT uFlags,
|
||
|
UINT FAR *reserved,
|
||
|
LPSTR pszName,
|
||
|
UINT cchMax);
|
||
|
|
||
|
// IShellIconOverlayIdentifier methods
|
||
|
STDMETHODIMP IsMemberOf(LPCWSTR pwszPath,
|
||
|
DWORD dwAttrib);
|
||
|
STDMETHODIMP GetOverlayInfo(LPWSTR pwszIconFile,
|
||
|
int cchMax,
|
||
|
int * pIndex,
|
||
|
DWORD * pdwFlags);
|
||
|
STDMETHODIMP GetPriority(int * pIPriority);
|
||
|
|
||
|
private:
|
||
|
STDMETHODIMP CheckOneFileStatus(LPCTSTR pszItem,
|
||
|
DWORD dwAttr,
|
||
|
BOOL bShareChecked,
|
||
|
LPDWORD pdwStatus);
|
||
|
STDMETHODIMP CheckFileStatus(LPDATAOBJECT pdobj,
|
||
|
LPDWORD pdwStatus);
|
||
|
STDMETHODIMP BuildFileList(LPDATAOBJECT pdobj,
|
||
|
HWND hwndOwner,
|
||
|
CscFilenameList * pfnl,
|
||
|
LPBOOL pbSubDir = NULL);
|
||
|
|
||
|
HRESULT CanAllFilesBePinned(IDataObject *pdtobj);
|
||
|
|
||
|
static HRESULT FolderHasSubFolders(LPCTSTR pszPath, CscFilenameList *pfnl);
|
||
|
|
||
|
static DWORD WINAPI _UnpinFilesThread(LPVOID pvData);
|
||
|
static INT_PTR CALLBACK _ConfirmPinDlgProc(HWND, UINT, WPARAM, LPARAM);
|
||
|
};
|
||
|
typedef CCscShellExt *PCSCSHELLEXT;
|
||
|
|
||
|
|
||
|
typedef DWORD (WINAPI* PFN_UNPINPROGRESSPROC)(LPCTSTR pszItem, LPARAM lpContext);
|
||
|
void CscUnpinFileList(CscFilenameList*, BOOL, BOOL, LPCTSTR, PFN_UNPINPROGRESSPROC, LPARAM);
|
||
|
|
||
|
BOOL ShareIsCacheable(LPCTSTR pszUNC,
|
||
|
BOOL bPathIsFile,
|
||
|
LPTSTR *ppszConnectionName,
|
||
|
PDWORD pdwShareStatus = FALSE);
|
||
|
BOOL ShareIsConnected(LPCTSTR pszUNC);
|
||
|
BOOL ConnectShare(LPCTSTR pszUNC, LPTSTR *ppszAccessName);
|
||
|
|
||
|
#endif // _SHELLEX_H_
|