![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск строки в поисковом сайте через 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+');