Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 |

 

  Вопрос: Код не работает из библиотеки кодов. Добавлено: 25.08.04 00:28  

Автор вопроса:  CyRax  | Web-сайт: basicproduction.nm.ru | ICQ: 204447456 
Речь идёт о получении html текста из интернета через API.

У меня тестбокс всегда пустой.
Может кто поделится рабочим примером? Только не от IE.

Достали меня эти браузеры. Хочу чтобы совсем быстро страница грузилась. Вот думаю через блокнот смотреть или окошко RichEdit'а создать на крайняк.

Парсер я сам сделаю. Мне бы гипертекст получить с сайта.

Ответить

  Ответы Всего ответов: 39  

Номер ответа: 1
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #1 Добавлено: 25.08.04 04:24
Попробуй

Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_OPEN_TYPE_DIRECT = 1
Private Const INTERNET_OPEN_TYPE_PROXY = 3
Private Const scUserAgent = "VB Project"
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hOpen As Long, ByVal sUrl As String, ByVal sHeaders As String, ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer

Private Function OpenURL(ByVal sUrl As String) As String
Dim hOpen As Long
Dim hOpenUrl As Long
Dim bDoLoop As Boolean
Dim bRet As Boolean
Dim sReadBuffer As String * 2048
Dim lNumberOfBytesRead As Long
Dim sBuffer As String
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
bDoLoop = True
While bDoLoop
sReadBuffer = vbNullString
bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
Wend
If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
If hOpen <> 0 Then InternetCloseHandle (hOpen)
OpenURL = sBuffer
End Function

Кажется это в VBNet.ru и взято :)

Ответить

Номер ответа: 2
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #2 Добавлено: 25.08.04 04:25
У меня это работает

Ответить

Номер ответа: 3
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 25.08.04 21:47
 Спасибо, то что нужно.

Ответить

Номер ответа: 4
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #4 Добавлено: 25.08.04 23:41
А как можно осуществить перекодировку из KOI8-R в Windows-1251?

Ответить

Номер ответа: 5
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #5
Добавлено: 26.08.04 00:00
Ты имеешь ввиду есть ли такая API? Не думаю. Прийдётся наверное самому писать или через поисковик. По любому найдёшь.

Ответить

Номер ответа: 6
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #6 Добавлено: 26.08.04 00:29
Кажется нашел - вроде нужно использовать две функции

MultiByteToWideChar

WideCharToMultiByte

Ответить

Номер ответа: 7
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #7 Добавлено: 26.08.04 00:53
Все!!! :)))
Супер получилось!

Public Function Convert( _
    ByVal sString As String, _
    ByVal cpFrom As Long, _
    ByVal cpTo As Long) As String
    
  ;Dim lLenght As Long, lRetval As Long
  ;Dim sDst As String, sRet As String
  
  lLenght = Len(sString)
  
  sDst = String(lLenght * 2, vbNullChar)
  sRet = String(lLenght * 2, vbNullChar)
  
  lRetval = MultiByteToWideChar( _
    cpFrom, _
    MB_PRECOMPOSED, _
    sString, _
    lLenght, _
    sDst, _
    lLenght _
  ;)
  
  
  lRetval = WideCharToMultiByte( _
    cpTo, _
    0&, _
    sDst, _
    lRetval, _
    sRet, _
    lLenght * 2, _
    ByVal 0&, _
    0 _
  ;)
  
  Convert = Left(sRet, lRetval)
  
End Function

Ответить

Номер ответа: 8
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #8 Добавлено: 27.08.04 01:35
CyRax:
У меня в вышеуказанном коде InternetOpenUrl ужасно тормозит!

У тебя как?

Ответить

Номер ответа: 9
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #9
Добавлено: 27.08.04 21:15
 То что ты показывал перекодирует из ANSI в UNICODE.

 Да, тормозит. Я думал из за Dial-up'а. А ты думаешь почему?

Ответить

Номер ответа: 10
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #10 Добавлено: 27.08.04 21:20
2Lister:
> А как можно осуществить перекодировку из KOI8-R в Windows-1251?

Скачай из раздела "ActiveX" контрол SimpleSMTP - там есть функция преобразования Win->KOI, несложно переделать её "наоборот".

Ответить

Номер ответа: 11
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #11 Добавлено: 28.08.04 02:18
Я уже самостоятельно сотворил код - ОТЛИЧНО работает!
Но за совет спасибо!


Ответить

Номер ответа: 12
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #12 Добавлено: 28.08.04 02:21
1) То, что я показывал, также перекодирует из KOI8-R в Windows-1251 - я сегодня
перекодировал около 9000 файлов...
И сейчас продолжаю этим заниматься.

2) у меня выделенка - тормозит однозначно! Диалап не при чем.

Тормозит именно использование этой функции. Почему - не знаю.
На открытие урла тратится секунд 5-10, не меньше.


Ответить

Номер ответа: 13
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #13
Добавлено: 28.08.04 19:00
Ну я могу ещё на PB потестить. Если и там тормозить будет, тогда наверное прийдётся что другое искать. Можно контрол DaSharm'а поковырять. Может там что нибудь удастся найти.

Ответить

Номер ответа: 14
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #14 Добавлено: 28.08.04 19:19
Но тормозит страшно, это факт... В компилированном виде не пробовал,
но в режиме отладки у меня иногда ВСЯ система подвисает секунд на 15.

А вообще у меня была такая задача:
нужно было загрузить из сети и преобразовать из KOI8-R в WIN-1251
около 9000 файлов. Заняло несколько часов. Параллельно на компе вообще
работать было нельзя :(


Ответить

Номер ответа: 15
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #15
Добавлено: 28.08.04 20:24
 Висит потому что цикл без DoEvents.
 Сейчас попробую оптимизировать. Правда я это на PB делаю, так что для VB может и не проканать.

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам