0
저는 VB에서 초보자입니다. html 파일을 이미지로 변환하고 vg ++에서 png로 저장하려고합니다. 이제 html을 비트 맵으로 변환하고 CImage의 저장 함수를 사용하여 저장합니다. Windows 2008에서이 응용 프로그램을 실행하고 싶습니다. 응용 프로그램을 수동으로 실행할 때 제대로 작동합니다. 스케줄 작업을 통해 실행해야합니다. 그러나 응용 프로그램이 일정 작업을 통해 실행되면 이미지가 만들어지지 않습니다.CImage를 사용하지 않고 vC++에서 비트 맵을 png로 저장하는 방법
이 문제를 어떻게 극복 할 수 있습니까?
이
당신은 대답 같은 거 아니에요하지만, 거기에 내 코드BOOL CCreateHtml::CreateImage(IHTMLDocument2 *pDoc,LPCTSTR szDestFilename,CSize srcSize){
IHTMLDocument3* pDocument3 = NULL;
IHTMLDocument2* pDocument = NULL;
IHTMLElement2* pElement2 = NULL;
IHTMLElement* pElement = NULL;
IViewObject2* pViewObject = NULL;
IDispatch* pDispatch = NULL;
IViewObject* pViewObj = NULL;
HRESULT hr;
long bodyHeight;
long bodyWidth;
long rootHeight;
long rootWidth;
long height;
long width;
CImage img;
if(FAILED(m_pBrowser->get_Document(&pDispatch)))
return FALSE;
if(FAILED(pDispatch->QueryInterface(IID_IHTMLDocument2,(void**)&pDocument)))
return FALSE;
if(FAILED(pDocument->get_body(&pElement)))
return FALSE;
if(FAILED(pElement->QueryInterface(IID_IHTMLElement2,(void**)&pElement2)))
return FALSE;
if(FAILED(pElement2->get_scrollHeight(&bodyHeight)))
return FALSE;
if(FAILED(pElement2->get_scrollWidth(&bodyWidth)))
return FALSE;
if(FAILED(pDispatch->QueryInterface(IID_IHTMLDocument3,(void**)&pDocument3)))
return FALSE;
if(FAILED(pDocument3->get_documentElement(&pElement)))
return FALSE;
if(FAILED(pElement->QueryInterface(IID_IHTMLElement2,(void**)&pElement2)))
return FALSE;
if(FAILED(pElement2->get_scrollHeight(&rootHeight)))
return FALSE;
if(FAILED(pElement2->get_scrollWidth(&rootWidth)))
return FALSE;
HBITMAP m_hBmp;
width = bodyWidth;
height = rootHeight > bodyHeight ? rootHeight : bodyHeight;
if(width > 2000)
width = 2000;
if(height > 2000)
height = 2000;
MoveWindow(0,0,width,height,TRUE);
::MoveWindow(m_hwndWebBrowser,0,0,width,height,TRUE);
if(FAILED(m_pBrowser->QueryInterface(IID_IViewObject2,(void**)&pViewObject)))
return FALSE;
CDC *cdcMain = GetDC();
HDC hdcMain = *cdcMain;
HDC hdcMem = CreateCompatibleDC(hdcMain);
m_hBmp = CreateCompatibleBitmap(hdcMain,width,height);
SelectObject(hdcMem,m_hBmp);
RECTL rcBounds = { 0, 0, width, height };
hr = pViewObject->Draw(DVASPECT_CONTENT, -1, NULL, NULL,hdcMain,hdcMem, &rcBounds, NULL, NULL, 0);
img.Attach(m_hBmp);
if(!hr ==img.Save(szDestFilename))
return FALSE;
img.Detach();
img.Destroy();
pViewObject->Release();
return TRUE;
}