我試圖搶跑我的ActiveX,我用DDEMAN
單元頁的URL,但它似乎並沒有在運行的ActiveX其看來,代碼後在這裏工作我做了什麼如何正確抓住一個URL與IE與ActiveX?
function Get_URL(Servicio: string): String;
var
Cliente_DDE: TDDEClientConv;
S: String;
begin
Result := '';
Cliente_DDE := TDDEClientConv.Create(nil);
with Cliente_DDE do
begin
SetLink(Servicio, 'WWW_GetWindowInfo');
S := RequestData('0xFFFFFFFF');
Result := S;
form1.memo1.Lines.Add(Result);
CloseLink;
end;
Cliente_DDE.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
URI: TIdURI;
LinK : String;
Temp: string;
Host,sExt: String;
Path : string;
begin
Link := Get_URL('Iexplore');
Temp := Copy(Link, 1, Pos(',', Link) - 1);
Temp := StringReplace(Temp, '"', '', [rfReplaceAll]);
URI := TIdURI.Create(Temp);
try
Host := URI.Host;
Path := URI.Path;
Host := StringReplace(Host ,'www.', '',[rfReplaceAll,rfIgnoreCase]);
sExt := ExtractFileExt(Host);
Host := Copy(Host, 1, Length(Host) - Length(sExt));
finally
URI.Free;
end;
end;
GET_URL功能在ActiveX
返回空結果。我測試了這個代碼在EXE和它的正常工作。可能是什麼問題呢 ?如何正確獲取在IE中運行的ActiveX的ActiveX?
如雷米建議我嘗試
procedure Tactiveform.Button1Click(Sender: TObject);
var
punk: IUnknown;
poo: IOleObject;
pcs: IOleClientSite;
psp: IServiceProvider;
pwb2: IWebBrowser2;
pvDoc: Variant;
pvElems: Variant;
pvElem: Variant;
i: Integer;
Getsite : string;
begin
punk:=Self.ComObject as IUnKnown;
if punk.QueryInterface(IOleObject, poo) = S_OK then
begin
// Get the client site
if poo.GetClientSite(pcs) = S_OK then
begin
// Have the site, now try to get the Service provider
if pcs.QueryInterface(IServiceProvider, psp) = S_OK then
begin
// Query for WebBrowser2
if psp.QueryService(IWebBrowserApp, IWebBrowser2, pwb2) = S_OK then
begin
memo1.Lines.Add(pwb2.LocationURL);
end
else
memo1.Lines.Add('Didnt get the web browser');
end
else
memo1.Lines.Add('No service provider');
end
else
memo1.Lines.Add('No ole client site');
end
else
memo1.Lines.Add('No ole object');
end;
,但在這行memo1.Lines.Add(getsite as IWebBrowser2.LocationURL);
編譯器錯誤固定
這是很好的方式無法編譯代碼或也許我可以做的更好?
使用TWebBrowser接口而不是DDE。 – MartynA
對不起,但我怎樣才能使用twebbrowser獲取IE地址的URL? – DelphiStudent
@MartynA:'TWebBrowser'是圍繞嵌入式Web瀏覽器的組件封裝。在這種情況下,代碼位於在IE瀏覽器實例內部運行的ActiveX控件中。因此,它可以使用IE的DOM接口來訪問加載它的瀏覽器實例。 –