IEで表示しているアドレス(URL)文字列を取得するには?

解決


T2  2004-11-23 06:01:33  No: 11872  IP: [192.*.*.*]

IEが複数起動しているとき、現在アクティブになっているIEで表示しているURLの取得方法を教えてください。
DdeClientConv を使用すると、最後に開いたIEのURLしか取得できませんでした。
よろしくお願いします。

編集    削除
R2D2  2004-11-23 21:13:53  No: 11873  IP: [192.*.*.*]

ふぁんくしょん IEのURLやで: string;
var
  szName: array[0..255]of Char;
  hw: HWND;
begin
  result := '';
  hw := GetForegroundWindow;
  if hw = 0 then exit;
  GetClassName(hw, szName, 255);
  if szName <> 'IEFrame' then exit;
  while szName <> 'ComboBoxEx32' do begin
    hw := GetWindow(hw, GW_CHILD);
    if hw = 0 then exit;
    GetClassName(hw, szName, 255);
  end;
  SendMessage(hw, WM_GETTEXT, 255, lParam(@szName));
  result := szName;
end;

編集    削除
T2  2004-11-25 10:49:38  No: 11874  IP: [192.*.*.*]

R2D2さん、ありがとうございました。

ToolbarWindow32 のクラスを先に見つけて、CHILDがなく
exitしてしまうので、以下のようにしました。

GetIEURL: string;
var
  szName: array[0..255]of Char;
  hw: HWND;
begin
  result := '';
  hw := GetForegroundWindow;
  if hw = 0 then exit;
  GetClassName(hw, szName, 255);
  if szName <> 'IEFrame' then exit;
  while szName <> 'ToolbarWindow32' do begin
    hw := GetWindow(hw, GW_CHILD);
    if hw = 0 then exit;
    GetClassName(hw, szName, 255);
  end;
  hw := GetWindow(hw, GW_HWNDNEXT);
  SendMessage(hw, WM_GETTEXT, 255, lParam(@szName));
  result := szName;
end;

編集    削除