view src/VisVim/OleAut.h @ 19077:568cce19fd2b v8.2.0099

patch 8.2.0099: use of NULL pointer when out of memory Commit: https://github.com/vim/vim/commit/8b7aa2f9b238df916c161cdacda032c25d72a0ae Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jan 7 21:05:49 2020 +0100 patch 8.2.0099: use of NULL pointer when out of memory Problem: Use of NULL pointer when out of memory. Solution: Check for NULL pointer. (Dominique Pelle, closes https://github.com/vim/vim/issues/5449)
author Bram Moolenaar <Bram@vim.org>
date Tue, 07 Jan 2020 21:15:06 +0100
parents 3fc0f57ecb91
children
line wrap: on
line source

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