Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

166 lines
5.3 KiB

#ifndef _CONFLNK_HPP_
#define _CONFLNK_HPP_
// ConfLink flags
typedef enum _conflnkflags
{
CONFLNK_FL_DIRTY = 0x0001,
ALL_CONFLNK_FLAGS = CONFLNK_FL_DIRTY
}
CONFLNKFLAGS;
class CConfLink :
public RefCount,
public IDataObject,
public IPersistFile,
public IPersistStream,
public IShellExtInit,
// public IShellPropSheetExt,
public IConferenceLink
{
private:
DWORD m_dwFlags;
DWORD m_dwTransport;
DWORD m_dwCallFlags;
PSTR m_pszFile;
PSTR m_pszName;
PSTR m_pszAddress;
PSTR m_pszRemoteConfName;
// Data transfer
DWORD STDMETHODCALLTYPE GetFileContentsSize(void);
HRESULT STDMETHODCALLTYPE TransferFileContents(PFORMATETC pfmtetc, PSTGMEDIUM pstgmed);
#if 0
HRESULT STDMETHODCALLTYPE TransferText(PFORMATETC pfmtetc, PSTGMEDIUM pstgmed);
HRESULT STDMETHODCALLTYPE TransferFileGroupDescriptor(PFORMATETC pfmtetc, PSTGMEDIUM pstgmed);
HRESULT STDMETHODCALLTYPE TransferConfLink(PFORMATETC pfmtetc, PSTGMEDIUM pstgmed);
#endif // 0
public:
CConfLink(OBJECTDESTROYEDPROC);
~CConfLink(void);
// IDataObject methods
HRESULT STDMETHODCALLTYPE GetData(PFORMATETC pfmtetcIn, PSTGMEDIUM pstgmed);
HRESULT STDMETHODCALLTYPE GetDataHere(PFORMATETC pfmtetc, PSTGMEDIUM pstgpmed);
HRESULT STDMETHODCALLTYPE QueryGetData(PFORMATETC pfmtetc);
HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(PFORMATETC pfmtetcIn, PFORMATETC pfmtetcOut);
HRESULT STDMETHODCALLTYPE SetData(PFORMATETC pfmtetc, PSTGMEDIUM pstgmed, BOOL bRelease);
HRESULT STDMETHODCALLTYPE EnumFormatEtc(DWORD dwDirection, PIEnumFORMATETC *ppienumFormatEtc);
HRESULT STDMETHODCALLTYPE DAdvise(PFORMATETC pfmtetc, DWORD dwAdviseFlags, PIAdviseSink piadvsink, PDWORD pdwConnection);
HRESULT STDMETHODCALLTYPE DUnadvise(DWORD dwConnection);
HRESULT STDMETHODCALLTYPE EnumDAdvise(PIEnumSTATDATA *ppienumStatData);
// IPersist methods
HRESULT STDMETHODCALLTYPE GetClassID(PCLSID pclsid);
// IPersistFile methods
HRESULT STDMETHODCALLTYPE IsDirty(void);
HRESULT STDMETHODCALLTYPE Save(LPCOLESTR pcwszFileName, BOOL bRemember);
HRESULT STDMETHODCALLTYPE SaveCompleted(LPCOLESTR pcwszFileName);
HRESULT STDMETHODCALLTYPE Load(LPCOLESTR pcwszFileName, DWORD dwMode);
HRESULT STDMETHODCALLTYPE GetCurFile(LPOLESTR *ppwszFileName);
// IPersistStream methods
HRESULT STDMETHODCALLTYPE Save(PIStream pistr, BOOL bClearDirty);
HRESULT STDMETHODCALLTYPE Load(PIStream pistr);
HRESULT STDMETHODCALLTYPE GetSizeMax(PULARGE_INTEGER pcbSize);
// IShellExtInit methods
HRESULT STDMETHODCALLTYPE Initialize(LPCITEMIDLIST pcidlFolder, LPDATAOBJECT pidobj, HKEY hkeyProgID);
// IShellPropSheetExt methods
// HRESULT STDMETHODCALLTYPE AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam);
// HRESULT STDMETHODCALLTYPE ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE pfnReplaceWith, LPARAM lParam);
// IConferenceLink methods
HRESULT STDMETHODCALLTYPE SetName(PCSTR pcszName);
HRESULT STDMETHODCALLTYPE GetName(PSTR *ppszName);
HRESULT STDMETHODCALLTYPE SetAddress(PCSTR pcszAddress);
HRESULT STDMETHODCALLTYPE GetAddress(PSTR *ppszAddress);
HRESULT STDMETHODCALLTYPE SetRemoteConfName(PCSTR pcszRemoteConfName);
HRESULT STDMETHODCALLTYPE GetRemoteConfName(PSTR *ppszRemoteConfName);
HRESULT STDMETHODCALLTYPE SetCallFlags(DWORD dwCallFlags);
HRESULT STDMETHODCALLTYPE GetCallFlags(DWORD *pdwCallFlags);
HRESULT STDMETHODCALLTYPE SetTransport(DWORD dwTransport);
HRESULT STDMETHODCALLTYPE GetTransport(DWORD *pdwTransport);
HRESULT STDMETHODCALLTYPE InvokeCommand(PCLINVOKECOMMANDINFO pclici);
// IUnknown methods
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, PVOID *ppvObj);
ULONG STDMETHODCALLTYPE AddRef(void);
ULONG STDMETHODCALLTYPE Release(void);
// other methods
HRESULT STDMETHODCALLTYPE SaveToFile(PCSTR pcszFile, BOOL bRemember);
HRESULT STDMETHODCALLTYPE LoadFromFile(PCSTR pcszFile, BOOL bRemember);
HRESULT STDMETHODCALLTYPE GetCurFile(PSTR pszFile, UINT ucbLen);
HRESULT STDMETHODCALLTYPE Dirty(BOOL bDirty);
#ifdef DEBUG
void STDMETHODCALLTYPE Dump(void);
#endif
// friends
#ifdef DEBUG
friend BOOL IsValidPCConfLink(const CConfLink *pcConfLink);
#endif
};
HRESULT
shellCallto
(
const TCHAR * const url,
const bool notifyOnError
);
DECLARE_STANDARD_TYPES(CConfLink);
// in dataobj.cpp:
PUBLIC_CODE BOOL InitDataObjectModule(void);
// in conflnk.cpp:
PUBLIC_CODE BOOL AnyMeat(PCSTR pcsz);
PUBLIC_CODE BOOL DataCopy(PCBYTE pcbyteSrc, ULONG ulcbLen, PBYTE *ppbyteDest);
PUBLIC_CODE BOOL StringCopy(PCSTR pcszSrc, PSTR *ppszCopy);
PUBLIC_CODE void MyLStrCpyN(PSTR pszDest, PCSTR pcszSrc, int ncb);
PUBLIC_CODE BOOL GetConfLinkDefaultVerb(PSTR pszDefaultVerbBuf,
UINT ucDefaultVerbBufLen);
PUBLIC_CODE LRESULT GetRegKeyValue(HKEY hkeyParent, PCSTR pcszSubKey,
PCSTR pcszValue, PDWORD pdwValueType,
PBYTE pbyteBuf, PDWORD pdwcbBufLen);
PUBLIC_CODE LRESULT GetRegKeyStringValue( HKEY hkeyParent, PCSTR pcszSubKey,
PCSTR pcszValue, PSTR pszBuf,
PDWORD pdwcbBufLen);
PUBLIC_CODE LRESULT GetDefaultRegKeyValue( HKEY hkeyParent, PCSTR pcszSubKey,
PSTR pszBuf, PDWORD pdwcbBufLen);
PUBLIC_CODE BOOL GetClassDefaultVerb( PCSTR pcszClass, PSTR pszDefaultVerbBuf,
UINT ucDefaultVerbBufLen);
PUBLIC_CODE HRESULT MyReleaseStgMedium(PSTGMEDIUM pstgmed);
extern "C"
{
void WINAPI OpenConfLink(HWND hwndParent, HINSTANCE hinst, PSTR pszCmdLine, int nShowCmd);
}
#endif // _CONFLNK_HPP_