PDA

Visualizza la versione completa : [VB]Sincronizzarmi Accesso Remoto


Mr.Charon
26-06-2002, 20:44
Mi servirebbe una mano con un programma in VB.
In poche parole ho realizzato un semplice contascatti telefonico relativo al mio piano telefonico, che mostra in tempo reale il costo della connessione...il problema che vorrei risolvere (in quanto vorrei essere veramente preciso), quello legato al fatto che il timer di questo programma dovrebbe partire esattamente quando parte quello dell'accesso remoto...come posso fare per sincronizzare il mio programma?
Gi che ci sono vorrei chiedere se possibile fare in modo che questo programma, una volta avviato appena acceso il computer, rimanga nascosto fino a quando non apro Internet Explorer e mi collego...

Grazie.

steno12
27-06-2002, 01:43
Non ......gi che ci sei...... proprio questo il problema.
I programmi che conteggiano scatti telefonici, sono fatti in modo tale, che l'utente stesso che decide quando avviare il programma del contascatti.
In genere prima del collegamento, si avvia il programma di contascatti, e una volta avviata la connessione il programma contascatti inizia il suo lavoro (naturalmente conteggiando anche lo scatto della chiamata).

Il problema : cosa pensa l'utente?, non tutti gli utenti (io ero di quelli), vogliono, che una volta avviato il pc, si avvii in automatico tipo un tsr che controlla quando avviene una connessione internet e quindi avviare il contascatti in quel preciso momento.

Secondo me meglio che lo decida l'utente, quando avviare il contascatti, e naturalmente il tuo prg. deve essere preciso col conteggio......e sicuramente lo , ma devi far in modo che a decidere sia l'utente.

Quindi dopo l'istallazione sarebbe opportuno, che nel gruppo dei programmi creato, mettessi un LEGGIMI ORA, dove poter far sapere all'utente, che pu immettere a suo piacimento, il programma (a parte), che funzioni come controllo della connessione immettendolo nell'avvio automatico, spiegando i passi da compiere per effettuare tale operazione, ovvero come mettere il programma del controllo della connessione in corso, nell'avvio automatico.

Comunque tornando alla tua domanda, fa come vuoi.......

Devi fare due programmi, uno del conteggio dei scatti, e questo l'hai fatto, e uno che controlli quando viene fatta una connessione e partire con il programma di conteggio scatti.
Perch due programmi:
Per il discorso fatto prima, ovvero fare in modo che sia l'utente a decidere se tenere un programma in memoria, avviato in background che faccia in modo di monitorare se c' in corso una connessione ad internet.

Probabilmente userai un applicativo per far eseguire l'installazione.
Per esempio con InstallShield, o altri installatori, devi far in modo di installare il contascatti, e durante tale procedura d'installazione, devi utilizzare un file.reg che crei e scriva una chiave
nel registro di configurazione, nella directory:
HKEY_LOCAL_MACHINE, Software, Microsoft, Windows, CurrentVersion, Run
ControllaConnessione.exe
(questo sopra il nome ipotetico del tuo controllore della connessione ad internet).
In questo modo ogni volta che si avvia il pc, viene avviato in automatico il programma ControllaConnessione.exe,
che monitorizza ogni tot minuti, o secondi, se stata avviata una connessione di accesso remoto.
Se stata avviata una connessione di accesso remoto, il programma ControllaConnessioni.exe f in modo di far partire il contascatti.


In conclusione, secondo il mio modesto parere, meglio, fare due programmi, uno per il conteggio scatti telefonici, e
uno per il monitoraggio se stato eseguito un accesso alla rete, e in questo caso avviare il contascatti.
Avviato il conscatti, il programma di monitoraggio continua nella fase di controllare quando stata chiusa una sessione internet, e quando questa avviene, passa
di nuovo al controllo se si verifica una connessione attiva di accesso remoto.

Ho fatto l'algoritmo e il programma controllore, ma ...... non freeware

Se cerchi in rete, sicuramente troverai molti argomenti in merito RAS_DIAL API di win ecc, ecc, e con un p di studio e pazienza riuscirai a fare il tuo algoritmo.

Per non lasciarti a bocca asciutta, l'algoritmo lo devi impostare su un ciclo perpetuo
While......wend, che cicli e controlli le connessioni di accesso remoto, nel momento in cui una connessione attiva, fai partire il contascatti,
a questo punto con una condizione, controlli quando viene effettuata una disconnessione facendo bloccare il contascatti, e cos via alternando la funzione.

Ricorda di avvertire l'utente se all'avvio del pc, parte un programma in background, perch non far sapere questo all'utente non corretto
e se dovesse essere lui stesso a decidere, elencargli i possibili problemi in cui potrebbe andare incontro, che tu stesso avrai testato.


link
homepage
http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/
software
http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/programmi/programmi.html
forum
http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/public/twforum/default.asp

steno12
27-06-2002, 02:51
Questo codice controlla se c' una connessione attiva oppure no.




Nella sezione Dichiarazioni
Public Const ERROR_SUCCESS = 0&
Public Const APINULL = 0&
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public ReturnCode As Long

Declare Function RegCloseKey Lib "advapi32.dll" (ByVal _
hKey As Long) As Long

Declare Function RegOpenKey Lib "advapi32.dll" Alias _
"RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As _
String, phkResult As Long) As Long

Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _
"RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName _
As String, ByVal lpReserved As Long, lpType As Long, _
lpData As Any, lpcbData As Long) As Long
Codice
Public Function ActiveConnection() As Boolean
Dim hKey As Long
Dim lpSubKey As String
Dim phkResult As Long
Dim lpValueName As String
Dim lpReserved As Long
Dim lpType As Long
Dim lpData As Long
Dim lpcbData As Long
ActiveConnection = False
lpSubKey = "System\CurrentControlSet\Services\RemoteAccess"
ReturnCode = RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, _
phkResult)

If ReturnCode = ERROR_SUCCESS Then
hKey = phkResult
lpValueName = "Remote Connection"
lpReserved = APINULL
lpType = APINULL
lpData = APINULL
lpcbData = APINULL
ReturnCode = RegQueryValueEx(hKey, lpValueName, _
lpReserved, lpType, ByVal lpData, lpcbData)
lpcbData = Len(lpData)
ReturnCode = RegQueryValueEx(hKey, lpValueName, _
lpReserved, lpType, lpData, lpcbData)

If ReturnCode = ERROR_SUCCESS Then
If lpData = 0 Then
ActiveConnection = False
Else
ActiveConnection = True
End If
End If
RegCloseKey (hKey)
End If
End Function
Usa la funzione ActiveConnection come nell'esempio:
If ActiveConnection = True then
MsgBox("Hai una connessione attiva.",vbInformation)
Else
MsgBox("Non hai una connessione attiva.", vbInformation)
End If


Buon lavoro............



link
homepage
http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/
software
http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/programmi/programmi.html
forum
http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/public/twforum/default.asp

Loading