ich versuche, URL einer Seite zu ergreifen, die meine activex läuft, ich DDEMAN
Einheit verwendet, aber seine scheint nicht in activex hier nicht funktioniert, was ichWie bekomme ich eine URL von ie mit 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;
nach dem Ausführen des Codes dessen, dass GET_URL scheint getan haben Funktion Rückgabe leeres Ergebnis in ActiveX
. Ich habe diesen Code auf exe getestet und es funktioniert normal. Was könnte das Problem sein? Wie bekomme ich eine URL, die im IE mit ActiveX läuft?
als remy schlug ich
versuchtprocedure 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;
konnte aber den Code in dieser Zeile memo1.Lines.Add(getsite as IWebBrowser2.LocationURL);
Compiler Fehler behoben
ist dies eine gute Möglichkeit, nicht kompiliert oder vielleicht könnte ich es besser machen?
Verwenden TWebBrowser Schnittstelle statt DDE. – MartynA
Entschuldigung, aber wie kann ich den Twebbrowser verwenden, um IE Adresse URL zu bekommen? – DelphiStudent
@MartynA: 'TWebBrowser' ist ein Komponenten-Wrapper um einen eingebetteten Webbrowser. In diesem Fall befindet sich der Code in einem ActiveX-Steuerelement, das in einer IE-Browserinstanz ausgeführt wird. Als solches kann es die DOM-Schnittstellen des IE verwenden, um auf die Browser-Instanz zuzugreifen, die es geladen hat. –