Главная страница
    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
3-1220953220
миникодер
2008-09-09 13:40
2009.05.17
Конвертация типов полей из TFieldType в тип полей DOA


15-1237229765
Кто б сомневался
2009-03-16 21:56
2009.05.17
www.google.com


2-1238705893
Maxwood
2009-04-03 00:58
2009.05.17
Разные картинки на Кнопке


15-1237324761
Kostafey
2009-03-18 00:19
2009.05.17
Посоветуйте железо для сервера


2-1238746145
Enlight
2009-04-03 12:09
2009.05.17
{$IFDEF} и Delphi2007





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