본문 바로가기

C++/Reference

[C++] COM 연동 샘플 소스

반응형
#import "fileName.tlb" no_namespace rename ("GetUserName","GetUserNameA")

void Function()
{
	// 프로젝트 폴더의 소스 파일이 있는 폴더 내 'fileName.tlb' 파일 수정
	// 해당 'fileName.tlb' 파일에 맞춰서 'INTERFACE', 'COCLASS' 수정
	// IDL 파일에서 interface INTERFACE : IDispatch
	// IDL 파일에서 coclass COCLASS
	INTERFACE * interface = NULL;

	if (interface == NULL)
	{
		HRESULT hr;

		hr = ::CoInitialize(NULL);

		if (SUCCEEDED(hr))
		{
			hr = ::CoCreateInstance(__uuidof(COCLASS), NULL, CLSCTX_LOCAL_SERVER, __uuidof(INTERFACE), (void**)&interface);

			if (FAILED(hr))
			{
				MessageBoxA(NULL, "COM 객체 생성 실패", "lpCaption", MB_OK);

				return;
			}
			else
			{
				interface->FuncCall();

				::CoUninitialize();
			}
		}
	}

	return;
}
반응형