Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск строки в поисковом сайте через Internet Explorer [D7, WinXP]


mefodiy ©   (2005-09-27 10:38:00) 

При создании формы открываю нужный мне интернет сайт

var IEApp: OleVariant;
    WinHanlde: HWnd;
...............................
procedure OpenIE(aURL: string);
 var WinHanlde: HWnd;
begin
 if (VarIsEmpty(IEApp)) then
   begin
     IEApp         := CreateOleObject('InternetExplorer.Application');
     IEApp.Visible := True;
     IEApp.Navigate(aURL);
   end
 else
   begin
     WinHanlde := FindWindow('IEFrame', nil);
     if (0 <> WinHanlde) then
       begin
         IEApp.Navigate(aURL);
         SetForegroundWindow(WinHanlde);
       end
     else
       ShowMessage('Can''t open IEApp !');
   end;
end;
..........................................
OpenIE(' http://www.yandex.ru');
..........................................
Нужно, чтобы по нажатию кнопки в моей форме на поисковом сайте yandex.ru начался поиск строки из моего TEdit.
Возможно ли такое и, если да, то как это сделать?
Спасибо.


mefodiy   (2005-09-28 14:53:00) [1]

Проблема решилась заменой

 IEApp.Navigate(aURL);

на

 IEApp.Navigate(StringToWideString(aURL,1251));

т.е. преобразование в юникод надо было делать не при вызове функции

OpenIE(' http://www.yandex.ru/yandsearch?rpt=rad&text='+Edit1.Text)

а в самом теле функции.


mefodiy   (2005-09-28 12:12:00) [2]

Так ты же мне его сам написал

' http://www.yandex.ru/yandsearch?rpt=rad&text='+Edit1.text

Кстати, если даже вместо Edit1.text написать в кириллице любое слово (в теле программы), то на брекпоинте все номально читается. Абракадабра получается при передаче URL в IE.


dmitry501   (2005-09-28 11:39:00) [3]

mefodiy   (28.09.05 11:27) [8]
прочти свой самый первый вопрос, и увидишь переменную aURL, которыя передается в процедуру OpenIE. На ней поставь брекпоинт и посмотри чему она равна!


mefodiy   (2005-09-28 11:27:00) [4]

> Переменная из [0]Опять не дошло, поподробнее, пожалйста
> и еще, стоит ли параметр "отправлять url как utf-8"?да стоит


dmitry501   (2005-09-28 10:40:00) [5]

mefodiy   (28.09.05 10:31) [6]
>Что имеешь в виду под aURL?
Переменная из [0]
и еще, стоит ли параметр "отправлять url как utf-8"?


mefodiy   (2005-09-28 10:31:00) [6]

Что имеешь в виду под aURL?
Кодировку IE насколько я понимаю смотрим в View-->Ecoding.
Там стоит Cirillic(WIndows).


dmitry501   (2005-09-28 09:26:00) [7]

А подробнее? Чему равна aURL? Какая кодировка стоит у IE по умолчанию?


mefodiy   (2005-09-28 09:24:00) [8]

HTMLEncode() не помогла


dmitry501   (2005-09-28 05:37:00) [9]

Попробуй использовать функцию HTMLEncode()
которая преобразует русские буквы и служебные символы в кодировку, используемую в HTML


mefodiy   (2005-09-27 13:10:00) [10]

Все работает, только нормальный в Edit1 текст в поисковике превращается в аброкадабру.
Не помогает и преобразование

OpenIE(' http://www.yandex.ru/yandsearch?rpt=rad&text='+StringToWideString(Edit1.Text,1251))

где функция имеет вид

function StringToWideString(const s: AnsiString; codePage: Word): WideString;
 var l: integer;
begin
 if s = '' then
   Result := ''
 else
   begin
     l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), -1, nil, 0);
     SetLength(Result, l - 1);
     if l > 1 then
       MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]),
                           -1, PWideChar(@Result[1]), l - 1);
   end;
end;


dmitry501   (2005-09-27 10:52:00) [11]

Угу, вызывай вот так
OpenIE(' http://www.yandex.ru/yandsearch?rpt=rad&text='+Edit1.text+');


Наверх

Титульная страница Поиск, карта сайта Написать письмо