|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2003
Città: Padova
Messaggi: 2929
|
[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 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Guarda se ti può interessare questa cosa per il multi language: http://www.visual-basic.it/uploads/a...nici/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... Codice:
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
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
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
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2003
Città: Padova
Messaggi: 2929
|
Grazie, più tardi me li studio per benino
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" ? |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
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
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2003
Città: Padova
Messaggi: 2929
|
No problem
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Ecco a te... se c'è qlc problema o vuoi qlc delucidazione basta chiedere!!
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Apr 2003
Città: Padova
Messaggi: 2929
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
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!!
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2003
Città: Padova
Messaggi: 2929
|
Cavolo hai ragione, continuavo a cercare quel "CSIDL_SYSTEM" nella dichiarazione della funzione ma ovviamente dev'essere nelle istruzioni del pulsante
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? |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
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
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2003
Città: Padova
Messaggi: 2929
|
Bene, allora mi sa che è meglio perdere mezz'oretta e risistemare tutto il codice
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? |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Bhe quando passi dalla programmazione normale, a quella avanzata, le cose si complicano
ecco a te: Codice:
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
__________________
"Analizzando e valutando ogni giorno tutte le idee, ho capito che spesso tutti sono convinti che una cosa sia impossibile, finchè arriva uno sprovveduto che non lo sa e la realizza!" A. Einstein |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:16.



















