diff options
Diffstat (limited to 'src/VisVim/OleAut.h')
-rw-r--r-- | src/VisVim/OleAut.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/VisVim/OleAut.h b/src/VisVim/OleAut.h new file mode 100644 index 000000000..37de8078b --- /dev/null +++ b/src/VisVim/OleAut.h @@ -0,0 +1,73 @@ +#ifndef __OLEAUT_H__ +#define __OLEAUT_H__ + +class COleAutomationControl : public CObject +{ + public: + COleAutomationControl (); + ~COleAutomationControl (); + bool CreateObject (char* ProgId); + DISPID GetDispatchId (char* Name); + bool GetProperty (char* Name); + bool GetProperty (DISPID DispatchId); + bool PutProperty (char* Name, LPCTSTR Format, ...); + bool PutProperty (DISPID DispatchId, LPCTSTR Format, ...); + bool Method (char* Name, LPCTSTR Format = NULL, ...); + bool Method (DISPID DispatchId, LPCTSTR Format = NULL, ...); + void DeleteObject (); + void ErrDiag (); + bool IsCreated () + { + return m_pDispatch ? true : false; + } + bool IsAlive (); + HRESULT GetResult () + { + return m_hResult; + } + UINT GetErrArgNr () + { + return m_nErrArg; + } + EXCEPINFO* GetExceptionInfo () + { + return &m_ExceptionInfo; + } + LPVARIANT GetResultVariant () + { + return &m_VariantResult; + } + + protected: + bool Invoke (WORD Flags, char* Name, LPCTSTR Format, va_list ArgList); + bool Invoke (WORD Flags, DISPID DispatchId, LPCTSTR Format, va_list ArgList); + + protected: + IDispatch* m_pDispatch; + HRESULT m_hResult; + UINT m_nErrArg; + EXCEPINFO m_ExceptionInfo; + VARIANTARG m_VariantResult; +}; + +#ifdef UNICODE + #define FROM_OLE_STRING(str) str + #define FROM_OLE_STRING_BUF(str,buf) str + #define TO_OLE_STR(str) str + #define TO_OLE_STR_BUF(str,buf) str + #define MAX_OLE_STR 1 +#else + #define FROM_OLE_STR(str) ConvertToAnsi(str) + #define FROM_OLE_STR_BUF(str,buf) ConvertToAnsiBuf(str,buf) + char* ConvertToAnsi (OLECHAR* sUnicode); + char* ConvertToAnsiBuf (OLECHAR* sUnicode, char* Buf); + #define TO_OLE_STR(str) ConvertToUnicode(str) + #define TO_OLE_STR_BUF(str,buf) ConvertToUnicodeBuf(str,buf) + OLECHAR* ConvertToUnicode (char* sAscii); + OLECHAR* ConvertToUnicodeBuf (char* sAscii, OLECHAR* Buf); + // Maximum length of string that can be converted between Ansi & Unicode + #define MAX_OLE_STR 500 +#endif + + +#endif // __OLEAUT_H__ |