우선 자세한 정보는 여기에서...
http://dcple.com/blog/tag/%EB%A6%AC%EC%86%8C%EC%8A%A4
아래코드는 파일버전을 얻어와서, 해당 파일의 버전이 특정 값보다 작으면 웹브라우저를 띄우는 코드이다. 웹브라우저 띄우는 코드는, 내 블로그 어딘가에 있기도 하다.
DWORD dwHandle;
LPVOID ptr;
UINT uLength;
DWORD dwVersionInfoSize = GetFileVersionInfoSize(szModuleName, &dwHandle);
if(dwVersionInfoSize != 0)
{
LPVOID pFileInfo = (LPVOID) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwVersionInfoSize);
GetFileVersionInfo(szModuleName, dwHandle, dwVersionInfoSize, pFileInfo);
VerQueryValue(pFileInfo, TEXT("\\VarFileInfo\\Translation"), &ptr, &uLength);
WORD *id = (WORD*) ptr;
TCHAR szString[255];
_stprintf(szString, _T("\\StringFileInfo\\%04X%04X\\ProductVersion"), id[0], id[1]);
VerQueryValue(pFileInfo, szString, &ptr, &uLength);
if(uLength != 0)
{
TCHAR sOut[255];
memset(sOut, 0x00, 255);
_tcscpy(sOut, (TCHAR *) ptr); //sOut에 파일버전이 들어가있음.
HeapFree(GetProcessHeap(), 0, pFileInfo);
if(_tcscmp(sOut,_T("1, 0, 812, 3110")) < 0)
{
if(MessageBox(NULL,_T("최신버전 재설치가 필요합니다. 다운로드 페이지로 이동하시겠습니까?"),_T("NetsyncBrowser3.5"),MB_OKCANCEL) == IDOK)
{
IWebBrowser2* pWebBrowser = NULL;
s = _T("웹주소");
BSTR bstrURL = s.AllocSysString();
BSTR bstrHeader = NULL;
VARIANT vtPostData = {0};
VARIANT vtEmpty;
VARIANT vtHeader;
HRESULT hr = ::CoCreateInstance( __uuidof(InternetExplorer), NULL, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
__uuidof(IWebBrowser2), reinterpret_cast<LPVOID *>(&pWebBrowser) );
if(hr != S_OK)
{
AfxMessageBox(_T("웹브라우저를 실행시키지 못했습니다."));
return FALSE;
}
VariantInit( &vtEmpty );
VariantInit( &vtPostData );
VariantInit( &vtHeader );
V_VT( &vtHeader ) = VT_BSTR;
V_BSTR( &vtHeader ) = bstrHeader;
pWebBrowser->put_Visible ( (VARIANT_BOOL) TRUE );
pWebBrowser->Navigate( bstrURL, &vtEmpty, &vtEmpty, &vtPostData, &vtHeader );
HWND hIE;
hr=pWebBrowser->get_HWND((long *)&hIE);
if(hr == S_OK)
::SetWindowPos(hIE, HWND_TOPMOST, 0, 0,0 ,0 , SWP_NOMOVE | SWP_NOSIZE);
return FALSE;
}
else
return FALSE;
}
}
else
{
HeapFree(GetProcessHeap(), 0, pFileInfo);
}
}
우선 등록해놓고 나중에 공부해야지~
댓글 없음:
댓글 쓰기