社区
网络编程
帖子详情
如何将URLDownloadToFile获取的网页保存成图片!
flybox0384
2006-12-10 09:55:22
URLDownloadToFile获取的网页如何才能保存成图片,或者其他方法!(MFC)
...全文
951
7
打赏
收藏
如何将URLDownloadToFile获取的网页保存成图片!
URLDownloadToFile获取的网页如何才能保存成图片,或者其他方法!(MFC)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
蒋晟
2006-12-11
打赏
举报
回复
You need to wait until DocumentComplete
http://www.codeproject.com/shell/AutomateShellWindow.asp
flybox0384
2006-12-11
打赏
举报
回复
先谢谢两位,但是还有问题!
pWebBrowser->put_Visible(VARIANT_TRUE);
pWebBrowser->Navigate(bstrURL,&vtFlags, &vtEmpty, &vtEmpty, &vtEmpty);
::VariantClear(&vtFlags);
::VariantClear(&vtEmpty);
SysFreeString(bstrURL); // 用完释放
SaveBitmapToFileA(GetIEAsBitmap(pWebBrowser,800,600),GetFilePath());
HBITMAP CMainFrame::GetIEAsBitmap(IWebBrowser2* piWB, INT nWidth, INT nHeight)
{
HBITMAP hbmRet = NULL;
RECT rc;
if (piWB && SetRect(&rc, 0, 0, nWidth, nHeight) && !IsRectEmpty(&rc))
{
if (HDC hDC = ::GetDC(NULL))
{
if (HDC hdcMem = CreateCompatibleDC(hDC))
{
if (HBITMAP hbm = CreateCompatibleBitmap(hDC, nWidth, nHeight))
{
BOOL bValid = FALSE;
if (INT nSaved = SaveDC(hdcMem))
{
if (SelectObject(hdcMem, hbm))
{
bValid = (SUCCEEDED(OleDraw(
piWB, DVASPECT_CONTENT, hdcMem, &rc)));
}
RestoreDC(hdcMem, nSaved);
}
if (!bValid)
DeleteObject(hbm);
else
hbmRet = hbm;
}
DeleteDC(hdcMem);
}
::ReleaseDC(NULL, hDC);
}
}
return hbmRet;
}
int CMainFrame::SaveBitmapToFileA(HBITMAP hBitmap,CString FileName)
{
HDC hDC;
WORD wBitCount;
DWORD dwPaletteSize = 0,dwBmBitsSize,dwDIBSize, dwWritten;
BITMAPFILEHEADER bmfHdr;
BITMAPINFOHEADER bi;
LPBITMAPINFOHEADER lpbi;
HANDLE fh,hDib, hPal,hOldPal=NULL;
wBitCount = 24;
if(wBitCount <= 8)
{
dwPaletteSize =(1 << wBitCount) *sizeof(RGBQUAD);
}
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth= 1024;
bi.biHeight = 768;
bi.biPlanes = 1;
bi.biBitCount = wBitCount;
bi.biCompression= BI_RGB;
bi.biSizeImage= 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed= 0;
bi.biClrImportant= 0;
dwBmBitsSize = ((1024 * wBitCount+31)/24)* 3 * 768 ;
hDib = GlobalAlloc(GHND,dwBmBitsSize+dwPaletteSize+sizeof(BITMAPINFOHEADER));
lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
*lpbi = bi;
hPal = GetStockObject(DEFAULT_PALETTE);
if (hPal)
{
hDC = ::GetDC(NULL);
hOldPal = ::SelectPalette(hDC, (HPALETTE)hPal, FALSE);
RealizePalette(hDC);
}
GetDIBits(hDC, hBitmap, 0, 768,
(LPSTR)lpbi + sizeof(BITMAPINFOHEADER)+dwPaletteSize,
(BITMAPINFO *)lpbi, DIB_RGB_COLORS);
if (hOldPal)
{
SelectPalette(hDC, (HPALETTE)hOldPal, TRUE);
RealizePalette(hDC);
::ReleaseDC(NULL, hDC);
}
LPSTR lpFileName = (LPSTR)FileName.GetBuffer(FileName.GetLength());
fh = CreateFile(lpFileName,
GENERIC_WRITE,
0,//not be shared
NULL, //cannot be inherited
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,
NULL);
if (fh == INVALID_HANDLE_VALUE)
return FALSE;
bmfHdr.bfType = 0x4D42; // "BM"
dwDIBSize = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+dwPaletteSize+dwBmBitsSize;
bmfHdr.bfSize = dwDIBSize;
bmfHdr.bfReserved1 = 0;
bmfHdr.bfReserved2 = 0;
bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER)+ dwPaletteSize;
//write file header
WriteFile(fh, (LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);
//write bmp data
WriteFile(fh, (LPSTR)lpbi, dwDIBSize, &dwWritten, NULL);
GlobalUnlock(hDib);
GlobalFree(hDib);
CloseHandle(fh);
return TRUE;
}
我建立一个IWebBrowser2 并指向了一个网址,也打开了,但是按照上面提供的方法得到BMP并保存到图片文件后,打开后是黑屏
请教到底是哪里错了
Kudeet
2006-12-11
打赏
举报
回复
Maybe you can try to use ie instance window, please refer to
http://support.microsoft.com/kb/176792
Kudeet
2006-12-11
打赏
举报
回复
http://groups.google.com/group/microsoft.public.win32.programmer.gdi/browse_frm/thread/6da1f405db299396/efde7b30b15a5188?lnk=st&q=capture+IE+window&rnum=20&hl=zh-CN#efde7b30b15a5188
flybox0384
2006-12-11
打赏
举报
回复
是将获得的整个网页为保存为图片。
蒋晟
2006-12-11
打赏
举报
回复
http://www.codeproject.com/internet/htmlimagecapture.asp
mm12333
2006-12-10
打赏
举报
回复
是要保存网页为图片呢
还是要保存图片为图片?
VBA自学应用(6)——
URL
Downloa
dTo
File
下载
图片
Private Declare Function
URL
Downloa
dTo
File
Lib "
url
mon" Alias _ "
URL
Downloa
dTo
File
A" (ByVal pCaller As Long, ByVal sz
URL
As String, _ ByVal sz
File
Name As String, ByVal dwReserved As Long, _ ByVal lpfn...
用VBA下载google
图片
Sub cc() Dim s, ss(), r%, i&, j& IName = "***" 这里确定要下载谁的
图片
Path = ThisWorkbook.Path & "/" MkDir Path & IName 建立文件夹以便存放
图片
On Error Resume Next Set ie = C
【千律】C++基础:打开并下载
网页
-- ShellExecuteEx 和
URL
Downloa
dTo
File
函数
#include <tchar.h> #include <
Url
mon.h> #include <windows.h> #pragma comment (lib, "
Url
mon.lib") int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, _In_ int nCmdShow) { // 初始化变量.
VB下载
网页
文件或
图片
的几种简易方法
原贴链接:http://www.suntw.com/vb6/vb-xia-zhai-wang-ye-wen-jian-he-tu-pian.html 一、使用 API 函数
URL
Downloa
dTo
File
,下载
网页
文件(也可以是
图片
等其他文件)到硬盘 Private Declare Function
URL
Downloa
dTo
File
Lib "
url
mon" Alias "
URL
Down
java的jna电脑桌面背景_
获取
bing
图片
并自动设置为电脑桌面背景(使用
URL
Downloa
dTo
File
API函数)...
众所周知,bing搜索网站首页每日会更新一张
图片
,张张漂亮(额,也有一些不合我口味的),特别适合用来做电脑壁纸。我们想要将bing网站背景
图片
设置为电脑桌面背景的通常做法是:上网,搜索bing找到
图片
的下载链接,并下载之将
图片
设置为桌面背景(也有部分浏览器支持直接在
网页
中右击
图片
设置为壁纸)可能你还会删除下载下来的
图片
作为一枚coder,你不会觉得麻烦嘛?至少需要三个步骤呢!So...我就用C++...
网络编程
18,356
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章