Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Помогите с API !!!!!!!!!!!!!!!!!!!!!!!!!!!! Добавлено: 12.09.08 16:09  

Автор вопроса:  Сергей | ICQ: 558230345 
  Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
    Public Const INTERNET_OPEN_TYPE_DIRECT = 1
    Public Const INTERNET_OPEN_TYPE_PROXY = 3

    Public Const scUserAgent = "VB Project"
    Public Const INTERNET_FLAG_RELOAD = &H80000000

    Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Int32, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Int32
    Public 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
    Public Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, ByVal lNumberOfBytesRead As Long) As Integer
    Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer


    Public Function OpenURL(ByVal sUrl As String) As String
        Dim hOpen As Int32 = -1
        Dim hOpenUrl As Long
        Dim bDoLoop As Boolean
        Dim bRet As Boolean
        Dim sReadBuffer As String
        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 & sReadBuffer 'Mid(sReadBuffer, 0, lNumberOfBytesRead)
            If Not CBool(lNumberOfBytesRead) Then
                bDoLoop = False
            End If
        End While

        If hOpenUrl <> 0 Then
            InternetCloseHandle(hOpenUrl)
        End If
        If hOpen <> 0 Then
            InternetCloseHandle(hOpen)
        End If
        OpenURL = sBuffer

    End Function

Скачано с интернета. Бьюсь уже 2 дня! Говорят, что должно работать.
А у меня валится ошибка:

A call to PInvoke function 'Post_Reg!Post_Reg.Comun::InternetOpen' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.

Ответить

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

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



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 12.09.08 20:47
Не забивай себе голову всякой ерундой.. в NET API в подавляющем случае не нужны.
Судя по всему ты пытаешься скачать страницу.. так вот для этого достаточно буквально 2-3 строк кода. Открываешь MSDN или Google и ищешь пример по System.Net.WebClient.. Там все достаточно тривиально.

Ответить

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



ICQ: 249094859 

Вопросов: 0
Ответов: 310
 Профиль | | #2 Добавлено: 13.09.08 07:55
Ну а если таки хочется все же мазохизма, то замени в коде Long на Integer

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 14.09.08 07:37
  1. Dim WC As New System.Net.WebClient
  2. Dim Text = WC.DownloadString("http://www.vbnet.ru/")

Ответить

Номер ответа: 4
Автор ответа:
 Сергей



ICQ: 558230345 

Вопросов: 7
Ответов: 91
 Профиль | | #4 Добавлено: 15.09.08 09:03
Ну а если таки хочется все же мазохизма, то замени в коде Long на Integer


уже менял....Эффект тот-же.

Ответить

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



ICQ: 249094859 

Вопросов: 0
Ответов: 310
 Профиль | | #5 Добавлено: 15.09.08 09:35
Сергей пишет:
уже менял....Эффект тот-же.
Не верю! Как менял, показывай.
З.Ы. Но правильней конечно юзать встроенные в фреймворк средства.

Ответить

Номер ответа: 6
Автор ответа:
 Сергей



ICQ: 558230345 

Вопросов: 7
Ответов: 91
 Профиль | | #6 Добавлено: 15.09.08 09:41
можно ли попросить пример того же но без API?

А в этом примере я поменял описание, но считывать файл все равно не хочет.

Ответить

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



ICQ: 249094859 

Вопросов: 0
Ответов: 310
 Профиль | | #7 Добавлено: 16.09.08 08:45
3-ий ответ смотри

Ответить

Страница: 1 |

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



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