Форум: "Сети";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];
ВнизURL браузера...конкретно IE Найти похожие ветки
← →
Ghost. (2002-11-29 15:10) [0]Функция указанная в ФАКе при вызове из него самого не работает..какие могут быть еще варианты..
← →
Ghost. (2002-11-30 11:29) [1]И че вообще никто не знает? Или хотябы информацию как с браузером работать как с ОЛЕ обьектом..или еще как нибудь? Или га API заголовок окна известен..хендл тоже..какие-то варианты должны быть
← →
Ihor Osov'yak (2002-11-30 11:44) [2]2 Ghost. © (29.11.02 15:10)
А, че(с Ghost), бля (с Кучма), влом сказать какая функция и че за фича такая "него самого" - ФАК? IE?. И шо такое не работает? На взлет не идет? Или на посадку?
Или здесь все телетапы?
← →
Ghost. (2002-12-02 09:06) [3]Мне казалось, что я понятно обьяснил но если нет (
> Ihor Osov"yak ©
) звиняйте
В FAQ (этого сайта )есть
Как получить активный URL из браузера.
Приводимая здесь функция показывает, как Ваше приложение может извлечь из браузера (IE или Netscape) URL , как, например, это делает аська.
Совместимость: Delphi 4.x (или выше)
Не забудьте добавить DDEMan в Ваш проект!
Собственно сам исходничек функции:
uses windows, ddeman, ...... function Get_URL(Servicio: string): String; var Cliente_DDE: TDDEClientConv; temp:PChar; //<<-------------------------This is new begin Result := ""; Cliente_DDE:= TDDEClientConv.Create( nil ); with Cliente_DDE do begin SetLink( Servicio,"WWW_GetWindowInfo"); temp := RequestData("0xFFFFFFFF"); Result := StrPas(temp); StrDispose(temp); //<<-Предотвращаем утечку памяти CloseLink; end; Cliente_DDE.Free; end; procedure TForm1.Button1Click(Sender); begin showmessage(Get_URL("Netscape")); или showmessage(Get_URL("IExplore")); end;
Автор: Ruslan Abu Zant (delphi3000@opilki.net)
Источник: http://www.sources.ru/delphi/
так вот если запустить его из своей программы то все работает.., а если запустить из DLL плагина для IE (Интернет Эксплоера для Ihor Osov"yak © ) такой же дополнительной панельки типа Яндекс бар (кто невидел помочь не могу Ihor Osov"yak © ) вот эта функция возвращает пустую строку..хотелось бы найти какой нибудь способ получения содержания адресной строки IE
← →
Song (2002-12-02 09:21) [4]WM_GETTEXT
← →
Ghost. (2002-12-02 11:46) [5]Вот видимо это именно то что мне нужно..но я не хотел бы показаться назойливым..но с API у меня не очень дружественные отношения...
Не будет ли любезен многоуважаемый ДЖИН(читай Song © )привести какойнибудь вариант вызова этой функции..
← →
Ghost. (2002-12-02 12:12) [6]Всем спасибо сам нашел...
← →
Opuhshii (2002-12-02 13:02) [7]вот так тоже можно...
var
I:Integer;
SW:Variant;
begin
SW:=CoShellWindows.Create;
for I:=1 to SW.Count-1 do begin
Showmessage(SW.Item(I).LocationURL);
end;
end;
← →
Song (2002-12-02 13:12) [8]2Ghost. © (02.12.02 11:46)
WM_GETTEXT (или сообщения CB_*) надо посылать на окно, содержащее урл в браузере. Это окно имеет класс ComboBoxEx32.
Нижеизложенная иерархия объектов справедлива для IE 5:
IEFrame
|
|-WorkerA
| |
|-ReBarWindow32
| |
|-ComboBoxEx32
|
Нужно нам окно последнее. Вот на него мы должны послать сообщение и получить строку.
← →
Ghost. (2002-12-02 13:16) [9]
> CoShellWindows
А это, что такое?
я нашел вариант..
{-------------------------------------------------------}
Function GetText(WindowHandle: hwnd):string;
var
txtLength : integer;
buffer: string;
begin
TxtLength := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0);
txtlength := txtlength + 1;
setlength (buffer, txtlength);
sendmessage (WindowHandle,wm_gettext, txtlength, longint(@buffer[1]));
result := buffer;
end;
function GetURL:string;
var
ie,toolbar,combo,
comboboxex,edit,
worker,toolbarwindow:hwnd;
begin
ie := FindWindow(pchar("IEFrame"),nil);
worker := FindWindowEx(ie,0,"WorkerA",nil);
toolbar := FindWindowEx(worker,0,"rebarwindow32",nil);
comboboxex := FindWindowEx(toolbar, 0, "comboboxex32", nil);
combo := FindWindowEx(comboboxex,0,"ComboBox",nil);
edit := FindWindowEx(combo,0,"Edit",nil);
toolbarwindow := FindWindowEx(comboboxex, 0, "toolbarwindow32", nil);
result := GetText(edit);
{-------------------------------------------------------}
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(GetURL);
end;
но тоже чета не получается..
← →
Opuhshii (2002-12-02 13:34) [10]>SW:=CoShellWindows.Create;
uses SHDOCvw
можно написать CoCreateInstance и описать нужный тебе guid(соответственно описан в SHDOCvw) и модуль не использовать,...
← →
Song (2002-12-02 14:03) [11]special for Ghost. © (02.12.02 13:16)
пришлось потратить 10 минут драгоценного времени :)
procedure TForm1.Button1Click(Sender: TObject);
Var Wnd:HWND;
Arr:array [1..255] of Char;
begin
ShellExecute(Handle,nil,"iexplore.exe"," http://delphi.mastak.ru",nil,SW_SHOWNORMAL);
Sleep(8000); // ждём пока страница загрузится (т.е. пока адрес появится в окне ComboBoxEx32). В течении этого времени переключаться с IE нельзя, иначе GetForeGroundWindow вернёт не тот дискриптор и соответственно вся очередь чайлдов будет неправильной.
Wnd:=FindWindowEx(GetForeGroundWindow,0,"WorkerA",nil);
Wnd:=FindWindowEx(Wnd,0,"ReBarWindow32",nil);
Wnd:=FindWindowEx(Wnd,0,"ComboBoxEx32",nil);
SendMessage(Wnd,WM_GETTEXT,SizeOf(Arr),Integer(@Arr));
ShowMessage(TrimRight(Arr));
end;
← →
Ghost. (2002-12-02 14:25) [12]
> Opuhshii ©
Работает...
← →
Ghost. (2002-12-02 14:29) [13]Спасибо всем за участие...
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c