目的:从基于IE内核的傲游浏览器中取出选中区域的HTML代码
说明:在IE6下测试顺利通过,但在傲游浏览器中却在“错误1”处报错。只有这些分了,真抱歉。uses msHtml, SHdocvw;procedure TForm2.Button1Click(Sender: TObject);
var
I: Integer;
ShellWindow: IShellWindows;
IE: IWebbrowser2;
Doc: IHtmlDocument2;
TxtRange: IHtmlTxtRange;
S: string;
P: PChar;
begin
ShellWindow := CoShellWindows.Create;
for I := 0 to ShellWindow.Count-1 do begin
IE := ShellWindow.Item(I) as IWebbrowser2;
if IE <> nil then begin
GetMem(P, MaxByte+1);
GetClassName(IE.HWND, P, MaxByte);// <<<-----“错误1”
if SameText(P, 'IEFrame') then begin
Doc := IE.Document as IHtmlDocument2;
if Doc.Selection <> nil then begin
TxtRange := Doc.Selection.CreateRange as IHtmlTxtRange;
S := TxtRange.Get_htmlText;
Memo1.Lines.Add(S);
end;
end;
FreeMem(P);
end;
end;
end;
说明:在IE6下测试顺利通过,但在傲游浏览器中却在“错误1”处报错。只有这些分了,真抱歉。uses msHtml, SHdocvw;procedure TForm2.Button1Click(Sender: TObject);
var
I: Integer;
ShellWindow: IShellWindows;
IE: IWebbrowser2;
Doc: IHtmlDocument2;
TxtRange: IHtmlTxtRange;
S: string;
P: PChar;
begin
ShellWindow := CoShellWindows.Create;
for I := 0 to ShellWindow.Count-1 do begin
IE := ShellWindow.Item(I) as IWebbrowser2;
if IE <> nil then begin
GetMem(P, MaxByte+1);
GetClassName(IE.HWND, P, MaxByte);// <<<-----“错误1”
if SameText(P, 'IEFrame') then begin
Doc := IE.Document as IHtmlDocument2;
if Doc.Selection <> nil then begin
TxtRange := Doc.Selection.CreateRange as IHtmlTxtRange;
S := TxtRange.Get_htmlText;
Memo1.Lines.Add(S);
end;
end;
FreeMem(P);
end;
end;
end;
这个问题还真是。个问题。