[[TableOfContents]] == COM 모듈만으로 COM 사용하기 == === IDL íŒŒì¼ ì¶”ì¶œí•˜ê¸° === 1. Visual Studio ë„구 OLE Viewer를 실행한다. (VS Command prompt>oleview) 2. (OLE/COM Object Viewer)File>TypeLib> COM dll 열기 3. File>Save As> xxx.IDLë¡œ ì €ìž¥ === IDL 파ì¼ë¡œ TLB íŒŒì¼ ìƒì„±í•˜ê¸° === 1. VS Command prompt> midl /mktyplib203 xxx.idl # ìƒì„±ì´ 안 ë˜ê±°ë‚˜ 오류는 주로 경로 ë¬¸ì œ, 아니면 ìƒì„±ëœ idlì„ ë©”ëª¨ìž¥ìœ¼ë¡œ ì—´ì–´ 오류가 없는지 í™•ì¸ -> ê´€ë ¨ 오류 찾아 ì œê±°) === TLB íŒŒì¼ import === {{{#!gcode #import "xxx.tlb" named_guids using namespace XXXX; }}} === MFCì—ì„œ COM ê°ì²´ ìƒì„± === {{{#!gcode CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); }}} í˜¹ì€ {{{#!gcode if (!AfxOleInit()) { AfxMessageBox(_T("OLE_INIT_FAILED")); return FALSE; } }}} ê°€ 호출ë˜ì–´ì•¼ 함. ì˜ˆì œì½”ë“œ) {{{#!gcode IWorkPackagerADK* objWorkPackager = NULL; HRESULT hr = CoCreateInstance(CLSID_WorkPackagerADK, NULL, CLSCTX_INPROC_SERVER, IID_IWorkPackagerADK, reinterpret_cast<LPVOID*>(&objWorkPackager)); if (SUCCEEDED(hr)) { objWorkPackager->OverwriteFlag = 1; objWorkPackager->IsTemp = 0; if (objWorkPackager->GetFileType(_T("C:\\drmtest\\secure\\proxy20111005.txt")) == 103) { CString csOrgFilePath = theApp.m_arFileList.GetAt(i); objWorkPackager->DoExtract(_T("C:\\Program Files\\Fasoo DRM\\CW-Packager\\fsdinit"), _T("0000000000000000"), csOrgFilePath.GetBuffer(0), sFilePath.GetBuffer(0)); sFilePath = _T("(null)"); } } }}}