Ducis писал(а):
'Вариант 2
'Расположите на форме элемент CommandButton.
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL 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 Command1_Click()
DownloadFile "http://sharig.webzone.ru", "c:\sharig_webzone_ru.htm"
End Sub
Если необходимо загрузить файл из интернета, то вот еще:
Private Declare Function DoFileDownload Lib "shdocvw.dll" (ByVal lpszFile As String) As Long
Private Sub Command1_Click()
DownLoadFile "http://demin.narod.ru/2001/wall/", "wall3.jpg"
End Sub
Public Sub DownLoadFile(sUrl As String, sFile As String)
Dim DL As Long
On Error GoTo errHandler
If sUrl$ = "" Then sUrl$ = strUrl$
If strUrl$ = "" Then strUrl$ = sUrl$
If Left(strUrl$, 4) <> "http" Then strUrl$ = "http://" & strUrl$
If Right$(strUrl$, 1) <> "/" Then strUrl$ = strUrl$ & "/"
If Left$(sFile$, 1) = "/" Then sFile = Mid$(sFile$, 2)
DL& = DoFileDownload(StrConv(strUrl$ & sFile$, vbUnicode))
Exit Sub
errHandler:
Debug.Print "Error Source:", Err.Source
Debug.Print "Error Description:", Err.Description
Debug.Print "Error Number:", Err.Number
MsgBox "An error has occured attempting to start download to " & sUrl & sFile$ & ".", vbApplicationModal + vbCritical + vbDefaultButton1, "Error"
End Sub
tyomitch писал(а):mark+, Santa - ведь только что выкладывал качалку в Кирпичах! ... И контролов левых не надо.
Расположите на форме элемент Inet (меню Project|Components - Microsoft Internet Transfer Control 6.0).
'Вариант 1
'Расположите на форме элемент Inet (меню Project|Components - Microsoft Internet Transfer Control 6.0).
Private Sub Form_Load()
Dim b() As Byte
'установить протокол HTTP
Inet1.Protocol = icHTTP
'установить скачиваемый адрес
Inet1.URL = "http://www.microsoft.com"
'загрузить данные HTML-страницы в массив
b() = Inet1.OpenURL(Inet1.URL, icByteArray)
'создать файл на диске и записать в него информацию
Open "c:\test.htm" For Binary Access Write As #1
Put #1, , b()
Close #1
End Sub
tyomitch писал(а):... а чем мой кирпич-то вас всех не устроил?
Там в примере и отмена есть, и процент закачки.
VAngel писал(а):А можно для первого варианта узнать на сколько скачался файл? получить скажем процент закачки
....
Picture1.ScaleMode=3
Open "с:" & GetFileName(Text1.Text) For Binary As #intFile
....
Private Sub Inet1_StateChanged(ByVal State As Integer)
If State = 12 Then
Dim R, dblIncreas
Dim varData As Variant
Dim byteTempArray() As Byte
Dim lngFileSize As Long
Dim dblIncrease, bit, bit1 As Double
bolDone = False
bit1 = 0
cmb = cmb + 1
dblIncreas = 0
lngFileSize = Inet1.GetHeader("Content-length")
bit = lngFileSize / 1024
Text5.Text = Mid(bit, 1, 4) & "Kb"
dblIncrease = FormatNumber((1024 / lngFileSize) * 300, 4)
varData = Inet1.GetChunk(1024, icByteArray)
DoEvents
Do While Not bolDone
byteTempArray = varData
Put #intFile, , byteTempArray
bit1 = bit1 + (Len(varData) * 2) / 1024
Text4.Text = Mid(bit1, 1, 4) & "Kb"
'Мой прогресс бар
'Ну захотелось мозги попарить
If dblIncrease < Picture1.ScaleWidth Then
R = Bar(dblIncreas, dblIncrease, False)
dblIncreas = dblIncreas + Int(dblIncrease)
Else
R = Bar(dblIncreas, 1, True)
End If
varData = Inet1.GetChunk(1024, icByteArray)
DoEvents
шf Len(varData) = 0 Then
bolDone = True
End If
Loop
Close #intFile
End If
'определение имени фыйла
Private Function GetFileName(strUrl As String) As String
GetFileName = Mid(strUrl, InStrRev(strUrl, "/") + 1)
If InStr(GetFileName, "?") Then GetFileName = (Left(GetFileName, InStr(GetFileName, "?") - 1))
nam = GetFileName
Text3.Text = GetFileName 'Mid(GetFileName, InStrB(GetFileName, "?") - 1)
End Function
Private Function Bar(ByVal value As Integer, ByVal val As Integer, ByVal refresh As Boolean)
Dim x
x = Picture1.ScaleHeight
Picture1.DrawWidth = val
Picture1.Line (value, 1)-(value, x - 1), &HC000&
If value > Picture1.ScaleWidth Then value = 0
Label2.Caption = Int(value / (Picture1.ScaleWidth / 100)) & "%"
If refresh = True Then
value = 0
End If
End Function
tyomitch писал(а):Бяка, к моему Кирпичу приложена демка с возможностью отмены закачки. Можешь посмотреть там.
tyomitch писал(а):а чем мой кирпич-то вас всех не устроил?
Там в примере и отмена есть, и процент закачки.
Santa писал(а):tyomitch писал(а):... а чем мой кирпич-то вас всех не устроил?
Там в примере и отмена есть, и процент закачки.
кирпич то хорош, но лично мне не понятен из-за tlb, к тому же тот пример (ссылку) который вы указали выше не отражает той полноты корой бы хотелось. К примеру там 1 фукция у Вас 3 (Urlmon) с возможностью закачки не посредственно в текстовое окно, но и выше указанные возможности тоже не моло важны. Если не сложно перепишите Ваш пример без tlb. Вам как знающему человеку это не сложно, а нам просто необходимо (по крайней мере лично мне). Надеюсь убедил.
Бяка писал(а):tyomitch писал(а):Бяка, к моему Кирпичу приложена демка с возможностью отмены закачки. Можешь посмотреть там.
А как его под Inet зыделать?
VAngel писал(а):у тебя там, в примере, уж очень сильное колдунство не подвластное мне
tyomitch писал(а):В clsKackalka? Так не смотри внутрь неё
Просто пользуй.
Бяка писал(а):tyomitch писал(а):В clsKackalka? Так не смотри внутрь неё
Просто пользуй.
просто использовать мона и reget
tyomitch писал(а):А какой полноты нехватает в примерах?
Dim at As Variant
Inet1.Execute "http://creep.ru/index.html", "HEAD"
Do
If Inet1.StillExecuting = False Then Exit Do
DoEvents
Loop
at = Inet1.GetHeader("Content-length")
MsgBox at
HTTP/1.1 200 OK
Date: Fri, 14 Oct 2005 21:23:37 GMT
Server: Apache/1.3.33 (Debian GNU/Linux) PHP/4.3.10-15
X-Powered-By: PHP/4.3.10-15
Content-Type: text/html; charset=utf-8
tyomitch писал(а):Что ещё пояснить?
VAngel писал(а):Таки дело в серваке, ясно, чето я попробывал на 10 сервках только 4 ответили
Santa писал(а):Чесно говоря мне интересно малое, классы и модуля и конечно ctl'ы.
Я не приверженец ocx'ов, dll'ов и tlb. Я пытаюсь прогу для себе написать по этой теме. Даже написал. Работает(только с tlb). А теперь мне необходим примерчик по этим функциям, со всеми возможностями примера с tlb только без её самой, басом там классом не имеет значения, это второй вопрос, только без tlb, но всё тоже как с ней.
Да функции мне нужны, только и всего.Santa писал(а):... А теперь мне необходим примерчик по этим функциям, со всеми возможностями примера с tlb только без её самой...
Сейчас этот форум просматривают: Google-бот и гости: 100