方法一:uses MSHTML, shDocvw,ActiveX; type TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; WPARAM: wParam; out pObject): HRESULT; stdcall; 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;如果你加分,我将再贴出方法二,不需要引用'Oleacc.dll'
结贴给我分吧。我的代码你不会用吗?其实方法一虽然加载了一个DLL,但用着一直很稳定。用法: procedure TForm1.Button1Click(Sender: TObject); var web:IWebbrowser2; begin GetIEFromHWND('Internet Explorer_Server'的句柄,web); if web=nil then exit; //新打开的网页被关了或网页未打开! try label1.Caption:=web.LocationName; label2.Caption:=web.LocationURL; except end;end;
type
TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; WPARAM: wParam; out pObject): HRESULT; stdcall;
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;如果你加分,我将再贴出方法二,不需要引用'Oleacc.dll'
procedure TForm1.Button1Click(Sender: TObject);
var
web:IWebbrowser2;
begin
GetIEFromHWND('Internet Explorer_Server'的句柄,web); if web=nil then exit; //新打开的网页被关了或网页未打开!
try
label1.Caption:=web.LocationName;
label2.Caption:=web.LocationURL;
except
end;end;