IEが複数起動しているとき、現在アクティブになっているIEで表示しているURLの取得方法を教えてください。
DdeClientConv を使用すると、最後に開いたIEのURLしか取得できませんでした。
よろしくお願いします。
ふぁんくしょん 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;
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;
ツイート | ![]() |