// CPPClient01.cpp : Defines the entry point for the console application.
using namespace SimpleCOMObjectLib;
// Generic CreateInstance() templated function to help in generic object creation.
template <class SmartPtrClass>
bool CreateInstance(LPCTSTR lpszProgID, SmartPtrClass& spSmartPtrReceiver, DWORD dwClsContext = CLSCTX_ALL)
HRESULT hrRetTemp = S_OK;
bool bRet = false;
hrRetTemp = CLSIDFromProgID
(LPCOLESTR)bstProgID, //Pointer to the ProgID
(LPCLSID)&clsid //Pointer to the CLSID
if (hrRetTemp == S_OK)
if (SUCCEEDED(spSmartPtrReceiver.CreateInstance(clsid, NULL, dwClsContext)))
bRet = true;
bRet = false;
int _tmain(int argc, _TCHAR* argv)
// ISimpleCOMObjectPtr is a smart pointer class which will manage
// a pointer to the COM interface ISimpleCOMObject for us.
ISimpleCOMObjectPtr spISimpleCOMObject_CSharpExeImpl = NULL;
// We create an instance of an implementation of the ISimpleCOMObject interface
// as provided by the COM class whose CLSID is synonymous
// with the ProgID "SimpleCOMObject_CSharpExeImpl.SimpleCOMObject".
CreateInstance<ISimpleCOMObjectPtr>("SimpleCOMObject_CSharpExeImpl.SimpleCOMObject", spISimpleCOMObject_CSharpExeImpl, CLSCTX_INPROC_SERVER /* CLSCTX_LOCAL_SERVER */);
spISimpleCOMObject_CSharpExeImpl -> put_LongProperty(1000);
spISimpleCOMObject_CSharpExeImpl -> Method01(_bstr_t("C# Exe Implementation. The Long Property Value Is : "));
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)
Man throws away trove of Bitcoin worth $7.5 million