PDA

View Full Version : [VB] mettere un'immagine da internet


beog
11-01-2004, 12:35
se voglio mettere un img da internet nel mio programma

es.
http://www.filmup.com/locand/allaricercadinemo.jpg


come devo fare?

Io ho provato a fare così:


MiaImmagine.Picture = LoadPicture("http://www.filmup.com/locand/allaricercadinemo.jpg")


Ma non va ... perchè?


Grazie, ciao

cionci
11-01-2004, 13:19
Devi scarica prima l'immagine in locale e poi visualizzarla...

Const scUserAgent = "API-Guide test program"
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
Const INTERNET_FLAG_RELOAD = &H80000000
Const sURL = "http://www.microsoft.com/index.htm"
Private Declare Function InternetOpen Lib "wininet" 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 InternetCloseHandle Lib "wininet" (ByRef hInet As Long) As Long
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net

Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long
'Create a buffer for the file we're going to download
sBuffer = Space(1000)
'Create an internet connection
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
'Open the url
hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
'Read the first 1000 bytes of the file
InternetReadFile hFile, sBuffer, 1000, Ret
'clean up
InternetCloseHandle hFile
InternetCloseHandle hOpen
'Show our file
MsgBox sBuffer
End Sub

matpez
11-01-2004, 13:24
Non ti va perchè in quel parametro il LoadPicture richiede una Path fisica di un file...nn un URL :)

Per risolvere il tuo problema dovresti scaricare il file da internet e poi con il LoadPicture caricarlo nel tuo prg!

Se ti interessa fare così ti do una mano su questo lato ;)

maxithron
11-01-2004, 13:25
Ci sarà una ragione per cui non puoi scaricarti l'immagine con un semplice "salva con nome" e poi metterla in una dir locale, vero? :wtf:

matpez
11-01-2004, 13:40
come ha detto cionci è corretto, quello è la aprte di codice per scaricare un file! :D

beog
11-01-2004, 13:46
Cazspita qui la cosa diventa sempre più complicata!


e tra l'altro mi dice che

Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long

non vale dentro una routine, ma dove devo incollare quel codice?

Grazie, ciao

matpez
11-01-2004, 15:59
All'inzio della form :)

beog
12-01-2004, 10:23
Ok ora ho capito qualcosa,

Dopo aver scaricato il file che mi serve, qual è il suo riferimento?
sBuffer?


devo fare Miaimm.picture = loadpicture (sBuffer) ?

E se l'img è più grande di 1kb?

Sembra che mi funzioni, però solo con i file HTM più piccoli di 1Kb..

Però a me serve una immg completa.

Grazie per la pazienza

matpez
12-01-2004, 11:52
Prova così :D

Const scUserAgent = "API-Guide test program"
Const INTERNET_OPEN_TYPE_DIRECT = 1
Const INTERNET_OPEN_TYPE_PROXY = 3
Const INTERNET_FLAG_RELOAD = &H80000000
Const sURL = "http://www.ublteam.com/Slayer/Comuni.rar"
Private Declare Function InternetOpen Lib "wininet" 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 InternetCloseHandle Lib "wininet" (ByRef hInet As Long) As Long
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Const TotDW = 1024

Private Sub Command1_Click()

Dim nFreeFile As Integer
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net

Dim sFileData As String
Dim lSize As Long
Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long
'Create a buffer for the file we're going to download
sBuffer = Space(TotDW)
'Create an internet connection
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
'Open the url
hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
'Read the first 1024 bytes of the file
sFileData = ""
Do
InternetReadFile hFile, sBuffer, TotDW, Ret
'If Ret <> TotDW Then
sFileData = sFileData & Left$(sBuffer, Ret)
lSize = lSize + Ret
ProgressBar1.Value = lSize
'Else
'sFileData = sFileData & sBuffer
'End If
DoEvents
Loop Until Ret = 0
'clean up
InternetCloseHandle hFile
InternetCloseHandle hOpen

'scrittura del file
nFreeFile = FreeFile
Open "ciao.rar" For Output As #nFreeFile
Print #nFreeFile, sFileData
Close #nFreeFile

End Sub