有这样一个函数
procedure TForm1.DomImg2Image(src:string;wb:TWebBrowser);
var
i:Integer;
rang:IHTMLControlRange;
img:TImage;
gimg: TJPEGImage;
ss:string;
begin
for i:=0 to IHTMLDocument2(wb.Document).images.length-1 do
if Pos(src,(IHTMLDocument2(wb.Document).images.item(i,EmptyParam)as
IHTMLElement).getAttribute('src',0))>0 then
begin
rang:=((IHTMLDocument2(wb.Document).body as HTMLBody).createControlRange)as
IHTMLControlRange;
rang.add(IHTMLDocument2(wb.Document).images.item(i,EmptyParam) as
IHTMLControlElement);
rang.execCommand('Copy',False,0);
img:=TImage.Create(nil);
img.Picture.Assign(ClipBoard);
gimg:=TJPEGImage.Create;
gimg.Assign(img.Picture.Graphic);
ss:='C:\'+ FormatDateTime('yyyymmddhhnnsszzz',now()) +'.bmp';
gimg.SaveToFile(ss);
// try img.Picture.Assign(ClipBoard)except end;
break;
end;
end;是想保存webbrowser控件里的图片,在单线程的时候执行正常,但放到多线程中,rang.execCommand('Copy',False,0);这句总是返回false,执行不成功,想请教一下,这个有什么办法解决,或者提供一下execCommand的源码,又或者有没有其它的方法可以保存图片?
procedure TForm1.DomImg2Image(src:string;wb:TWebBrowser);
var
i:Integer;
rang:IHTMLControlRange;
img:TImage;
gimg: TJPEGImage;
ss:string;
begin
for i:=0 to IHTMLDocument2(wb.Document).images.length-1 do
if Pos(src,(IHTMLDocument2(wb.Document).images.item(i,EmptyParam)as
IHTMLElement).getAttribute('src',0))>0 then
begin
rang:=((IHTMLDocument2(wb.Document).body as HTMLBody).createControlRange)as
IHTMLControlRange;
rang.add(IHTMLDocument2(wb.Document).images.item(i,EmptyParam) as
IHTMLControlElement);
rang.execCommand('Copy',False,0);
img:=TImage.Create(nil);
img.Picture.Assign(ClipBoard);
gimg:=TJPEGImage.Create;
gimg.Assign(img.Picture.Graphic);
ss:='C:\'+ FormatDateTime('yyyymmddhhnnsszzz',now()) +'.bmp';
gimg.SaveToFile(ss);
// try img.Picture.Assign(ClipBoard)except end;
break;
end;
end;是想保存webbrowser控件里的图片,在单线程的时候执行正常,但放到多线程中,rang.execCommand('Copy',False,0);这句总是返回false,执行不成功,想请教一下,这个有什么办法解决,或者提供一下execCommand的源码,又或者有没有其它的方法可以保存图片?
解决方案 »
- 如何写个用户登陆的线程?
- 关于巷道标注的问题, 做过GIS的朋友请进
- 数据库只能新增,无法更新与删除!
- 请问一下采用b/s比C/S好在哪里?最好推荐一本这方面的书籍
- 招聘师傅:QQ教dbgrid使用。 午间1小时,150分。
- 求一个拨号上网的代码。最好是通过的,谢谢了
- delphi中使用Tdatabase连接Sybase数据库的问题!
- intraweb中如何生成两个以上的网页
- 从1,2,3,4,5,6,7,8,9,10,11,12,13个数中,任意取出7个数进行组合,然后将组合逐行加入到DBGRID中,怎么实现?
- 再问字符串
- BarTender 调用时,如何确立所要的数据?
- DbgridEH与TreeView
有个 urlmon 组件 用httpdownload 直接就下载了
gimg.Assign(img.Picture.Graphic);
ss:='C:\'+ FormatDateTime('yyyymmddhhnnsszzz',now()) +'.bmp';//注意一个TJPEGImage怎么能保存成bmp类型的文件呢?
gimg.SaveToFile(ss);