初学求助!
一、如何将图片添加到TWebBrowser中,例如做页面背景。图片不是文件,而是从资源读出的或预设在程序中的。二、关于在TWebBrowser中实现流的读写时有如下代码:
procedure SetHtml(const WebBrowser: TWebBrowser; const Html: string);
var
Stream: IStream;
hHTMLText: HGLOBAL;
psi: IPersistStreamInit;
begin
if not Assigned(WebBrowser.Document) then Exit;hHTMLText := GlobalAlloc(GPTR, Length(Html) + 1);
if 0 = hHTMLText then RaiseLastWin32Error;CopyMemory(Pointer(hHTMLText), PChar(Html), Length(Html));OleCheck(CreateStreamOnHGlobal(hHTMLText, True, Stream));
try
OleCheck(WebBrowser.Document.QueryInterface(IPersistStreamInit, psi));
try
OleCheck(psi.InitNew);
OleCheck(psi.Load(Stream));
finally
psi := nil;
end;
finally
Stream := nil;
end;
end;function GetHtml(const WebBrowser:TWebBrowser): string;
const
BufSize = $10000;
var
Size: Int64;
Stream: IStream;
hHTMLText: HGLOBAL;
psi: IPersistStreamInit;
begin
if not Assigned(WebBrowser.Document) then Exit;OleCheck(WebBrowser.Document.QueryInterface(IPersistStreamInit, psi));
try
//OleCheck(psi.GetSizeMax(Size));
hHTMLText := GlobalAlloc(GPTR, BufSize);
if 0 = hHTMLText then RaiseLastWin32Error;OleCheck(CreateStreamOnHGlobal(hHTMLText,True, Stream));
try
OleCheck(psi.Save(Stream, False));Size := StrLen(PChar(hHTMLText));
SetLength(Result, Size);
CopyMemory(PChar(Result), Pointer(hHTMLText), Size);
finally
Stream := nil;
end;
finally
psi := nil;
end;
end;请问,其中的IStream;IPersistStreamInit;是在哪里定义或引用的?我怎么找不到?三、如何映射一部分内存为一个逻辑磁盘,向其存放临时文件,并且禁止其他程序访问该磁盘或文件。
一、如何将图片添加到TWebBrowser中,例如做页面背景。图片不是文件,而是从资源读出的或预设在程序中的。二、关于在TWebBrowser中实现流的读写时有如下代码:
procedure SetHtml(const WebBrowser: TWebBrowser; const Html: string);
var
Stream: IStream;
hHTMLText: HGLOBAL;
psi: IPersistStreamInit;
begin
if not Assigned(WebBrowser.Document) then Exit;hHTMLText := GlobalAlloc(GPTR, Length(Html) + 1);
if 0 = hHTMLText then RaiseLastWin32Error;CopyMemory(Pointer(hHTMLText), PChar(Html), Length(Html));OleCheck(CreateStreamOnHGlobal(hHTMLText, True, Stream));
try
OleCheck(WebBrowser.Document.QueryInterface(IPersistStreamInit, psi));
try
OleCheck(psi.InitNew);
OleCheck(psi.Load(Stream));
finally
psi := nil;
end;
finally
Stream := nil;
end;
end;function GetHtml(const WebBrowser:TWebBrowser): string;
const
BufSize = $10000;
var
Size: Int64;
Stream: IStream;
hHTMLText: HGLOBAL;
psi: IPersistStreamInit;
begin
if not Assigned(WebBrowser.Document) then Exit;OleCheck(WebBrowser.Document.QueryInterface(IPersistStreamInit, psi));
try
//OleCheck(psi.GetSizeMax(Size));
hHTMLText := GlobalAlloc(GPTR, BufSize);
if 0 = hHTMLText then RaiseLastWin32Error;OleCheck(CreateStreamOnHGlobal(hHTMLText,True, Stream));
try
OleCheck(psi.Save(Stream, False));Size := StrLen(PChar(hHTMLText));
SetLength(Result, Size);
CopyMemory(PChar(Result), Pointer(hHTMLText), Size);
finally
Stream := nil;
end;
finally
psi := nil;
end;
end;请问,其中的IStream;IPersistStreamInit;是在哪里定义或引用的?我怎么找不到?三、如何映射一部分内存为一个逻辑磁盘,向其存放临时文件,并且禁止其他程序访问该磁盘或文件。
解决方案 »
- delphi 在windows7下如何开POS钱箱?
- 哭笑不得散分兼求助: 竟然拿到了Symantec/Pctools的offer
- 如果说世界上有鬼,那么,这个鬼就藏在我的程序中
- 求助图片保存速度问题
- 一直出现地址什么的提示,高手帮忙啊!
- 怎么知道图片框里是否有图片呀
- 人们用delphi编出了哪些著名的软件呢?
- 急问:DBEdit对齐问题
- 使用internetexpress开发web应用,在浏览器中只显示框架,没有数据有几种原因?
- 谁给一个例子,现有暂时不给分, 只要给个例子,一定给50分
- 为什么从资源文件中读到webbrowser的Mht显示网页源码而不是正常的网页?
- 請問 published 定義的范圍?
对于一、,建议把要显示的文件弄成 *.mht
因为有多个页面,如果图片不能共用,那么程序就不够小巧了。听说用命名空间的方法可以,不知道该怎么实现。
IStream引用Types
IPersistStreamInit引用ActiveX
http://eagleboost.myrice.com/issues/Materials/Articles/TWebBrowser.htm#TextRange我上次的问题就是在这里得到提示的,我上次做了个小东东,想
通过单击一个按钮然后控制webbrowse弹出查找对话框 做了好久都没成功,看了这个网站后得到了提示。^_^
如果找不到使用单元 你就用win查找功能 查找*.dcu 包含文字为你要查的内容(网站上没写使用单元)
这是我的问题的答案给你参考一下
使用单元
user Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw, ExtCtrls, Buttons,mshtml,ActiveX;代码
if WebBrowser1.Document <> nil then
with WebBrowser1.Application as IOleobject do
doVerb(OLEIVERB_UIACTIVATE, nil, WebBrowser1, 0, Handle, GetClientRect);
//上面三句为关键语句 主要实现将焦点转移到WebBrowser(setfocus没用)
keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0); //按下CTRL键。
keybd_event(ord('F'),MapVirtualKey(ord('F'),0),0,0);//键下F键。
keybd_event(ord('F'),MapVirtualKey(ord('F'),0), KEYEVENTF_KEYUP,0);//放
开F键。
keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),KEYEVENTF_KEYUP,0);
Delphi6+Win2000专业版通过