442 lines
9.4 KiB
C++
442 lines
9.4 KiB
C++
/*++
|
|
|
|
Copyright (C) Microsoft Corporation, 1997 - 1999
|
|
All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
shellext.hxx
|
|
|
|
Abstract:
|
|
|
|
Printer shell extension header.
|
|
|
|
Author:
|
|
|
|
Steve Kiraly (SteveKi) 02-Feb-1997
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
#ifndef _SHELLEXT_HXX
|
|
#define _SHELLEXT_HXX
|
|
|
|
|
|
/********************************************************************
|
|
|
|
TClassFactory defines a shell extension class factory object.
|
|
|
|
********************************************************************/
|
|
QITABLE_DECLARE(TClassFactory)
|
|
class TClassFactory: public CUnknownMT<QITABLE_GET(TClassFactory)>, // MT impl. of IUnknown
|
|
public IClassFactory
|
|
{
|
|
public:
|
|
TClassFactory(
|
|
VOID
|
|
);
|
|
|
|
~TClassFactory(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// IUnknown methods
|
|
//
|
|
IMPLEMENT_IUNKNOWN()
|
|
|
|
//
|
|
// IClassFactory methods
|
|
//
|
|
STDMETHODIMP
|
|
CreateInstance(
|
|
LPUNKNOWN,
|
|
REFIID,
|
|
LPVOID *
|
|
);
|
|
|
|
STDMETHODIMP
|
|
LockServer(
|
|
BOOL
|
|
);
|
|
};
|
|
|
|
/********************************************************************
|
|
|
|
TShellExtension defines the context menu shell extension object.
|
|
|
|
********************************************************************/
|
|
|
|
QITABLE_DECLARE(TShellExtension)
|
|
class TShellExtension: public CUnknownMT<QITABLE_GET(TShellExtension)>, // MT impl. of IUnknown
|
|
public IShellExtInit,
|
|
public IContextMenu,
|
|
public IShellPropSheetExt,
|
|
public IDsFolderProperties,
|
|
public IDsPrinterProperties,
|
|
public IFindPrinter,
|
|
public IPhysicalLocation,
|
|
public IPrnStream,
|
|
public IStream,
|
|
public IPrintUIServices
|
|
{
|
|
|
|
public:
|
|
TShellExtension(
|
|
VOID
|
|
);
|
|
|
|
~TShellExtension(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// IUnknown methods
|
|
//
|
|
IMPLEMENT_IUNKNOWN()
|
|
|
|
protected:
|
|
LPDATAOBJECT _lpdobj;
|
|
|
|
public:
|
|
|
|
/********************************************************************
|
|
|
|
IShellExtInit member functions.
|
|
|
|
********************************************************************/
|
|
|
|
STDMETHODIMP
|
|
Initialize(
|
|
LPCITEMIDLIST pidlFolder,
|
|
LPDATAOBJECT lpdobj,
|
|
HKEY hKeyProgID
|
|
);
|
|
|
|
public:
|
|
|
|
/********************************************************************
|
|
|
|
IShellPropSheetExt member functions.
|
|
|
|
********************************************************************/
|
|
|
|
STDMETHODIMP
|
|
AddPages(
|
|
LPFNADDPROPSHEETPAGE lpfnAddPage,
|
|
LPARAM lParam
|
|
);
|
|
|
|
STDMETHODIMP
|
|
ReplacePage(
|
|
UINT uPageID,
|
|
LPFNADDPROPSHEETPAGE lpfnReplaceWith,
|
|
LPARAM lParam
|
|
);
|
|
|
|
private:
|
|
|
|
TLocationPropertySheetFrontEnd *_pLocationPropertySheet;
|
|
|
|
/********************************************************************
|
|
|
|
IContextMenu member functions.
|
|
|
|
********************************************************************/
|
|
|
|
public:
|
|
|
|
STDMETHODIMP
|
|
QueryContextMenu(
|
|
HMENU hMenu,
|
|
UINT indexMenu,
|
|
UINT idCmdFirst,
|
|
UINT idCmdLast,
|
|
UINT uFlags
|
|
);
|
|
|
|
STDMETHODIMP
|
|
InvokeCommand(
|
|
LPCMINVOKECOMMANDINFO lpcmi
|
|
);
|
|
|
|
STDMETHODIMP
|
|
GetCommandString(
|
|
UINT_PTR idCmd,
|
|
UINT uFlags,
|
|
UINT *reserved,
|
|
LPSTR pszName,
|
|
UINT cchMax
|
|
);
|
|
|
|
private:
|
|
|
|
//
|
|
// Context menu format enumeration.
|
|
//
|
|
enum {
|
|
k_CMF_NORMAL,
|
|
k_CMF_VERBSONLY,
|
|
k_CMF_EXPLORE,
|
|
k_CMF_DEFAULTONLY,
|
|
kUnknown,
|
|
};
|
|
|
|
UINT
|
|
ContextMenuFormatToNumeric(
|
|
UINT uFlags
|
|
) const;
|
|
|
|
BOOL
|
|
bIsAddPrinterWizard(
|
|
VOID
|
|
) const;
|
|
|
|
BOOL
|
|
bGetContextName(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
bGetDisplayName(
|
|
LPCITEMIDLIST pidlContainer,
|
|
LPCITEMIDLIST pidl,
|
|
LPTSTR pszDisplayName,
|
|
UINT cchSize
|
|
);
|
|
|
|
TCHAR _szContextName[kPrinterBufMax];
|
|
UINT _cItem;
|
|
|
|
public:
|
|
|
|
/********************************************************************
|
|
|
|
IDsFolderProperties member functions.
|
|
|
|
********************************************************************/
|
|
|
|
STDMETHODIMP
|
|
ShowProperties(
|
|
IN HWND hwndParent,
|
|
IN IDataObject *pDataObject
|
|
);
|
|
|
|
/********************************************************************
|
|
|
|
IDsPrinterProperties member functions.
|
|
|
|
********************************************************************/
|
|
|
|
STDMETHODIMP
|
|
ShowProperties(
|
|
IN HWND hwndParent,
|
|
IN LPCTSTR pszDsPath,
|
|
IN OUT PBOOL pbDisplayed
|
|
);
|
|
|
|
/********************************************************************
|
|
|
|
IFindPrinter member functions.
|
|
|
|
********************************************************************/
|
|
|
|
STDMETHODIMP
|
|
FindPrinter(
|
|
IN HWND hwnd,
|
|
IN OUT LPTSTR pszBuffer,
|
|
IN UINT *puSize
|
|
);
|
|
|
|
/********************************************************************
|
|
|
|
IPhysicalLocation member functions.
|
|
|
|
********************************************************************/
|
|
|
|
STDMETHODIMP
|
|
DiscoverPhysicalLocation(
|
|
VOID
|
|
);
|
|
|
|
STDMETHODIMP
|
|
GetExactPhysicalLocation(
|
|
IN OUT BSTR *pbsLocation
|
|
);
|
|
|
|
STDMETHODIMP
|
|
GetSearchPhysicalLocation(
|
|
IN OUT BSTR *pbsLocation
|
|
);
|
|
|
|
STDMETHODIMP
|
|
GetUserPhysicalLocation(
|
|
IN OUT BSTR *pbsLocation
|
|
);
|
|
|
|
STDMETHODIMP
|
|
GetMachinePhysicalLocation(
|
|
IN OUT BSTR *pbsLocation
|
|
);
|
|
|
|
STDMETHODIMP
|
|
GetSubnetPhysicalLocation(
|
|
IN OUT BSTR *pbsLocation
|
|
);
|
|
|
|
STDMETHODIMP
|
|
GetSitePhysicalLocation(
|
|
IN OUT BSTR *pbsLocation
|
|
);
|
|
|
|
STDMETHODIMP
|
|
BrowseForLocation(
|
|
IN HWND hParent,
|
|
IN BSTR bsDefault,
|
|
IN OUT BSTR *pbsLocation
|
|
);
|
|
|
|
STDMETHODIMP
|
|
ShowPhysicalLocationUI(
|
|
VOID
|
|
);
|
|
|
|
private:
|
|
|
|
TPhysicalLocation *_pPhysicalLocation;
|
|
TFindLocDlg *_pLocationDlg;
|
|
|
|
CRefPtrCOM<IPrnStream> m_spPrnStream;
|
|
CRefPtrCOM<IStream> m_spStream;
|
|
|
|
HRESULT
|
|
CheckToCreateStreams(
|
|
VOID
|
|
);
|
|
|
|
/********************************************************************
|
|
|
|
IPrnStream member functions.
|
|
|
|
********************************************************************/
|
|
public:
|
|
|
|
STDMETHODIMP
|
|
BindPrinterAndFile(
|
|
IN LPCTSTR pszPrinter,
|
|
LPCTSTR pszFile
|
|
);
|
|
|
|
STDMETHODIMP
|
|
StorePrinterInfo(
|
|
IN DWORD Flag
|
|
);
|
|
|
|
STDMETHODIMP
|
|
RestorePrinterInfo(
|
|
IN DWORD Flag
|
|
);
|
|
|
|
STDMETHODIMP
|
|
QueryPrinterInfo(
|
|
IN PrinterPersistentQueryFlag Flag,
|
|
OUT PersistentInfo *pPrstInfo
|
|
);
|
|
|
|
|
|
/********************************************************************
|
|
|
|
IStream member functions.
|
|
|
|
********************************************************************/
|
|
|
|
public:
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
Read( // IMPLEMENTED
|
|
VOID * pv,
|
|
ULONG cb,
|
|
ULONG * pcbRead
|
|
);
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
Write( //IMPLEMENTED
|
|
VOID const* pv,
|
|
ULONG cb,
|
|
ULONG * pcbWritten
|
|
);
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
Seek( //IMPLEMENTED
|
|
LARGE_INTEGER dlibMove,
|
|
DWORD dwOrigin,
|
|
ULARGE_INTEGER * plibNewPosition
|
|
);
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
SetSize(
|
|
ULARGE_INTEGER nSize
|
|
);
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
CopyTo( //NOT_IMPLEMENTED
|
|
LPSTREAM pStrm,
|
|
ULARGE_INTEGER cb,
|
|
ULARGE_INTEGER * pcbRead,
|
|
ULARGE_INTEGER * pcbWritten
|
|
);
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
Commit( //NOT_IMPLEMENTED
|
|
IN DWORD dwFlags
|
|
);
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
Revert( //NOT_IMPLEMENTED
|
|
VOID
|
|
);
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
LockRegion( //NOT_IMPLEMENTED
|
|
ULARGE_INTEGER cbOffset,
|
|
ULARGE_INTEGER cbLength,
|
|
DWORD dwFlags
|
|
);
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
UnlockRegion( //NOT_IMPLEMENTED
|
|
ULARGE_INTEGER cbOffset,
|
|
ULARGE_INTEGER cbLength,
|
|
DWORD dwFlags
|
|
);
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
Stat( //NOT_IMPLEMENTED
|
|
STATSTG * pStatStg,
|
|
DWORD dwFlags
|
|
);
|
|
|
|
HRESULT STDMETHODCALLTYPE
|
|
Clone( //NOT_IMPLEMENTED
|
|
OUT LPSTREAM * ppStrm
|
|
);
|
|
|
|
/********************************************************************
|
|
|
|
IPrintUIServices member functions.
|
|
|
|
********************************************************************/
|
|
|
|
STDMETHODIMP
|
|
GenerateShareName(
|
|
LPCTSTR lpszServer,
|
|
LPCTSTR lpszBaseName,
|
|
LPTSTR lpszOut,
|
|
int cchMaxChars
|
|
);
|
|
};
|
|
|
|
|
|
#endif
|
|
|