Помогите разобраться

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 13.01.2013 (Вс) 21:52

Код: Выделить всё
Private Sub Command1_Click()
WebBrowser1.Document.getElementsByTagName("iframe")(1).content
WebBrowser1.Document.getElementsByTagName("iframe")(1).src
WebBrowser1.Document.All("iframe").Click
End Sub

Где ошибка?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 13.01.2013 (Вс) 22:00

Везде.

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 13.01.2013 (Вс) 22:05

ну помогите же пожалуйста..

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 13.01.2013 (Вс) 22:10

Я уже написал. Хотя возможно, там действительно SecurityException...
В любом случае, твой код делает не это. Думай. Ни одной нормальной строки в этих трёх не вижу.

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 13.01.2013 (Вс) 22:15

а написал где? что именно?

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 13.01.2013 (Вс) 22:55

не могу найти ответа...неужели ни кто не поможет?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 13.01.2013 (Вс) 23:01

Начинай разгребать (теперь на VB.NET):
Код: Выделить всё
Imports System.Text

Public Class Form1

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Long
Public Const WM_SETTINGCHANGE As Integer = &H1A

Private IEOptions As Microsoft.Win32.RegistryKey = Nothing, Images As Object = Nothing
Private GoogleAdd As Boolean

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Try
    IEOptions = My.Computer.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Internet Explorer\Main", True)
    Images = IEOptions.GetValue("Display Inline Images")
    SendMessage(Web.Handle, WM_SETTINGCHANGE, 0, 0)
  Catch Ex As Exception
    MsgBox(Ex.Message)
  End Try

  Web.Navigate("http://porschecayenneauto.narod.ru/")
  GoogleAdd = False
End Sub

Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
  If IEOptions IsNot Nothing Then IEOptions.SetValue("Display Inline Images", Images)
  End
End Sub

Private Sub Web_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles Web.DocumentCompleted
  If e.Url.ToString().StartsWith("http://googleads.g.doubleclick.net/pagead/ads") Then
    If Not GoogleAdd Then
      GoogleAdd = True
      Web.Navigate(e.Url)
    Else
      For Each Link As HtmlElement In Web.Document.Links
        If MsgBox(Link.GetAttribute("href"), vbYesNo, "Do you want to click it?") = MsgBoxResult.Yes Then
          Link.InvokeMember("click")
          Exit For
        End If
      Next Link
    End If
  End If
End Sub

End Class


UPDATE (+4 min): Сначала подумал, что перемудрил и переход на сам googleadds не нужен, попытался убрать и получилась какая-то фигня... Так что пусть остаётся, если не мешает.
Последний раз редактировалось Qwertiy 13.01.2013 (Вс) 23:05, всего редактировалось 1 раз.

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 13.01.2013 (Вс) 23:04

блин. я в шестом слабоват а в нет тем более ни хрена не понимаю

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 13.01.2013 (Вс) 23:07

theal писал(а):блин. я в шестом слабоват а в нет тем более ни хрена не понимаю

На WinApi и работу с реестром для отключения картинок можешь внимания не обращать :)
А работа с html вполне понятна должна быть.

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 13.01.2013 (Вс) 23:16

этот код надо в форму ставить ? блин...в форме он весь красным цветом
Говорила мама учись сынок :)
короче говоря я ничего не понимаю
пишет invalid outside procedure
Код: Выделить всё
Private Sub Command1_Click()
If e.Url.toString().StartsWith("http://googleads.g.doubleclick.net/pagead/ads") Then  ----ЗДЕСЬ ВЫДАЁТ ОШИБКУ
        If Not GoogleAdd Then
          GoogleAdd = True
          Web.Navigate (e.Url)
        Else
          For Each Link In Web.Document.Links
            If MsgBox(Link.getAttribute("href"), vbYesNo, "Do you want to click it?") = MsgBoxResult.Yes Then
              Link.InvokeMember ("click")
              Exit For
            End If
          Next Link
        End If
      End If
End Sub


ЧТО ЗНАЧИТ,.

?
Код: Выделить всё
If e.Url.toString().StartsWith("http://googleads.g.doubleclick.net/pagead/ads") Then
Последний раз редактировалось theal 13.01.2013 (Вс) 23:49, всего редактировалось 1 раз.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 13.01.2013 (Вс) 23:48

Ну нельзя же VB.NET-код вставлять в VB6!
И этот код не в обработчмке клика расположен!

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 13.01.2013 (Вс) 23:51

ну помоги пожалуйста...прошу тебя очень, объясни как нужно делать.
буду очень благодарен тебе
Вот этот код
Код: Выделить всё
Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
можно заменить этим?
Код: Выделить всё
Private Sub Form_Load()
потому что Handles выдаёт ошибку
Последний раз редактировалось theal 14.01.2013 (Пн) 0:02, всего редактировалось 1 раз.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.01.2013 (Пн) 0:02

Основная идея в том, что DocumentCompleted выполняется не только для самой страницы, но и для каждолго iframe'а внутри неё.
Получение url iframe'а рекламы позволяет открыть его в браузере в качестве основной страницы. Однако, этого можно было бы и не делать, если бы получилось добраться до его содержимого сразу.

Да, твой цикл неправильный ещё и потому что существование документа не означает, что он загружен.

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 14.01.2013 (Пн) 0:08

а как его загрузить?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.01.2013 (Пн) 0:10

Handles означает обработчик события. Да, нужно обработать соответствующее событие.

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

UPDATE:
theal писал(а):Последний раз редактировалось theal 14.01.2013 (Пн) 1:02, всего редактировалось 1 раз.

Теперь да.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.01.2013 (Пн) 0:12

theal писал(а):а как его загрузить?

А что по-твоему делает вызов Navigate?

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 14.01.2013 (Пн) 0:15

navigate - загружает страницу. Только "http://googleads.g.doubleclick.net/pagead/ads" он не может загрузить

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.01.2013 (Пн) 0:17

theal писал(а):navigate - загружает страницу. Только "http://googleads.g.doubleclick.net/pagead/ads" он не может загрузить

Может, если правильно url указать. Например:
Код: Выделить всё
http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-7481866188445527&output=html&h=280&slotname=3682958945&w=336&lmt=1358106654&ea=0&flash=11.6.602.137&url=http://porschecayenneauto.narod.ru/&dt=1358106654391&shv=r20130102&jsv=r20121214&saldr=1&correlator=1358106654415&frm=20&adk=1656017953&ga_vid=1066074885.1358106654&ga_sid=1358106654&ga_hid=606056404&ga_fc=0&u_tz=240&u_his=0&u_java=1&u_h=1080&u_w=1920&u_ah=1050&u_aw=1920&u_cd=32&u_nplug=0&u_nmime=0&dff=arial&dfs=0&adx=0&ady=0&biw=1903&bih=1028&oid=3&docm=7&fu=0&ifi=1&dtd=32
Последний раз редактировалось Qwertiy 14.01.2013 (Пн) 0:20, всего редактировалось 3 раз(а).

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 14.01.2013 (Пн) 0:19

но ведь на разных страницах окончание url разное , даже при обновлении оно может измениться.А как я могу его найти?

полный урл загружает фрейм и всё
Последний раз редактировалось theal 14.01.2013 (Пн) 0:25, всего редактировалось 1 раз.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.01.2013 (Пн) 0:23

theal писал(а):но ведь на разных страницах окончание url разное , даже при обновлении оно может измениться.А как я могу его найти?

А как я нашёл? Изучай код.
Кстати, кажется, содержимое этого add'а меняется, но не думаю, что это важно.

theal писал(а):ЧТО ЗНАЧИТ,.?
If e.Url.toString().StartsWith("http://googleads.g.doubleclick.net/pagead/ads") Then

Если url, загрузка которого завершилась, как строка начинается с "http://googleads.g.doubleclick.net/pagead/ads", то ...
Давай старые сообщения не очень радактировать, особенно через длительное время.

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 14.01.2013 (Пн) 0:28

то что? и это ведь надо как то под webbrowser отредактировать? или нет?
например с e.url я впервые встречаюсь

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.01.2013 (Пн) 0:30

theal писал(а):то что? и это ведь надо как то под webbrowser отредактировать? или нет?

Не понял.

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 14.01.2013 (Пн) 0:31

ну я имею ввиду что, это e.url как то найти надо чтобы он загрузился в webbrowser
webbrowser ведь не знает что это за урл такой

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.01.2013 (Пн) 0:38

theal писал(а):webbrowser ведь не знает что это за урл такой

Изображение Изображение Изображение
А если всё-таки подумать?
Вложения
00_036_bj.gif
(27.45 Кб) Скачиваний: 366

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 14.01.2013 (Пн) 0:41

ну не смейся на до мной.просто ты знаешь ответ а я не врублюсь ни как
я загружаю полный урл и в окне браузера только реклама гугла.
Последний раз редактировалось theal 14.01.2013 (Пн) 0:45, всего редактировалось 1 раз.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.01.2013 (Пн) 0:45

theal писал(а):ну не смейся на до мной.просто ты знаешь ответ а я не врублюсь ни как

Просто фраза, что браузер не знает url, который загружает - это нечто :D

theal писал(а):я загружаю полный урл и в окне браузера только реклама урл.

Не понял.

theal писал(а):например с e.url я впервые встречаюсь

Да, в VB6 оно не e.Url. Напиши ещё раз как выглядит обработчик DocumentCompleted в VB6 и посмотри на него.

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 14.01.2013 (Пн) 0:47

Код: Выделить всё
While WebBrowser2.ReadyState <> READYSTATE_COMPLETE
        DoEvents
    Wend
    For Each testlink In WebBrowser2.Document.links
    If InStr(1, testlink.href, "http://googleads.g.doubleclick.net/pagead/ads?", vbTextCompare) Then
        List1.AddItem testlink.innerText
        Text3 = Text3 + WebBrowser2.LocationURL + Chr(13) + Chr(10)
         testlink.Click
            Exit For
        End If
            i = i + 1
    Next testlink
опять не так что то?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.01.2013 (Пн) 0:51

theal писал(а):опять не так что то?

Всё не так!!!

Qwertiy писал(а):Напиши ещё раз как выглядит обработчик DocumentCompleted в VB6 и посмотри на него.
Последний раз редактировалось Qwertiy 14.01.2013 (Пн) 0:52, всего редактировалось 1 раз.

theal
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 148
Зарегистрирован: 03.05.2009 (Вс) 16:12

Re: Помогите разобраться

Сообщение theal » 14.01.2013 (Пн) 0:51

теперь я не понял

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.01.2013 (Пн) 0:52

theal писал(а):теперь я не понял

Ты уже писал его в посте вместо Form_Load.

Пред.След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 49

    TopList