Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Έλεγχος πρόσβασης στο Internet μέσω κώδικα
Καλησπέρα σε όλους... Μήπως κάποιος μπορεί να με βοηθήσει στο εξής: Προσπαθώ να βρω τρόπο να ελέγξω με κώδικα αν ο Η/Υ που τρέχει το πρόγραμμά μου είναι συνδεδεμένος στο net. Υπάρχουν δείγματα κώδικα στο net που παίζουν κατά περίπτωση (αν είσαι σε LAN και δεν έχεις πρόσβαση στο NET, δεν υπάρχει κάτι που να σου δίνει σωστή πληροφορία)... Δοκίμασα και το QOCINFO αλλά ο κώδικας "κολάει"... Μήπως έχει κανείς καμιά ιδέα??? Ευχαριστώ εκ των προτέρων |
#2
| |||
| |||
Re: Έλεγχος πρόσβασης στο Internet μέσω κώδικα
Αγαπητή φίλη ChryssaV, Σε ένα Module τις Access βάλε τον παρακάτω κώδικα Κώδικας: Option Compare Database Option Explicit Public Enum Flags 'Local system uses a modem to connect to the Internet. INTERNET_CONNECTION_MODEM = &H1 'Local system uses a proxy server to connect to the Internet. INTERNET_CONNECTION_PROXY = &H4 'Local system has RAS installed. INTERNET_RAS_INSTALLED = &H10 'No Internet INTERNET_CONNECTION_OFFLINE = &H20 'Internet connection Configured INTERNET_CONNECTION_CONFIGURED = &H40 End Enum Declare Function InternetGetConnectedState Lib "wininet.dll" (lpdwFlags As Long, ByVal dwReserved As Long) As Long Public Function Online() As Boolean Dim lngFlags As Long If InternetGetConnectedState(lngFlags, 0) Then 'Not Connected If lngFlags And Flags.INTERNET_CONNECTION_OFFLINE Then MsgBox ("Not connected, no Internet.") ElseIf lngFlags And Flags.INTERNET_CONNECTION_MODEM Then 'Modem connection. MsgBox ("Modem connection.") ElseIf lngFlags And Flags.INTERNET_CONNECTION_PROXY Then 'Proxy connection. MsgBox ("Internet Thru Proxy connection.") Else MsgBox ("Not connected, no Internet.") End If Else 'not connected. MsgBox ("Not connected no Internet.") End If End Function Για περισσότερες πληροφορίες δες http://msdn.microsoft.com/en-us/libr...28(VS.85).aspx Να αναφέρω ότι δοκιμάστηκε σε LAN και μάλιστα με Proxy και όταν δεν είχε Internet και όταν είχε. Εύχομαι να σου δουλέψει και φυσικά να σου φανεί χρήσιμο. Φιλικά kon73 / iliadisk |
#3
| |||
| |||
Re: Έλεγχος πρόσβασης στο Internet μέσω κώδικα
Καλημέρα σε όλους! Επιτρέπστε μου μια μικρή διευκρίνιση. H συνάρτηση InternetGetConnectedState() ελέγχει αν ο υπολογιστής είναι απλά συνδεμένος με κάποιο τρόπο σε κάποια συσκευή αλλά δεν ελέγχει αν υπάρχει πρόσβαση στο Internet. Αν υποτεθεί ότι μπλοκάρουμε την πρόσβαση στο δίκτυο μέσω κάποιου Firewall, η συνάρτηση θα συνεχίσει να επιστρέφει True παρόλο που η κυκλοφορία έχει διακοπεί! Η συνάρτηση αυτή θα επιστρέψει False μόνο αν ο υπολογιστής δεν είναι καν συνδεμένος με Modem ή οποιαδήποτε άλλη (αν πχ. αποσυνδέσουμε το καλώδιο του δικτύου). Θα πρέπει λοιπόν να ελέγξουμε αν υπάρχει πρόσβαση σε κάποιον Server της επιλογής μας πχ. Google.gr. Γι αυτή τη διαδικασία προτείνω τον παρακάτω κώδικα: Κώδικας: Option Compare Database Option Explicit Const xFlags = -2076180480 Const TestURL = "http://www.google.gr" Declare Function InternetOpen _ Lib "wininet.dll" Alias "InternetOpenA" _ (ByVal lpszAgent As String, _ ByVal dwAccessType As Long, _ ByVal lpszProxyName As String, _ ByVal lpszProxyBypass As String, _ ByVal lngFlag As Long) As Long Declare Function InternetOpenUrl _ Lib "wininet.dll" Alias "InternetOpenUrlA" _ (ByVal lngI_Net As Long, _ ByVal lpszUrl As String, _ ByVal lpszHeaders As String, _ ByVal dwHeadersLength As Long, _ ByVal lngFlag As Long, _ ByVal dwContext As Long) As Long Declare Function InternetCloseHandle _ Lib "wininet.dll" _ (ByVal lngI_Net As Long) As Long Public Sub TestINetConnection() Dim I_Net&, MyUrl& I_Net = InternetOpen(vbNullString, 0&, vbNullString, vbNullString, 0&) If I_Net Then MyUrl = InternetOpenUrl(I_Net, TestURL, vbNullString, 0&, xFlags, 0&) If MyUrl Then MsgBox "You have Internet access." InternetCloseHandle MyUrl Else MsgBox "You do NOT have Internet access." End If End If InternetCloseHandle I_Net End Sub |
#4
| |||
| |||
Re: Έλεγχος πρόσβασης στο Internet μέσω κώδικα
Αγαπητέ φίλε Τάσσο, Σχετικά με την συνάρτηση InternetGetConnectedState η οποία επιστρέφει true η False μελετώντας λίγο το πρόβλημα των Flags 0χ2 και 0χ12 που εκεί δείχνει να είναι το πρόβλημα τις έχω αλλάξει λίγο στο παραπάνω προηγούμενο topic μου και δοκιμάζοντας το από την πρωινή μου εργασία σε Η/Υ που έχει Proxy Internet και σε έναν που δεν έχει Internet δουλεύει σωστά. Για πιο πλήρη όμως έλεγχο θα το δω και με Lan Internet μέσω Router το απόγευμα και θα επανέλθω. Θα ήθελα να το δοκιμάσεις και εσύ ώστε να μπορέσουμε να δώσουμε και αυτήν την εναλλακτική λύση. Φιλικά iliadisk / kon73 |
#5
| |||
| |||
Re: Έλεγχος πρόσβασης στο Internet μέσω κώδικα
Guys, σας ευχαριστώ πολύ...ο κώδικας του Τάσου έπαιξε μια χαρά με όλα τα λειτουργικά, χωρίς ή με proxy σε LAN... Σας είμαι υπόχρεη... |
#6
| |||
| |||
Re: Έλεγχος πρόσβασης στο Internet μέσω κώδικα
Αγαπητή ChryssaV, χαίρομαι που εξυπηρετήθηκες, ωστόσο θα ήθελα να δω τι γίνεται με την Function InternetGetConnectedState η οποία ενώ δίνει τώσα Flags δεν έχω δοκιμάσει σε τοπικό Router αν λειτουργεί ο έλεγχος της ύπαρξης Internet. Tasso θα ήθελα όπως προανέφερα να δούμε την εναλλακτική λύση μαζί. Περιμένω το λοιπόν σε κάποιο chat ή και εδώ να δούμε τις παραμέτρους της συνάρτησης καθώς και τα Flags. Φιλικά iliadisk / kon73 |
#7
| |||
| |||
Re: Έλεγχος πρόσβασης στο Internet μέσω κώδικα
Αγαπητέ iliadisk / kon73 το τεστ το έκανα σε LAN της εταιρείας μου με router και η InternetGetConnectedState δεν έπαιξε... Μάλλον για να είμαι πιο σαφής, σε τερματικό Win98 δεν έπαιξε, σε τερματικό WinXP έπαιξε... Πάντως έχεις δίκιο, καλό θα ήταν να δείτε και τις λεπτομέρειες... Αν μπορώ να φανώ χρήσιμη, στη διάθεσή σας... |
#8
| |||
| |||
Re: Έλεγχος πρόσβασης στο Internet μέσω κώδικα
Κώστα μου, η συνάρτηση αυτή μπορεί να μας επιστρέψει πληροφορίες για τον τρόπο και για την κατάσταση της σύνδεσης του υπολογιστή με το Ιντερνέτ (δηλ. τιμές από το RAS Configuration) , αλλά όχι αν ο υπολογιστής έχει πραγματικά πρόσβαση στο Internet. Το τελευταίο για να μπορεί να επιτευχθεί με τη IsDestinationReachable() (παρόμοια με το ping) η οποία όμως, δεν λειτουργεί σε ΗTTP proxies ή σε firewalls που δεν επιτρέπουν τα πακέτα ping ICMP (Αυτό για τη φίλη μας Χρύσσα). Άρα.. το ξεχνάμε. Μας μένουν λοιπόν 2 σίγουρες λύσεις: 1) Λύση με API που ήδη αναφέραμε (InternetOpenUrl...) 2) Λύση με τη χρήση του Internet explorer δηλ.: Κώδικας: Option Explicit Public Function InetIsAvailable() As Boolean Dim ie As Object Set ie = CreateObject("InternetExplorer.Application") ie.navigate "http://www.google.gr" While ie.readystate <> 4: DoEvents: Wend On Error GoTo ExitHere InetIsAvailable = Not IsError(ie.document.domain) ExitHere: ie.ExecWB 45, 2 Set ie = Nothing End Function Public Sub test() MsgBox "Internet is " & IIf(InetIsAvailable, "accessible!", "unaccessible!") End Sub |
#9
| |||
| |||
Re: Έλεγχος πρόσβασης στο Internet μέσω κώδικα
Φίλε Tassos, ομολογουμένος η συνάρτηση InternetGetConnectedState δεν μπορεί να ελένξει αν υπάρχει όντως πρόσβαση στο Internet και επομένως ακολουθώντας την τακτική του ελέγχου URL προτείνω με την σειρά μου αυτόν τον σύντομο κώδικα που κάνει χρήση της συνάρτησης InternetCheckConnection. Τον παρακάτω κώδικα τον έλενξα σε Lan με Proxy οπότε και θα ήθελα να δοκιμαστεί και με άλλους συνδυασμούς λειτουργικών συστημάτων και τρόπων συνδέσεων στο Inet οπότε και έτσι θα έχουμε μια πλήρη κάλυψη του όλου θέματος. Κώδικας: Private Const FLAG_ICC_FORCE_CONNECTION = &H1 Declare Function InternetCheckConnection Lib "wininet" Alias "InternetCheckConnectionA" _ (ByVal lpszUrl As String, ByVal dwFlags As Long, _ ByVal dwReserved As Long) As Long Public Sub CheckInet() If InternetCheckConnection("http://www.google.com", FLAG_ICC_FORCE_CONNECTION, 0&) = 0 Then MsgBox "No Internet connection", vbOKOnly + vbInformation, "INFO" Else MsgBox "There is Internet connection", vbOKOnly + vbInformation, "INFO" End If End Sub Φιλικά iliadisk / kon73 Τελευταία επεξεργασία από το χρήστη Tasos : 25-11-09 στις 09:33. |
#10
| |||
| |||
Re: Έλεγχος πρόσβασης στο Internet μέσω κώδικα
Απλά να αναφέρω ότι οποιαδήποτε συνάρτηση χρησιμοποιεί έμμεσα ping (συμπεριλαμβανομένης και της InternetCheckConnection ) δεν μπορεί να θεωρηθεί αξιόπιστη λύση αφού το αν θα επιστραφούν αποτελέσματα εξαρτάται: • από τις ρυθμίσεις του εκάστοτε υπολογιστή • από τις ρυθμίσεις του Server(Host) που καλείται μέσω της ping • από τις ρυθμίσεις του Firewall ή του Router • από τα δικαιώματα που έχει ο ίδιος ο χρήστης • Από τις ρυθμίσεις του εταιρικού δικτύου που πιθανόν να είναι συνδεμένος ο υπολογιστής. Για παράδειγμα, κάνω το πείραμα και εκτελώ την InternetCheckConnection από υπολογιστή που όντως έχει πρόσβαση στο Internet, άρα η αναμενόμενη τιμή της θα πρέπει να είναι <>0. Aν λόγω κάποιας από τις προαναφερόμενες ρυθμίσεις ή για κάποιο άλλο λόγο δεν της επιστραφούν αποτελέσματα του ping, τότε θα επιστρέψει 0 (μηδέν) οπότε... πρέπει να χρησιμοποιήσουμε συναρτήσεις που να μας δίνουν την πληροφορία πχ. “Μπήκα στην Google και μπορώ να την κάνω Download“ Φιλικά ΥΓ. Το όνομα μου είναι Τάσος εδώ και 43 χρόνια..Όχι Tassos!! :D |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[ Ασφάλεια] Update εφαρμογής ACCESS μέσω Internet | vraxnakisg | Access - Ερωτήσεις / Απαντήσεις | 7 | 18-06-15 03:29 |
[Μορφοποίηση] Περιορισμός πρόσβασης σε στήλες και γραμμές | Skakinen | Excel - Ερωτήσεις / Απαντήσεις | 4 | 09-01-14 20:50 |
Κωδικός Πρόσβασης | passarella | Access - Ερωτήσεις / Απαντήσεις | 4 | 29-08-12 15:40 |
[ Φόρμες ] Διαχείριση βάσης μέσω internet και 2 χρήστες | tzvangel | Access - Ερωτήσεις / Απαντήσεις | 3 | 03-03-12 02:13 |
Έλεγχος διπλοεγγραφής με κώδικα VBA | pdhmos | Access - Ερωτήσεις / Απαντήσεις | 6 | 01-05-11 10:09 |
Η ώρα είναι 21:01.