Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Запрет на вызов сайта


Автор: ProgV 21.3.2012, 12:13
Помогите товарищи! Пожалуйста! Разрабатываю браузер с программируемым запретом на вызов неразрешенного сайта. Пишу, значит, так:
Код

void __fastcall TForm1::CppWebBrowser1BeforeNavigate2(TObject *Sender,
      LPDISPATCH pDisp, Variant *URL, Variant *Flags,
      Variant *TargetFrameName, Variant *PostData, Variant *Headers,
      VARIANT_BOOL *Cancel)
{
  Form2->Edit1->Text = URL->operator AnsiString();
  if(URL->operator AnsiString()!= Form2->ComboBox1->Text)
  {
     MessageDlg("Данный сайт запрещен для просмотра.\n"
               "Спросите разрешения у родителей", mtWarning,
               TMsgDlgButtons()<<mbOK, 0);
     CppWebBrowser1->Stop();
  }
  dc = 0;
}

А этот CppWebBrowser1 все равно загружается, несмотря на Stop() smile 

Автор: _Dimon_ 22.3.2012, 12:56
Код

//вместо CppWebBrowser1->Stop(),
*Cancel = true;


 smile Ты этот вопрос на всех форумах запостил?  smile 

Автор: xvr 22.3.2012, 13:59
Цитата(ProgV @  21.3.2012,  12:13 Найти цитируемый пост)
А этот CppWebBrowser1 все равно загружается, 

Посмотрите внимательно на сравнение (в if'е). Вы сделали запрет на все сайты, кроме того, что в Form2->ComboBox1->Text

PS. URL->operator AnsiString() мягко говоря излишен. Достаточно просто URL

Автор: _Dimon_ 22.3.2012, 15:44
Цитата(xvr @  22.3.2012,  13:59 Найти цитируемый пост)
PS. URL->operator AnsiString() мягко говоря излишен. Достаточно просто URL


[BCC32 Error] Main.cpp(125): E2034 Cannot convert 'Variant *' to 'UnicodeString'

надо *URL

Добавлено @ 15:59
Цитата(xvr @  22.3.2012,  13:59 Найти цитируемый пост)
Посмотрите внимательно на сравнение (в if'е). Вы сделали запрет на все сайты, кроме того, что в Form2->ComboBox1->Text



Я думал что ProgV наоборот делает список разрешенных сайтов.
А то что он берет только одно значение из комбобокса, так это так, для пробы ..... smile  

А вообще-то c такой жесткой привязкой к УРЛ пропадет и полезная навигация по сайту. Лучше так сделать:
Код

if(Pos(Form2->ComboBox1->Text, *URL) ==/*ну или !=*/ 0)
{
  // код
}


Автор: ProgV 23.3.2012, 08:42
Цитата

А вообще-то c такой жесткой привязкой к УРЛ пропадет и полезная навигация по сайту. Лучше так сделать:код C++ Builder
if(Pos(Form2->ComboBox1->Text, *URL) ==/*ну или !=*/ 0)
{
  // код
}


Спасибо за понимание Dimon! Но указанная выше подсказка не пошла. Компилятор ругается:

[C++ Ошибка] Unit1.cpp(106): E2268 Call to undefined function 'Pos'

Что касается подсказки *Cancel = true; она действует. Но из-за того, что, наверное страница загружается по-элементно, данный код не дает
загружаться даже разрешенным сайтам, потому, что различные элементы страницы имеют URL отличный от разрешенного. Чтож, будем думать. Но я буду благодарен за любую подсказку. 

Автор: _Dimon_ 23.3.2012, 15:20
Цитата(ProgV @  23.3.2012,  08:42 Найти цитируемый пост)
Но из-за того, что, наверное страница загружается по-элементно, данный код не даетзагружаться даже разрешенным сайтам, потому, что различные элементы страницы имеют URL отличный от разрешенного. 


Ну да, впринципе. Хотя если даный функционал делается для детей, например, то страницу загрузит, а голую бабу, которая появилась на банере, нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)