Страница: 1 |
Страница: 1 |
Вопрос: Помогите с API !!!!!!!!!!!!!!!!!!!!!!!!!!!!
Добавлено: 12.09.08 16:09
Автор вопроса: Сергей | ICQ: 558230345
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
Номер ответа: 4
Автор ответа:
Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #4
Добавлено: 15.09.08 09:03
уже менял....Эффект тот-же.
Номер ответа: 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-ий ответ смотри