2011-07-26 4 views
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; 

}

답변

1

아니 빌드 - 인 PNG 이미지에 대한 지원, 당신은 같은 외부 라이브러리를 사용해야합니다 없습니다 pnglib

행운을 빌어 요!

관련 문제