Skip to content

Instantly share code, notes, and snippets.

@bg1bgst333
Created September 17, 2024 04:34
Show Gist options
  • Save bg1bgst333/97db704f9bcb47c9c3a6c54fccd23605 to your computer and use it in GitHub Desktop.
Save bg1bgst333/97db704f9bcb47c9c3a6c54fccd23605 to your computer and use it in GitHub Desktop.
Application#Excel
// ヘッダのインクルード
// 既定のヘッダ
#include <windows.h> // 標準WindowsAPI
#include <tchar.h> // TCHAR対応
// 独自のヘッダ
#include "Application.h" // Word::CApplication
// コンストラクタCApplication
Excel::CApplication::CApplication() {
}
// staticな生成関数CreateInstance.
Excel::CApplication * Excel::CApplication::CreateInstance() {
// 変数の宣言と初期化.
CLSID clsid; // CLSIDを格納するclsid.
IDispatch * pDispatch = NULL; // IDispatchポインタpDispatchをNULLで初期化.
// "Excel.Application"のCLSIDの取得.
HRESULT hr = CLSIDFromProgID(_T("Excel.Application"), &clsid); // CLSIDFromProgIDで"Excel.Application"のclsidを取得.
if (FAILED(hr)) { // 失敗.
return NULL;
}
// IDispatchポインタpDispatchの取得.
hr = CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, IID_PPV_ARGS(&pDispatch)); // CoCreateInstanceで, pDispatchを生成.
if (FAILED(hr)) { // 失敗.
return NULL;
}
// 成功.
CApplication *pApplication = new CApplication();
pApplication->m_pDispatch = pDispatch;
return pApplication;
}
// デストラクタ~CApplication
Excel::CApplication::~CApplication() {
// m_pDispatchの解放.
if (m_pDispatch != NULL) { // m_pDispatchがNULLでなければ.
m_pDispatch->Release(); // IDispatch::Releaseで解放.
m_pDispatch = NULL; // NULLをセット.
}
}
// 二重インクルード防止
#ifndef __EXCEL__APPLICATION_H__
#define __EXCEL__APPLICATION_H__
// 名前空間Excelの定義
namespace Excel {
// アプリケーションクラスCApplicationの定義
class CApplication {
// privateメンバ
private:
// privateメンバ変数
IDispatch *m_pDispatch; // IDispatchポインタm_pDispatch.
// privateメンバ関数
// コンストラクタ
CApplication(); // コンストラクタCApplication(newで生成不可.)
// publicメンバ
public:
// publicメンバ関数
// staticメンバ関数
static CApplication * CreateInstance(); // staticな生成関数CreateInstance.
// デストラクタ
virtual ~CApplication(); // デストラクタ~CApplication
};
}
#endif
// ヘッダファイルのインクルード
// 既定のヘッダ
#include <windows.h> // 標準WindowsAPI
#include <tchar.h> // TCHAR対応
// 独自のヘッダ
#include "Excel/Application.h" // Excel::CApplication
// _tmain関数の定義
int _tmain(int argc, TCHAR *argv[]) { // main関数のTCHAR版.
// COMの初期化.
CoInitialize(NULL); // CoInitializeでCOMを初期化.
// Excel::CApplicationの生成
Excel::CApplication *pApplication = Excel::CApplication::CreateInstance(); // Excel::CApplication::CreateInstanceで作成.
// 取得したpApplicationを出力.
_tprintf(_T("pApplication = 0x%08x\n"), (unsigned long)pApplication); // pApplicationを出力.
// pApplicationの破棄.
if (pApplication != NULL) {
delete pApplication;
}
// COMの終了処理.
CoUninitialize(); // CoUninitializeで終了処理.
// プログラムの終了.
return 0; // 0を返して終了.
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment