Как реализовать клик по ссылке в компоненте WebBrowser?

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

Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 03.01.2009 (Сб) 18:51

Нужно каким либо образом осуществить клик по нужной ссылке на сайте загруженном в WebBrowser!?
все мои попытки это сделать пошли крахом!

делал так:
1)загружал сайт
2) выводил его хтмл код в текст бокс (Text1.Text = WebBrowser1.Document.documentElement.outerHTML)
3) в текстбоксе осуществлял поиск нужной мне ссылки по ее началу например (primer.php?id=)
4) осуществлял выделение этого самого id= (например- 21342423424)
5) посылал в текст бокс сочетание клавишь ctrl+c b и в другой текстбокс ctrl+v
6) складывал начало ссылки с ее id (x = Text2.Text + Text3.Text)
7) и переходил по сложенной ссылке (WebBrowser1.Navigate x)

может несколько тупо но по другому ни как не придумал но приведенный выше алгоритм не дает нужного результат нужен именно клик по ссылке на сайте! кому интересно вот код выше приведенного алгоритма:

Dim P As Integer
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const KEYEVENTF_KEYUP = &H2
Const VK_CONTROL = &H11
Const VK_C = &H43
Const VK_V = &H56

Private Sub Command3_Click()
If InStr(P, Text1.Text, Text2.Text) <> 0 Then
Text1.SetFocus
Text1.SelStart = InStr(P, Text1.Text, Text2.Text) + 32
Text1.SelLength = Len(Text2.Text)
P = InStr(P, Text1.Text, Text2.Text) + Len(Text2.Text)
Else
MsgBox "none"
End If
End Sub

Private Sub Command4_Click()
Text1.Text = WebBrowser1.Document.documentElement.outerHTML
End Sub

Private Sub Command5_Click()
WebBrowser1.Navigate "primer.net"
End Sub

Private Sub ShowStartMenu()
Text1.SetFocus
Call keybd_event(VK_CONTROL, 0, 0, 0)
Call keybd_event(VK_C, 0, 0, 0)
Call keybd_event(VK_C, 0, KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)
End Sub

Private Sub ShowStartMenu1()
Text3.SetFocus
Call keybd_event(VK_CONTROL, 0, 0, 0)
Call keybd_event(VK_V, 0, 0, 0)
Call keybd_event(VK_V, 0, KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)
End Sub
Private Sub Command6_Click()
ShowStartMenu
End Sub

Private Sub Command7_Click()
ShowStartMenu1
End Sub

Private Sub Command8_Click()
x = Text2.Text + Text3.Text
Print x
WebBrowser1.Navigate x
End Sub

Private Sub Form_Load()
P = 1
End Sub

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение Хакер » 03.01.2009 (Сб) 19:01

Это какое-то извращенство космического масштаба.

Надо всего-то:
Код: Выделить всё
link_element.click();
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 03.01.2009 (Сб) 19:04

Опыта и знаний пока маловато!
а поточнее можно код?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение Хакер » 03.01.2009 (Сб) 19:08

Приведённый мною код точен.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 03.01.2009 (Сб) 19:12

несомневаюсь! просто хочу увидеть пример!
к примеру на сайте http://ya.ru/ есть ссылка войти в почту! дак как код будет выгглядить если надо кликнуть именно по этой ссылке?
Извиняюсь за тупость!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение Хакер » 03.01.2009 (Сб) 19:46

Извиняться за тупость — тупо. Не тупо — искоренять собственную тупость (а она в первую очередь заключается в том, что ты пишешь предложения с маленькой буквы и ставишь в конце каждого восклицательный знак).

link_click_demo.rar
Пример
(1.42 Кб) Скачиваний: 277
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 03.01.2009 (Сб) 20:31

ну тут вы меня видимо не очень поняли или просто я дал плохое разъеснение того что не могу сделать.
допустим есть два сайта.
на обоих есть ссылка типа primer.ru/enter.php?id=234234234234234
но этот самый id у них разный
нужно чтоб программа находила на сайте такую ссылку (САМ ID может менятся каждый день к примеру и на каждом сайте он разный но начало везде одно primer.ru/enter.php?id=)
находила ее на первом сайте и тыкала по ней и так же находила на другом сайте и так же тыкала по ней

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение Хакер » 03.01.2009 (Сб) 20:47

Ну и что?

Да тебе надо так. Ты сказал что, что в этой задаче сложная для тебя часть — реализация клика. Я подсказал, как реализовать его. В чём проблемы, претензии, вопросы?

Хочешь ещё и реализацию поиска ссылки? Об этом не было ни слова.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 03.01.2009 (Сб) 20:52

у МЕНЯ нет к тебе ни каких притензий. но надо бы сделать поиск определенной ссылки на сайтах. возможно я просто сегодня очень туплю так как это вроде бы не сложно но я не догоняю как это сдеть.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение Debugger » 03.01.2009 (Сб) 21:57

Ты хочешь найти позицию и выдернуть код ссылки прямо из HTML - текста? InStr и Mid$ и Split как вариант бегут к тебе на помощь.

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 03.01.2009 (Сб) 21:59

я хочу найти ее и кликнуть по ней.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение Debugger » 03.01.2009 (Сб) 22:03

Прям мышкой? SetCursorPos и прочие функции (сто раз обсуждалось, поищи в "поиске") помогут тебе. Только ума не приложу, как ты найдешь абсолютную позицию ссылки (вопрос к Хакер'у, у меня нет этого компонента). Вероятно, у объекта ссылки есть параметры Top и Left, которые тоже помогут тебе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение Хакер » 03.01.2009 (Сб) 22:25

Debugger, ты советуешь ерунду.
DeMONiZ, что мешает тебе её найти?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 04.01.2009 (Вс) 8:23

Дак как я не знаю каким методом это сделать? ну допустим найду я ее используя свой код выше а как сопоставить с ней клик? я просто тупо не понимаю как осуществить поиск сслыки на какой либо странице и имитировать клик по ней.

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 04.01.2009 (Вс) 8:27

Debugger ты и правдв советуешь не то что мне надо. такой клик по ссылке сделать не сложно но, ссылка на кждой страницк размещена в разных местах........да и на сколько я понимаю при методе который ты говоришь придется использовать SetFocus а в моем случае это опять же не хорошо так как программа должна быть всегда в фокусе - мне же это не нужо

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 04.01.2009 (Вс) 8:38

дайте мне люди пример кода который бы искал на загруженной странице ссылки типа http://webprimer.ru/id.php?id=67583022 и кликал по ним.
но еще раз говорю Id на этих ссылках меняется каждый день а начало остается не тронутым ( http://webprimer.ru/id.php?id ) Помогите пожалусто у меня уже крыша едет от этой темы перерыл поиски ни чего конкретного и похожегго не нашел :-( потому и обратился к вам

ACiD
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 261
Зарегистрирован: 10.12.2005 (Сб) 2:29
Откуда: г. Санкт - Петербург

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение ACiD » 04.01.2009 (Вс) 14:47

Как я понял нужно всего лишь выделить из текста строку вида http://webprimer.ru/id.php?id=Я идиот! Убейте меня, кто-нибудь!??? и перейти по ней или что - то другое?

Код: Выделить всё
txt = " asdfasdfas fsdfj s fsfhttp://vkontakte.ru/profile.php?id=5564592 asdfsdfsdf"
pos = InStr(txt, "http://vkontakte.ru/profile.php?id=")
txt = Mid(txt, pos)
pos = InStr(txt, " ")
txt = Mid(txt, 1, pos - 1)
wb.Navigate txt
Правда будет работать только после входа на сайт.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение Хакер » 04.01.2009 (Вс) 15:22

Перебери коллекцию wb.document.links, найди в ней нужную ссылку и сделай крик.

Применительно к яндексу:
Код: Выделить всё
For Each TestLink In wb.document.links
    If TestLink.innerText="Войти в почту" Then
        TestLink.click
        Exit For     
    End If
Next TestLink
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 05.01.2009 (Пн) 8:19

Хакер спасибо.
и последнее что меня интерсесует в этой теме как сделать так чтоб он после нахождения ссылки "Войти в почту" не кликал по ней а кликал по 5 ссылкам которые находятся ниже и выбирал по какой кликнуть рандамом. в этом впринципе и заключается моя первоначальная задача.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение dr.MIG » 05.01.2009 (Пн) 19:55

wb.document.links -- из примера выше -- это массив, содержащий все ссылки на странице (как работать с массивами знаешь?). Определяй индекс (i) ссылки "Войти в почту", пять следующих ссылок будут иметь индекс i+5. Генерируй случайное число в диапазоне от i+1 до i+5. И кликай по ссылке, с индексом, равным только что сгенерированному числу.
Salus populi suprema lex

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 05.01.2009 (Пн) 21:10

В смысле определяешь?
как это сделать?

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 05.01.2009 (Пн) 21:32

Вроде просто а сделать не могу....

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение dr.MIG » 05.01.2009 (Пн) 22:23

Как-то так
Код: Выделить всё
    Dim i As Long, cur As Long
    Randomize
    WebBrowser1.Navigate "http://yandex.ru"
    While WebBrowser1.ReadyState <> READYSTATE_COMPLETE
        DoEvents
    Wend
    For Each TestLink In WebBrowser1.Document.links
        If TestLink.innerText = "Войти в почту" Then
            Exit For
        End If
        i = i + 1
    Next TestLink
    cur = Int(6 * Rnd + i + 1)
    WebBrowser1.Document.links(cur).Click
Salus populi suprema lex

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 06.01.2009 (Вт) 0:20

Спасибо большое! ты за меня прям весь код написал :-)
а еще два дня назад я считал эту задачу невозможной...

ZZnOB
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 29.12.2008 (Пн) 20:17

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение ZZnOB » 10.01.2009 (Сб) 13:43

на сколько я понял человек пишет накрутчик партнерок...

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение MIT » 10.01.2009 (Сб) 14:38

2ZZnOB: Не ты один такой :wink:
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение tyomitch » 10.01.2009 (Сб) 14:49

А у нас не запрещено обсуждать накрутчики.
Только злонамеры.
Изображение

ZZnOB
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 29.12.2008 (Пн) 20:17

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение ZZnOB » 10.01.2009 (Сб) 21:36

Нет...я против то ничего не имею...просто мне интересно, каким образом стартер топика будет осуществлять учет этих кликов...
ЗЫ: Сам такую же пишу :D

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение DeMONiZ » 11.01.2009 (Вс) 15:12

ты уверен что я накрутуик то пишу? я пишу программы для серферов.....rassola.net

ZZnOB
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 29.12.2008 (Пн) 20:17

Re: Как реализовать клик по ссылке в компоненте WebBrowser?

Сообщение ZZnOB » 12.01.2009 (Пн) 16:20

ты уверен что я накрутуик то пишу? я пишу программы для серферов.....

На 70% уверен....Иначе, зачем нужна эмуляция клика... если и реферер страницы кушается хорошо :)

След.

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

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

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

    TopList