在脚本中可以得到:
<script language="VBScript">
Sub OnContextMenu()
On Error Resume Next
set objSaveMgr=CreateObject("QuickSave.SaveMgr")
Call objSaveMgr.SaveHtm(external.menuArguments.document.body.innerHtml,external.menuArguments.document.Url,external.menuArguments.document.title)
end Sub
call OnContextMenu()
</script>
----------------------------------------
另一个办法是这样:
uses MSHTML;
{$R *.dfm}
type
TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; WPARAM: wParam; out pObject): HRESULT; stdcall;
//This function detects the Window
function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT;
var
hInst: HWND;
lRes: Cardinal;
MSG: Integer;
pDoc: IHTMLDocument2;
ObjectFromLresult: TObjectFromLresult;
begin
hInst := LoadLibrary('Oleacc.dll');
@ObjectFromLresult := GetProcAddress(hInst, 'ObjectFromLresult');
if @ObjectFromLresult <> nil then begin
try
MSG := RegisterWindowMessage('WM_HTML_GETOBJECT');
SendMessageTimeOut(WHandle, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc);
if Result = S_OK then
(pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp, IWebbrowser2, IE);
finally
FreeLibrary(hInst);
end;
end;
end;
procedure TForm1.GetSource;
var
//All: IHtmlElementCollection;
//HtmlElement: IHtmlElement;
//I: Integer;
Document: IHtmlDocument2;
IE: IWebBrowser2;
Wnd: HWND;
WndChild: HWND;
begin
Wnd := FindWindow('IEFrame', nil);
if Wnd = 0 then
begin
MessageDlg ('No Running instance of Internet Explorer!',mtError, [mbOK], 0);
end;
// walk Shell DocObject View->Internet Explorer_Server
WndChild := FindWindowEX(Wnd, 0, 'Shell DocObject View', nil);
if WndChild <> 0 then begin
WndChild := FindWindowEX(WndChild, 0, 'Internet Explorer_Server', nil);
if WndChild <> 0 then
begin
GetIEFromHWnd(WndChild, IE); //Get Iwebbrowser2 from Handle
Document := IE.Document as IHtmlDocument2;
if (assigned(Document)) then
begin
{All := Document.All;
for I := 0 to All.Length -1 do
begin
HtmlElement := All.item(i,0) as IhtmlElement;
if (assigned(Document)) then
SourceView.Lines.Add (HTmlElement.innerHTML);
end; }
HtmTitle:=Document.title;
Caption:=HtmTitle;
SourceView.Lines.clear;
{SourceView.Lines.Add('<html>');
SourceView.Lines.Add('<head>');
SourceView.Lines.Add('<title>'+HtmTitle+'</title>');
SourceView.Lines.Add('</head>'); }
SourceView.Lines.Add(IHtmlDocument2(Document).Body.innerHTML);
{SourceView.Lines.Add('</html>');}
PersistFile := IHtmlDocument2(Document) as IPersistFile;
end;
end;
end;
end;