Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1237122597
Кто б сомневался
2009-03-15 16:09
2009.05.17
Ссылка KOLMCK


15-1236809782
TInt
2009-03-12 01:16
2009.05.17
Функция или компонент для решения уравнений


10-1156501405
d_oleg
2006-08-25 14:23
2009.05.17
классы в библиотеке


2-1238854644
denissoft
2009-04-04 18:17
2009.05.17
Драйвера формата sys


2-1238564521
DDR2
2009-04-01 09:42
2009.05.17
Как узнать, что windows завершает работу?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский