Created
September 17, 2024 04:34
-
-
Save bg1bgst333/97db704f9bcb47c9c3a6c54fccd23605 to your computer and use it in GitHub Desktop.
Application#Excel
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ヘッダのインクルード | |
// 既定のヘッダ | |
#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をセット. | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 二重インクルード防止 | |
#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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ヘッダファイルのインクルード | |
// 既定のヘッダ | |
#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