SOL9 2.0 Class: OfficeApplet

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * OfficeApplet.h 
 * Copyright (c) 2012 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


//2010/04/06
//2011/09/06 Updated for Office2010
#pragma once

#include <sol/Object.h>

//2011/09/06
#ifdef WIN64
#ifdef OFFICE2010
#import "C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\MSO.DLL" \
    rename("DocumentProperties","DocumentPropertiesXL") \
    rename("RGB","RBGXL") 
#else 
#import "C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE12\MSO.DLL" \
    rename("DocumentProperties","DocumentPropertiesXL") \
    rename("RGB","RBGXL") 

#endif
#import "C:\Program Files (x86)\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" 

#else
#ifdef OFFICE2010
#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE14\MSO.DLL" \
    rename("DocumentProperties","DocumentPropertiesXL") \
    rename("RGB","RBGXL") 
#else 
#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE12\MSO.DLL" \
    rename("DocumentProperties","DocumentPropertiesXL") \
    rename("RGB","RBGXL") 
#endif
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" 

#endif


namespace SOL {

class OfficeApplet :public Object {

public:
    OfficeApplet()
    {
        HRESULT hr = OleInitialize(NULL);
        if (FAILED(hr)) {
            throw hr;
        }
    }

public:
    ~OfficeApplet()
    {
        OleUninitialize();
    }

public:
  
    bool getActiveObject(const wchar_t* application, IDispatch** ppDisp) 
    { 
    
        _bstr_t name = application;
        printf( "OfficeApplication#getActiveObject,1,Start,Application=%s",
            (const char*)name);

        bool rc = false;
        CLSID clsid;
        CLSIDFromProgID(application, &clsid);

        IUnknown *pUnk = NULL;
        *ppDisp = NULL;

        HRESULT hr = GetActiveObject(clsid, NULL, (IUnknown**)&pUnk);
        if(SUCCEEDED(hr)) {
            hr = pUnk->QueryInterface(IID_IDispatch, (void **)ppDisp);
            
            pUnk->Release();

            if (SUCCEEDED(hr)) {
                rc = true;
            } else {
                printf( "OfficeApplet#getActiveObject,1,Not found an interface for active Object for =%s\n",
                (const char*)name);
            }
        } else {
            printf( "OfficeApplet#getActiveObject,2,Failed to GetActiveObject for Application=%s\n",
                (const char*)name);
    
        }
        return rc;
    }

};

}



Last modified: 16 May 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.