|
Тема |
Re: GetIEFromHWND [re: Pechenia] |
|
Автор |
Wise Guy (един такъв) |
|
Публикувано | 29.05.02 13:25 |
|
|
Tochno s tezi dvete bachkah. I za da vzema selectiraniq text razgledah edin java script (http://www.webreference.com/js/column12/crossbrowser.html) Taka namerih tochno kakvo da polzvam ot interface-ite. Eto kak izglejda posledno moq kod (no ne bachka):
uses
..., OleServer, OleCtrls, SHDocVw, ComObj, ActiveX, MSHTML;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
function GetIEFromHWND(WHandle: HWND; var Doc: IHTMLDocument2): HRESULT;
end;
TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; WPARAM: wParam; out pObject): HRESULT; stdcall;
{implementation}
function TForm1.GetIEFromHWND(WHandle: HWND; var Doc: IHTMLDocument2): HRESULT;
var
hInst: HWND;
lRes: Cardinal;
MSG: Integer;
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, Doc);
finally
FreeLibrary(hInst);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
IE: IHTMLDocument2;
range: Variant;
begin
GetIEFromHWND($34033C, IE);
range := IE.Selection.CreateRange;
Form1.Caption := range.Text;
end;
by Wise Guy
|
| |
|
|
|