Форум: "Начинающим";
Текущий архив: 2009.05.17;
Скачать: [xml.tar.bz2];
ВнизЗаголовок и URL Intrnet Explorer Найти похожие ветки
← →
Mozgan (2009-04-02 10:34) [0]Доброго времени суток!
Нашел в инете две функции для получения заголовка и url из активного окна обозревателя.
Привожу исходники обоих функций.
function GetURL_IE: string;
var
hIeWindow, hWorkerA, hToolbar, hComboBoxEx,
hComboBox, hEdit: hWnd;
Buf: array[0..255] of Char;
begin
hIeWindow := FindWindow("IEFrame", nil);
if hIeWindow <> 0 then begin
hWorkerA := FindWindowEx(hIeWindow, 0, "WorkerA", nil);
hToolbar := FindWindowEx(hWorkerA, 0, "RebarWindow32", nil);
hComboBoxEx := FindWindowEx(hToolbar, 0, "ComboBoxex32", nil);
hComboBox := FindWindowEx(hComboBoxEx, 0, "ComboBox", nil);
hEdit := FindWindowEx(hComboBox, 0, "Edit", nil);
Sendmessage (hEdit, WM_GETTEXT, Length(Buf), Longint(@Buf));
Result := String(Buf);
end
else
Result := "";
end;
function GetCaption_IE: string;
var
hIeWindow: hWnd;
Buffer: array[0..255] of Char;
begin
hIeWindow := FindWindow("IEFrame", nil);
if hIeWindow <> 0 then begin
Sendmessage (hIeWindow, WM_GETTEXT, Length(Buffer), Longint(@Buffer));
Result := String(Buffer);
end
else
Result := "application close";
end;
В результате эксперимент показал, что удовлетворительно работает только функция GetCaption_IE
Помогите пожалуйста, разобраться с данным кодом.
← →
Rouse_ © (2009-04-02 10:52) [1]Путь активного окна браузера можно получить вот так:
uses
SHDocVw;
function ParceURLName(const Value: String): String;
const
scFilePath: array [0..7] of Char = ("f", "i", "l", "e", ":", "/", "/", "/");
begin
if CompareMem(@scFilePath[0], @Value[1], 8) then
begin
Result := Copy(Value, 9, Length(Value));
Result := StringReplace(Result, "/", "\", [rfReplaceAll]);
Result := StringReplace(Result, "%20", " ", [rfReplaceAll]);
end
else
Result := Value;
end;
function GetBrowserPath(TID: DWORD): String;
var
iShellWindow: IShellWindows;
iWB: IWebBrowserApp;
spDisp: IDispatch;
I: Integer;
begin
Result := "";
iShellWindow := CoShellWindows.Create;
for I := 0 to iShellWindow.Count - 1 do
begin
spDisp := iShellWindow.Item(I);
if spDisp = nil then Continue;
spDisp.QueryInterface(IWebBrowserApp, iWB);
if iWB <> nil then
if GetWindowThreadProcessId(iWB.HWND) = TID then
begin
Result := ParceURLName(iWB.LocationURL);
Break;
end;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Memo1.Lines.Add(GetBrowserPath(
GetWindowThreadProcessId(GetForegroundWindow)));
end;
← →
Mozgan (2009-04-02 10:57) [2]Больщое спасибо за помощь!
Код правда сложнее, но реализация просто супер!
Спасибо, Rouse!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.05.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c