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
|
||
|
|