gugump
|
IÇARA SC - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 31/08/2008 01:30 hs
La vamos nós...
Outro probleminha:
Eu uso no CDown_Progress:
Label1.Caption = Min Label2.Caption = Max
Isso funciona... Dai eu uso o Progressbar.Min = Min e Progressbar.Value = Max e da esse erro:
Invalid property value
O que pode ser?
|
|
|
|
|
Postada em 31/08/2008 01:41 hs
O certo é:
Progressbar.Min = 0 Progressbar.Max = Max Progressbar.Value = Min
O Valor Min da ProgressBar nunca deve ser maior que o Value ou Max e/ou o valor Max nunca deve ser menor que o Value ou Value nunca deve ser maior que Max senão dá esse erro Invalid Property Value.
Excelent Code
|
|
|
|
Postada em 31/08/2008 07:35 hs
Criei uma nova versão do CDownload:
Objeto: UserControl Nome: CDownload
'---------------------------------------------------------------------------------------------------------
'################################' ' ' ' Escrito por CODER_EXPERT ' ' ------------------------ ' ' ' ' alien.coder@hotmail.com ' '################################'
' 31/08/2008 06:53 AM
Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Enum TMETHOD METHOD_WAIT = 0 METHOD_PROCESSMESSAGE = 1 End Enum
Public Enum TDATAFORMAT BINARY_BYTE_FORMAT = 0 STRING_FORMAT = 1 End Enum
Public Enum TDOWNLOADSTATE ISNOT = 0 INPROGRESS = 1 ISCOMPLETED = 3 ISDOWNLOADERROR = 4 End Enum
Dim State As TDOWNLOADSTATE Dim DataFormat As TDATAFORMAT
Dim binData() As Byte Dim Data As String
Dim ObjectName As String Dim FileName As String
Event ProgressDownload(BytesMax As Long, BytesRead As Long, sObjectName As String) Event CompletedDownload(sData As Variant, sObjectName As String) Event ErrorDownload(sObjectName As String)
Public Function getstate() As TDOWNLOADSTATE Select Case State Case TDOWNLOADSTATE.ISNOT getstate = State Case TDOWNLOADSTATE.INPROGRESS getstate = State Case TDOWNLOADSTATE.ISCOMPLETED getstate = State State = ISNOT Case TDOWNLOADSTATE.ISDOWNLOADERROR getstate = State End Select End Function
Public Function GetObjectName() As String If State <> ISNOT Then _ GetObjectName = ObjectName End Function
Public Function GetDataToFile(FileName As String) As Boolean On Local Error GoTo Trata_Erro
Dim lngFreeFile As Long lngFreeFile = FreeFile
If Trim(Data) <> Empty Then Open FileName For Output Access Write As #lngFreeFile Print #lngFreeFile, Data Close #lngFreeFile Else GetDataToFile = False End If
Exit Function
Trata_Erro: GetDataToFile = False End Function
Public Function GetDataToVar(Optional DataFormat As TDATAFORMAT = STRING_FORMAT) As Variant On Local Error Resume Next Select Case DataFormat Case TDATAFORMAT.BINARY_BYTE_FORMAT GetDataToVar = binData Case TDATAFORMAT.STRING_FORMAT GetDataToVar = Data End Select End Function
Public Function URLDownload(sURL As String, Optional sFileName As String, Optional Method As TMETHOD = METHOD_WAIT, Optional sObjectName As String) As Boolean If Left$(UCase(sURL), 7) <> UCase("http://") Then State = ISDOWNLOADERROR RaiseEvent ErrorDownload(ObjectName) Exit Function End If If sObjectName <> Empty Then _ ObjectName = sObjectName If sFileName <> Empty Then _ FileName = sFileName State = INPROGRESS AsyncRead sURL, 1 If Method = METHOD_WAIT Then Do DoEvents Sleep 1
If State = ISDOWNLOADERROR Then 'Erro ao tentar baixar arquivo URLDownload = False Exit Function ElseIf State = ISCOMPLETED Then 'Arquivo baixado com sucesso URLDownload = True Exit Function End If Loop Else 'Prossegue verdadeiro URLDownload = True End If End Function
Private Sub UserControl_AsyncReadComplete(AsyncProp As AsyncProperty) On Local Error GoTo Trata_Erro
Dim lngFreeFile As Long lngFreeFile = FreeFile
Erase binData Open AsyncProp.Value For Binary As #lngFreeFile 'Obtém o arquivo em formato de String Data = Space(FileLen(AsyncProp.Value)) Get #lngFreeFile, , Data
'Obtém o arquivo em fomato binário ReDim binData(LOF(lngFreeFile) - 1) Get lngFreeFile, , binData Close #lngFreeFile
If FileName <> Empty Then If Trim(Data) <> Empty Then Open FileName For Output Access Write As #lngFreeFile Print #lngFreeFile, Data Close #lngFreeFile State = ISCOMPLETED RaiseEvent CompletedDownload(Data, ObjectName) Else State = ISDOWNLOADERROR RaiseEvent ErrorDownload(ObjectName) End If Else If Trim(Data) <> Empty Then State = ISCOMPLETED RaiseEvent CompletedDownload(Data, ObjectName) Else State = ISDOWNLOADERROR RaiseEvent ErrorDownload(ObjectName) End If End If
On Local Error Resume Next If Dir$(AsyncProp.Value, vbReadOnly Or vbHidden Or vbSystem) <> Empty Then SetAttr AsyncProp.Value, vbNormal Kill AsyncProp.Value End If On Local Error GoTo Trata_Erro
Exit Sub Trata_Erro:
State = ISDOWNLOADERROR RaiseEvent ErrorDownload(ObjectName) End Sub
Private Sub UserControl_AsyncReadProgress(AsyncProp As AsyncProperty) State = INPROGRESS
RaiseEvent ProgressDownload(AsyncProp.BytesMax, AsyncProp.BytesRead, ObjectName) End Sub
'---------------------------------------------------------------------------------------------------------
* Como usá-la: ------------------
Private Sub Command1_Click() Dim bDown As Boolean 'Faz o download do arquivo ou página da web e define um nome para o objeto 'Esse código também envia POST para o servidor bDown = CDown.URLDownload("http://www.uol.com.br/", , METHOD_WAIT, "UOL_PAGE")
'Obtém o conteúdo em formato binário do arquivo Dim File() As Byte File = CDown.GetDataToVar(BINARY_BYTE_FORMAT)
'Obtém o conteúdo em formato string do arquivo Dim sFile As String sFile = CDown.GetDataToVar(STRING_FORMAT)
'Exibe conteúdo do arquivo MsgBox sFile
'Exibe o nome do Objeto MsgBox CDown.GetObjectName
'Grava o Download que está na memória para o HD CDown.GetDataToFile "C:Content.txt"
'Obtém o estado do download Dim retState As TDOWNLOADSTATE retState = CDown.getstate
'Checa o estado do download If retState = ISCOMPLETED Then MsgBox "Download Completado com sucesso" ElseIf retState = ISDOWNLOADERROR Then MsgBox "Erro ao fazer download de arquivo" End If End Sub
* Exemplo mais simplificado: ---------------------------------
Dim bDown As Boolean bDown = CDown.URLDownload("http://www.uol.com.br/")
If bDown Then MsgBox "Download completado com sucesso." MsgBox CDown.GetDataToVar(STRING_FORMAT) Else MsgBox "Erro ao fazer download" End If
* Estilo API URLDownloadToFile: --------------------------------
CDown.URLDownload "http://www.uol.com.br/", "C:UOL_Page.txt"
* Outra forma de usar: ---------------------------
CDown.URLDownload "http://www.uol.com.br/", , METHOD_PROCESSMESSAGE
Dim retState As TDOWNLOADSTATE retState = CDown.getstate
While retState <> ISCOMPLETED retState = CDown.getstate DoEvents Wend
If retState = ISCOMPLETED Then MsgBox "Download Completado com sucesso" ElseIf retState = ISDOWNLOADERROR Then MsgBox "Falha ao fazer download" End If
MsgBox CDown.GetDataToVar(STRING_FORMAT)
Excelent Code
|
|
|
gugump
|
IÇARA SC - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 31/08/2008 12:14 hs
Agora sim! Consigo salvar o download perfeitamente! hehehe
Então... Como você mudou a parte do ProgressDownload, eu não consegui fazer funcionar a progressbar
Tentei assim:
ProgressBar1.Min = 0 ProgressBar1.Max = BytesMax ProgressBar1.Value = BytesRead
O que precisa e o que não precisa ai?
Abs
|
|
|
|
Postada em 31/08/2008 14:40 hs
Tá com uma falha no evento ProgressDownload, vou resolver e logo mando o código atualizado.
Excelent Code
|
|
|
|
Postada em 02/09/2008 20:11 hs
?????????
Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
Public Function DllRegisterServer(DllName As String) As Boolean Dim hLibrary As Long, hProcAdress As Long, Ret As Long hLibrary = LoadLibrary(DllName) If hLibrary <> 0 Then hProcAdress = GetProcAddress(hLibrary, "DllRegisterServer") 'DllUnRegisterServer para DesRegistrar If hProcAdress <> 0 Then Ret = _ CallWindowProc(hProcAdress, GetDesktopWindow, "", ByVal 0&, ByVal 0&)
DllRegisterServer = True Else 'Arquivo carregado porém o ponto de entrada não foi encontrado 'Arquivo não pode ser registrado End If Else 'Arquivo não encontrado End If
FreeLibrary hLibrary End Function
|
|
|
|