将Internet Explorer当前URL作为字符串的最佳方法是什么?

时间:2014-04-10 20:50:17

标签: delphi delphi-xe4

我正在寻找一种方法从当前的Internet Explorer URL返回一个字符串作为字符串。

这种方法使用dde。它非常快并且运行良好,除了它返回一个非常长的字符串,两个部分都带有引号。

uses
  ddeman;

function GetURL(Service: string): string;
var
  ClDDE: TDDEClientConv;
  temp: PAnsiChar;
begin
  Result := '';
  ClDDE := TDDEClientConv.Create(nil);
  with ClDDE do
  begin
    SetLink(Service, 'WWW_GetWindowInfo');
    temp := RequestData('0xFFFFFFFF');
    Result := StrPas(temp);
    StrDispose(temp);
    CloseLink;
  end;
  ClDDE.Free;
end;

例如,这会返回: “http://core2.staticworld.net/images/article/2014/01/counterfeit_android_apps1-100227383-medium.jpg”, “http://core2.staticworld.net/images/article/2014/01/counterfeit_android_apps1-100227383-medium.jpg

但我只是在没有引号的第一个逗号之前找到第一部分: http://core2.staticworld.net/images/article/2014/01/counterfeit_android_apps1-100227383-medium.jpg

对于另一种方法的任何建议或如何解析字符串以产生没有引号而只显示字符串的第一部分的结果?

1 个答案:

答案 0 :(得分:2)

您可以自己解析字符串:

// Extract string up to position of the ,
Temp := Copy(Temp, 1, Pos(',', Temp) - 1);
// Remove double-quotes from resulting string
Temp := StringReplace(temp, '"', '', [rfReplaceAll]);

这是一个示例控制台应用程序,它使用您提供的示例响应上面的逻辑,并将最终内容输出到控制台:

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  LinkStr = '"http://core2.staticworld.net/images/article/2014/01/counterfeit_android_apps1-100227383-medium.jpg","http://core2.staticworld.net/images/article/2014/01/counterfeit_android_apps1-100227383-medium.jpg"';

var
  Temp: string;

begin
  Temp := Copy(LinkStr, 1, Pos(',', LinkStr) - 1);
  Temp := StringReplace(Temp, '"', '', [rfReplaceAll]);
  Writeln('After: ' + Temp);
  ReadLn;
end.

输出:

enter image description here