View Full Version : [VB] Collegamento ad internet
Ciao a tutti! E' da qualche giorno che mi sto cimentando a fare alcuni programmi con questo linguaggio, e devo dire che qualcosa ho imparato. Ora avrei un paio di domande da farvi:
1) Vorrei mettere una piccola label in cui, se si è connessi ad internet, il programma verifica su un sito magari la presenza di una pagina, la quale significa che c'è un'aggiornamento disponibile. E' possibile ciò? Ci sono altri metodi faster?
2) Come posso fare per rendere il programma multi-language? Ho visto che molti assegnano ad ogni oggetto un codice (ad es. ~rimuovi~), e poi ci sono i file con le varie traduzioni (~rimuovi~ = remove, ecc) . Non saprei minimamente come farlo, dovrei assegnare una variabile a ciascun comando?
Grazie ;)
Guarda se ti può interessare questa cosa per il multi language: http://www.visual-basic.it/uploads/articoli/tecnici/gbMLS.htm
Per quanto riguarda la label ti mando una mia funzione che aiuta a fare cioè che ti serve, cioè il controllo della presenza di una pagina...
Private Const IF_NO_CACHE_WRITE = &H4000000
Private Declare Function InternetOpen Lib "wininet.dll" 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 InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Public Function IsURLActive(ByVal sURL As String) As Boolean
Dim lInternet As Long
Dim lSession As Long
DoEvents
'prendo l'handle della connessione corrente
lSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
'prendo l'handle dell'URL
If lSession Then
lInternet = InternetOpenUrl(lSession, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
End If
If lInternet <> 0 Then
IsURLActive = True
End If
'chiudo l'URL
Call InternetCloseHandle(lInternet)
End Function
PS: le dichiarazioni vanno messe nella Option Explicit
C'è anche un altro modo per fare un multi language molto + carino, se mi mandi la tua mail ti mando il file, così te lo studi per benino :D
Grazie, più tardi me li studio per benino :D !
Un'altra cosetta: se voglio avviare un programma di windows (il registratore di suoni), come posso fare per rendere il percorso "universale"?
Del tipo invece di mettere "c:\windows\system\ecc" , non c'è qualche codice come "%windowsroot%\system\ecc" così da accederci anche se windows è installato con il nome della cartella diverso da windows o disco diverso da "c" ?
Si si, te lo passo io senza problemi, il problema è che adesso sono a lavoro e nn posso scrivere più di tanto, se nn hai fretta te lo mando stasera quando torno a casa :)
Ecco a te... se c'è qlc problema o vuoi qlc delucidazione basta chiedere!! :p
Originariamente inviato da matpez
Ecco a te... se c'è qlc problema o vuoi qlc delucidazione basta chiedere!! :p
Per la cartella system32 funziona benone, ma se voglio cambiare la cartella che parametri devo modificare? Ho visto che nelle dichiarazioni del modulo c'è una lista delle varie cartelle, ma nella funzione non ho capito come impostarla :(
Bhe ho messo il modulo così nn vai a sporcare il tuo programma, tutto quel blocco inerente alla funzione rimane a parte!!
Cmq è facile, basta che cambi il parametro nella funzione che c'è dentro al command button, se vuoi facilitarti cancella tutto quello che c'è nelle parentesi, cancella la parentesi facendo solo rimanere così: Label1 = GetSpecialFolder
a questo punto basta che aggiungi una parentesi aperta e magicamente heheeh ti comparirà tutto l'elenco delle cartelle che si possono scegliere!! :)
Cavolo hai ragione, continuavo a cercare quel "CSIDL_SYSTEM" nella dichiarazione della funzione ma ovviamente dev'essere nelle istruzioni del pulsante :D
Quindi i moduli servono per organizzare meglio la struttura del programma? Voglio dire, se i sub() e le funzioni le metto in un modulo dichiarate con public e nel form lascio solo le istruzioni degli oggetti, la funzionalità del programma è identica ma il source è organizzato meglio, giusto?
Esatto!!
I moduli hanno due funzioni principali:
1) Organizzare meglio
2) rendere visivibile le funzioni a tutto il progetto
Per quanto riguarda 1) come hai già capito se tu metti una parte di funzioni che ti servono e che magari vengono richiamate più volte dentro il modulo può fare come ti ho messo nell'esempio: quello che ti servirà veramente lo metti public così lo puoi vedere dalla form, le ccose invece che in verità ti servono solo per supporto alla funzione (come le variabili e le costanti e le dichiarazioni API) le metti private così almeno nn vengono viste dalla form e nn vai ad imporcare tutto!
Sta a te vedere quanti moduli utilizzare, di solito dovresti separare un modulu per ogni cosa importante, ma sinceramente io nn o voglia e siccome bene o male il modulo l'ho creato io e so come navigarci dentro, faccio che buttare tutto in un solo modulo!!
Per il punto 2) invece è fatto perchè se tu hai più form che utilizzano una funzione o una procedura, la metti publica e tutto il tuo progetto la vede, così facendo in tutte le form puoi richiamare la funzione senza bisogno di copiare codice da una form ad un altra, almeno anche in questo caso, nn si imporca tutto il progetto!!!! :)
heheheheh
Bene, allora mi sa che è meglio perdere mezz'oretta e risistemare tutto il codice :D
Tornando velocemente al discorso delle cartelle, ho notato che in winxp il registratore di suoni è in system32, mentre in win98 è in windows. Ora la domanda sorge spontanea: come capire se il programma sta funzionando in win98 o winxp? Occorre un'altra mega-funzione come quella per le cartelle?
Bhe quando passi dalla programmazione normale, a quella avanzata, le cose si complicano :D
ecco a te:
Private Const VER_PLATFORM_WIN32_NT = 2
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Public Function IsWinNT() As Boolean
Dim myOS As OSVERSIONINFO
myOS.dwOSVersionInfoSize = Len(myOS)
Call GetVersionEx(myOS)
IsWinNT = (myOS.dwPlatformId = VER_PLATFORM_WIN32_NT)
End Function
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.