2 вопроса по Twebbrowser'у

Тема в разделе "Delphi - FAQ", создана пользователем Vadik(R), 8 мар 2008.

  1. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Посмотреть вложение _______.rar
    Люди, у меня есть к Вам два вопроса по Веббраузеру.
    1. Можно ли сделать так, чтобы открыв какой-то адрес в моей проге, он не сохранялся в обычном браузере.
    То есть, я, например, открою через свою прогу http://www.google.com/, а в моём IE7 этот адрес не сохранялся.
    2. Вот поставил я себе IIS, установил Perl. В папке wwwroot создал cgi-bin, туда бросил следующий перловый файл:
    Код (Text):
    #!/usr/bin/perl -w
    use CGI qw(:standard);
    use Data::Dumper;
    print header;
    open (F, ">>log.dat");
    print F "$ENV{QUERY_STRING}     ";
    print F "$ENV{HTTP_X_FORWARDED_FOR}     ";
    print F "$ENV{REMOTE_ADDR}      ";
    print F "$ENV{REMOTE_HOST}      ";
    print F scalar(localtime);
    print F "\n";
    close (F);
    print "Запись сделана успешно!";
    сохранил как log.pl.
    Почему если я напишу в "своём" браузере адрес типа
    http://192.168.1.2/cgi-bin/log.pl?param=Privet_Vadim.
    Потом напишу:
    http://192.168.1.2/cgi-bin/log.pl?param=Kak_dela.
    И потом снова напишу
    http://192.168.1.2/cgi-bin/log.pl?param=Privet_Vadim.
    То в файле log.dat будет только две строчки?
    Можно ли как-нибудь средствами делфи заставить браузер загружать url'ку заново, а не брать из cookie или, вобщем, из памяти?
    Заранее спасибо.
     
  2. zubr

    zubr Гость

    1-й пункт решаемый, правда с извратом. По крайней мере я реализовывал.
    После посещения страницы надо удалять хистори. Причем метод DeleteUrl интерфейса IUrlHistoryStg ни фига не работает. Эффективно работает метод IContextMenu::InvokeCommand (см. пример в MSDN по ключевому слову DeleteUrlFromHistoryShell). Один большой недостаток данного способа - перед удалением выскакивает мессага с запросом на удаление. Я извращался через оконные функции, чтобы программно ее убить (другого способа не нашел).
     
  3. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    А у меня второй пункт похоже получился, естественно, тоже с извратом. Причем надо его доработать.
    Вот код:
    Код (Text):
    procedure TForm1.Button1Click(Sender: TObject);
    var
    Flags : OleVariant;
    begin
    Flags:=navNoHistory+navNoReadFromCache+navNoWriteToCache;
    WebBrowser1.Navigate(Edit1.Text, Flags);
    end;
    Это для кнопки "поехали". Правда работает он вот как. При самом первом нажатии на кнопку "поехали" он окрывает страницу, но никуда её не кеширует. То есть, если я ещё раз напишу такой же адрес, как и в первый раз, то сообщение в файл добавится. В общем это даже сложно объяснить, вот лучше приведу примеры:
    1.
    http://192.168.1.2/cgi-bin/log.pl?param=Privet_Vadim
    http://192.168.1.2/cgi-bin/log.pl?param=Privet_Vadim
    http://192.168.1.2/cgi-bin/log.pl?param=Privet_Vadim
    в файле будет содержаться две строки Привет_Вадим.
    2.
    http://192.168.1.2/cgi-bin/log.pl?param=Privet_Vadim
    http://192.168.1.2/cgi-bin/log.pl?param=1
    http://192.168.1.2/cgi-bin/log.pl?param=Privet_Vadim
    В файле будет три строки: Привет_Вадим, 1, Привет_Вадим.
    3.
    http://192.168.1.2/cgi-bin/log.pl?param=Privet_Vadim
    http://192.168.1.2/cgi-bin/log.pl?param=1
    http://192.168.1.2/cgi-bin/log.pl?param=Privet_Vadim
    http://192.168.1.2/cgi-bin/log.pl?param=1
    http://192.168.1.2/cgi-bin/log.pl?param=Privet_Vadim
    В файле будет по-прежнему три строки: Привет_Вадим, 1, Привет_Вадим.
    После этого до меня дошла идея, раз самый первый переход не кешируется, то можно перед каждым "поехали" уничтожать браузер и снова создавать его. Вот в этом-то и проблема.
    Если взять компонент TEdit, то следующий код будет работать нормально:
    Код (Text):
    var
    form1: TForm;
    edt : TEdit;
    procedure ....
    begin
    edt:=TEdit.Create(Self);
    with edt do
    begin
    parent:=form1;
    width:=100;
    height:=20;
    top:=20;
    left:=20;
    end;
    end;
    Но если взять вместо TEdit TWebBrowser, то такой код работать не будет. Точнее будет выскакивать ошибка в строке parent:=form1;
    Но если удалить эту строчку, то браузер на форме не появляется. Вот я и прошу помочь мне напечатать код, чтобы при нажатии на одну кнопку браузер создавался, а при нажатии на другую уничтожался. Дальше, я думаю, я уже сам разберусь, дело будет за мной.
     
  4. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Всё же тупой проект получится. Ну его нафиг. Лучше я уж поучусь сразу клиент-серверные приложения делать типа асек.
     
Загрузка...
Похожие Темы - вопроса по Twebbrowser'у
  1. -master-
    Ответов:
    1
    Просмотров:
    672
  2. Vasya2111
    Ответов:
    0
    Просмотров:
    1.041
  3. Vadik(R)
    Ответов:
    1
    Просмотров:
    2.557
  4. deeeman
    Ответов:
    10
    Просмотров:
    3.569
  5. yerke
    Ответов:
    12
    Просмотров:
    5.050

Поделиться этой страницей