сохранить картинку на диск из WB1

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

сохранить картинку на диск из WB1

Сообщение Сергей-Тюмень » 17.03.2009 (Вт) 9:48

Здравствуйте, есть следующая задача:

Загружаю в компонент WB1 одну картинку


asf = "http://fsb.gov/img/index/putin.jpg"
WB1.Navigate asf

но не могу эту картинку сохранить на диск без всяких окон "сохранить как..".
нужно просто сохранить под именем 001.jpg ,например, на диск C:\\

может кто поможет примером кода..

заранее спасибо за ответ....

BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

Re: сохранить картинку на диск из WB1

Сообщение BION » 17.03.2009 (Вт) 11:15

Сергей-Тюмень писал(а):Здравствуйте, есть следующая задача:

Загружаю в компонент WB1 одну картинку


asf = "http://fsb.gov/img/index/putin.jpg"
WB1.Navigate asf

но не могу эту картинку сохранить на диск без всяких окон "сохранить как..".
нужно просто сохранить под именем 001.jpg ,например, на диск C:\\

может кто поможет примером кода..

заранее спасибо за ответ....

Код: Выделить всё
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" ( _
    ByVal pCaller As Long, ByVal zURL As String, ByVal szFileName As String, ByVal dwReserved As Long, _
    ByVal lpfnCB As Long) As Long

Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean
    Dim lngRetVal As Long
    lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
    If lngRetVal = 0 Then DownloadFile = True
End Function
Private Sub Form_Load()
    DownloadFile "http://fsb.gov/img/index/putin.jpg", "c:\putin.jpg"
End Sub
Буээ!

Сергей-Тюмень
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 17.03.2009 (Вт) 9:23

Re: сохранить картинку на диск из WB1

Сообщение Сергей-Тюмень » 17.03.2009 (Вт) 12:16

Спасибо за быстрый ответ.....Но не уверен что будет работать в конкретном случае...
Попробую конкретизировать:

На самом деле нужна собственно не картинка а pdf документ (многостраничный, это кандидатская)....обращаться на прямую к pdf (команды, менеджеры закачек и тп.) бесполезно срабатывает защита. Можно постранично просматривать документ через IntExplorer и сохранять как изображение каждую страничку отдельно (правой кнопкой мыши..)

Есть идея получить\сгенерировать список всех страниц в документе (сделано), програмно и постранично загружаю картинки в WB1(сделано), а вот дальше проблема, как сохранять это на диск, пробывал через WB1.ExecWB, но там или выскакивает окно SaveAs или надо заморачиваться с буфером обмена.....

WB1.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DONTPROMPTUSER
WB1.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DONTPROMPTUSER

а потом в буфере копаться...



Предложенный Вами вариант это API ,наверное, (я не силен в программировании так что не бейте)...а надо я думаю через аналог InternExplore...
но все равно спасибо за ответ...попробую когда буду в библиотеке...

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

Re: сохранить картинку на диск из WB1

Сообщение dr.MIG » 17.03.2009 (Вт) 15:22

Так если не нужно взаимодействие с пользователем, то для чего WebBrowser нужен? Предложенный вариант, как раз закачивает картинку, расположенную по адресу "http://fsb.gov/img/index/putin.jpg", надо посмотреть какой путь в данном случае к картинке и изменить соответствующим образом предложенный код. Тем более, если список страниц уже есть, то непонятно в чем конкретно проблемы.
Salus populi suprema lex

Сергей-Тюмень
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 17.03.2009 (Вт) 9:23

Re: сохранить картинку на диск из WB1

Сообщение Сергей-Тюмень » 18.03.2009 (Ср) 7:37

Через интернет эксплорер происходит идентификация пользователя, вводится имя пользователя и номер читательского...потом качать разрешается только через него....(так бы я этот список загрузи в regget какой-нибудь). Если я ссылку напрямую пытаюсь сохранить, то закачивается только страничка авторизации.....
Поэтому и думаю использовать контрол webbrouser (WB1).....
еще раз спасибо за содействие

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

Re: сохранить картинку на диск из WB1

Сообщение dr.MIG » 18.03.2009 (Ср) 8:20

HTTPRequest в помощь (примеров работы с ним на форуме много). Проверяешь авторизован или нет. Если нет, то при помощи вышеуказанного класса посылаешь регистрационные данные в скрипт авторизации и далее используешь код, который приведен выше.
Salus populi suprema lex

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: сохранить картинку на диск из WB1

Сообщение Andrey Fedorov » 18.03.2009 (Ср) 9:11

Код: Выделить всё
XmlHttp.Open "GET", sUrl, m_bAsync, m_sUser, m_sPassord
...
XmlHttp.send
...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Сергей-Тюмень
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 17.03.2009 (Вт) 9:23

Re: сохранить картинку на диск из WB1

Сообщение Сергей-Тюмень » 18.03.2009 (Ср) 13:50

Ни и злые Вы господа :)))
я второй раз компьютер вижу, а Вы про HTTPRequest

1.
HTTPRequest в помощь (примеров работы с ним на форуме много).


Ввел в форму поиска HTTPRequest , что-то пример не нашел, наверное плохо искал....
2.
Проверяешь авторизован или нет.
. В интернете нашел вот такое свойство IsAuthenticated.....но в VB6 у себя не найду... :oops:

3.
XmlHttp.Open "GET", sUrl, m_bAsync, m_sUser, m_sPassord
...
XmlHttp.send


Я пишу

Dim HttpRequest As New WinHttp.WinHttpRequest
Dim sUrl, m_sUser, m_sPassord As String

sUrl = "http://fsb.gov/img/index/putin.jpg"
m_sUser = "serg"
m_sPassord = "111"

HttpRequest.Open "Get", sUrl, Async = True, m_sUser, m_sPassord
HttpRequest.Send
DownLoadFile sUrl, "c:\putin.pdf"

****
m_sUser, m_sPassord , а вот этих параметров что-то HttpRequest VB6 не знает у меня.....


4. итог...Во первых, боюсь сейчас моих знаний не хватит для освоения с наскоку HttpRequest.., . Второе, если даже разберусь, RegGet позволяет на закачку выставить пароль и пользователя, думаю он использует этот же объект, но этот вариант не прокатывает качается только первая страница.......(конечно если осилю, то обязательно попробую через HttpRequest )

5. Думаю надо идти другим путем.
1-Перевожу курсор на центр экрана
2-Програмно нажимаю правую кнопку мыши
3-Програмно выбираю Сохранить изображение как
4-В окне програмно нажимаю кнопку сохранить (это вроде я знаю как) и програмно указываю куда и под каким именем (вот это что-то не очень)
5-Уже на страничк програмно нажимаю на кнопку Следующая страничка (ну это вроде тоже представляю как)
6-И зацикливаю это все дело столько раз сколько страниц.

*****
Хотелось бы знать насколько перечисленное реально/и вообще выполнимо...и если выполнимо, хотя бы по первым трем пунктам дайте наводочку какими объектами,API или еще чем пользоваться......

PS: Причем если я сохраняю через стандартную команду IE Save as картинка не сохраняется.....Так что или через буфер обмена или через, правая кнопка мыши СОхранить изображение как....

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

Re: сохранить картинку на диск из WB1

Сообщение dr.MIG » 18.03.2009 (Ср) 15:09

Сергей-Тюмень писал(а):Ни и злые Вы господа :)))

This is Sparta :).

Вот одна процедура из моего проекта, выполнявшая подобную задачу:
Код: Выделить всё
Private Sub step3(lnk)
   Dim http_req As New WinHttpRequest, textStep3 As String
   
    http_req.Open "GET", linkStep2 & lnk & "/" 'открыли страницу, где картинка должна быть
    http_req.Send
    If http_req.Status = 200 Then
        textStep3 = http_req.ResponseText 'Теперь в textStep3 у нас HTML-код запрошенной страницы
        If InStr(1, textStep3, "Username:") > 0 Then 'Проверяем, авторизованы ли мы. В моем случае я искал слово "Username:", которое появлялось, только когда человек не авторизован
                http_req.Abort
                http_req.Open "POST", "http://xxx.xx/xxx/login.asp" 'скрипт, отвечающий за авторизацию (чтобы его узнать см. HTML-код, форма авторизации, значение параметра action)
                http_req.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
                http_req.Send "username=" & txtLogin.Text & "&password=" & txtPassword.Text  & "/" 'скармливаем скрипту логин и пароль (не забыв их предварительно urlencoded)
                textStep3 = http_req.ResponseText 'теперь в textStep3 HTML-код страницы для авторизованного юзера
                isRegistered = True
        End If
            Dim HTMLDocument
            Set HTMLDocument = CreateObject("HTMLFile")
            HTMLDocument.Clear
            HTMLDocument.Open
            HTMLDocument.write textStep3
                For Each element In HTMLDocument.All.tags("IMG") 'перебираем все картинки на странице
                        'здесь был код, который в данном случае не нужен. В твоем случае сюда надо поместить что-то такое:
                         DownloadFile element.getAttribute("href"), "C:\blabla\blabla.jpg" 'используем element.getAttribute("href") только если в href картинки абсолютный путь к файлу, если относительный, то предварительно собираем полный путь
                Next
    End If
End Sub


Не думаю, что это будет труднее эмуляции щелканья по WB и всевозможным диалоговым окнам.
Salus populi suprema lex

Сергей-Тюмень
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 17.03.2009 (Вт) 9:23

Re: сохранить картинку на диск из WB1

Сообщение Сергей-Тюмень » 19.03.2009 (Чт) 13:17

ОООООО, код да еще с коментариями...... Огромное спасибо..
Пойду мучить VB6....


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

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

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

    TopList