PDA

Visualizza la versione completa : Connettere in VB


Berello
29-05-2001, 21:37
Come posso aprire la finestra di connessione come quella dell'apertura del browser?
Io ho trovato questo, però c'è un problema:



Option Explicit

Private Declare Function RasEnumConnections Lib "RasApi32.dll" Alias "RasEnumConnectionsA" (lpRasCon As Any, lpcb As Long, lpcConnections As Long) As Long
Private Declare Function RasGetConnectStatus Lib "RasApi32.dll" Alias "RasGetConnectStatusA" (ByVal hRasCon As Long, lpStatus As Any) As Long

Private Const RAS95_MaxEntryName = 256
Private Const RAS95_MaxDeviceType = 16
Private Const RAS95_MaxDeviceName = 32

Private Type RASCONN95
dwSize As Long
hRasCon As Long
szEntryName(RAS95_MaxEntryName) As Byte
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type

Private Type RASCONNSTATUS95
dwSize As Long
RasConnState As Long
dwError As Long
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type

Private Function IsConnected() As Boolean
Dim TRasCon(255) As RASCONN95
Dim lg As Long
Dim lpcon As Long
Dim RetCDec As Long
Dim Tstatus As RASCONNSTATUS95
TRasCon(0).dwSize = 412
lg = 256 * TRasCon(0).dwSize
RetCDec = RasEnumConnections(TRasCon(0), lg, lpcon)
Tstatus.dwSize = 160
RetCDec = RasGetConnectStatus(TRasCon(0).hRasCon, Tstatus)
If Tstatus.RasConnState = &H2000 Then
IsConnected = True
Else
IsConnected = False
End If
End Function

Private Sub Command1_Click()
Dim x As Long
If IsConnected = True Then
MsgBox "Connessione ad internet attiva", vbExclamation, App.Title
Else
If MsgBox("Connessione ad internet non attiva, desideri attivarla?", vbQuestion + vbYesNo, App.Title) = vbYes Then
x = Shell("RUNDLL32.EXE rnaui.dll,RnaDial " & "Connection Name", vbNormalFocus)
End If
End If
End Sub



Era su un Thread di poco tempo fà.
Il problema è il seguente: per avviare una connessione devo conoscere il nome del provider! Come posso fare per aprire una normale finestra come quella del browser oppure come faccio a trovare il nome del provider predefinito?
Grazie!

Sennheiser
30-05-2001, 02:01
Ciao Berello!
Per aprire la finestra di connessione devi utilizzare solo questo:

Dim x As Long
x = Shell("RUNDLL32.EXE rnaui.dll,RnaDial " & "Connection Name", vbNormalFocus)

se non specifichi "Connection Name" si apre la finestra di connessione predefinita in accesso remoto!

Se vuoi sapere come devi visualizzare tutte le configurazioni di accesso remoto fammelo sapere!

Il resto del codice serve per verificare se il pc è connesso o meno!

Ciao

Berello
30-05-2001, 17:41
Non funziona!
Se inserisco il codice senza il "Connection Name" non succede niente!
Ho provato a togliere anche le virgolette e & e lo spazio finale del comando RUNDLL!!!
Perché non succede nulla?
Esiste un altro modo più sicuro?

Sennheiser
01-06-2001, 02:09
se mi dai l'e-mail ti mando un'altra sorgente!

E' lunga per postarla!

Ciao! :D

Berello
03-06-2001, 20:23
Cmq la mia e-mail è mailto:giginoi@yahoo.it

In futuro nessuno potrà sapere la risposta perché magari cambieremo e-mail...

Sennheiser
04-06-2001, 06:36
Non capisco la tua risposta, perchè devi polemizzare, mi sembra di essere stato chiaro nel post precedente dicendo che la sorgente è troppo lunga per postarla!
Ho sempre cercato di aiutare (quando ho potuto) chiunque, inserendo oltretutto delle sorgenti leggibili e reperibili da tutti!
Non credo che tu mi possa dare lezioni di come bisogna comportarsi in una comunità!
Una tua risposta allusiva:
http://forum.html.it/forum/showthread.php?threadid=80707
"Connettere e disconnettere c'è chi lo sa fare bene con VB."

Io ti ho aiutato fornendoti un codice completo, ma se non riesci a farlo funzionare, non è colpa mia!

In ogni caso ho riportato una variazione della sorgente semplice e riddotta, in modo tale da poterla rendere visibile a tutti!
Penso che per quello che devi fare sia più che sufficiente!

Option Explicit

Private Declare Function InternetAutodialHangup Lib _
"wininet.dll" (ByVal dwReserved As Long) As Long
Private Declare Function InternetGetConnectedState Lib _
"wininet.dll" (lpdwFlags As Long, ByVal dwReserved As Long) As Long
Private Declare Function InternetAutodial Lib _
"wininet.dll" (ByVal dwFlags As Long, ByVal dwReserved As Long) As Long

Private Sub Command1_Click()
Dim i As Long
Command1.Enabled = False
i = CBool(InternetAutodial(0, 0))
Command1.Enabled = True
End Sub

Private Sub Command2_Click()
Dim lngFlags As Long, State As Boolean
State = CBool(InternetGetConnectedState(lngFlags, 0&))
If State = True Then
MsgBox "Connessione attiva", vbExclamation, App.Title
Else
MsgBox "Connessione non attiva", vbExclamation, App.Title
End If
End Sub

Private Sub Command3_Click()
Dim i As Long
i = CBool(InternetAutodialHangup(0&))
End Sub

Private Sub Form_Load()
Command1.Caption = "Connetti"
Command2.Caption = "Stato"
Command3.Caption = "Disconnetti"
End Sub


N.B. dove ci sono le faccine bisogna inserire una parentesi tonda

Berello
04-06-2001, 18:25
Non ti ho sgridato...
Ho solo 15 anni, non posso pretendere di insegnare niente a nessuno.
Era solo un consiglio!
Ti ringrazio comunque tantissimo, perché sei l'unico che ha cercato di aiutarmi.
Ora provo il tuo codice.
Grazie ancora!

Berello
04-06-2001, 23:11
E' proprio quello di cui avevo bisogno!
Grazie!

s|n3
05-08-2002, 19:13
???a me non funziona........
se clicko su "stato" mi dice sempre che la connessione è attiva...anche quando non sono connesso
se clicko su disconnetti non succede niente.rimango tranquillamente connesso a internet.....
mi spieghi perchè???
Ciauz

s|n3
05-08-2002, 21:37
??nessuno sa dirmi perchè solo e soltanto a me questo codice non funziona???
allora...ricapitoliamo....
io ho messo la funzione all'inizio del programma...nella zona dove dichiaro le variabili....
al command ho associato il codice tuo.....
dove cakkiarola è il problema???????
uff uff
:dhò: :dhò: :dhò:

Loading