Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.17;
Скачать: CL | DM;

Вниз

Заголовок и 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;
Скачать: CL | DM;

Наверх




Память: 0.44 MB
Время: 0.005 c
2-1238744228
olegteacher
2009-04-03 11:37
2009.05.17
Очистка Image


2-1238565285
DmitriyR
2009-04-01 09:54
2009.05.17
массивы char и longword


15-1236840903
PHProgger
2009-03-12 09:55
2009.05.17
MySQL - TRIM in function


15-1237194918
Cobalt
2009-03-16 12:15
2009.05.17
Работа со строками через asm - переносимость между версиями?


4-1208885015
Dmitry
2008-04-22 21:23
2009.05.17
Прочитать UNICODE файл с китайским текстом





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский