Προς το περιεχόμενο

Δημιουργια Inet control σε VB6 κατα τον χρονο εκτελεσης


geo1st487

Προτεινόμενες αναρτήσεις

Δημοσ.

καλημερα

φιλε μου μπορεις να γινεις πιο συγκεκριμενος ?

θα βοηθουσε να καταλαβω οσο το δυνατον καλυτερα και να σου δωσω μια σωστη απαντηση

ευχαριστω

 

 

 

Y.s Αν καταλαβα καλα θες να δημιουργεις control at runtime

Φιλε μου γιατι δεν δημιουργεις μια array και μετα να δημιουργεις οσα θες ?

αν κανω λαθος διορθωσε με

http://www.freevbcode.com/ShowCode.asp?ID=2815

Δημοσ.
καλημερα

φιλε μου μπορεις να γινεις πιο συγκεκριμενος ?

θα βοηθουσε να καταλαβω οσο το δυνατον καλυτερα και να σου δωσω μια σωστη απαντηση

ευχαριστω

 

 

 

Y.s Αν καταλαβα καλα θες να δημιουργεις control at runtime

Φιλε μου γιατι δεν δημιουργεις μια array και μετα να δημιουργεις οσα θες ?

αν κανω λαθος διορθωσε με

http://www.freevbcode.com/ShowCode.asp?ID=2815

 

Φιλε ntaryl, θελω μεσα απο ενα module να δημιουργησω μια αναφορα στο Inet control και να το χρησιμοποιησω χωρις να χρειαστει να φορτωσω φορμα στη μνημη. Θα εχω μονο στο toolbox το Inet και χωρις να το τοποθετησω στη φορμα να το χρησιμοποιησω.

 

Να γραψω π.χ. το παρακατω

Dim objInet as Inet

strHtml = objInet.OpenURL("www.mypage.gr")

Δημοσ.
Αυτο σου κανει

καλο απογευμα

Γιατι δεν 8ες να χρησιμοποιησεις το inet ?

 

Το ετρεξα και επιστρεφει μηδενικο string. Σε σενα τρεχει κανονικα;

Thanks για την προσπαθεια.

Δημοσ.

Μετα απο αρκετο ψαξιμο και αφου βρηκα τουλαχιστον 3 κωδικες που επεστρεφαν μηδενικο string, βρηκα τον παρακατω κωδικα ο οποιος δουλευει! Βαζεις σε ενα Module τον παρακατω κωδικα και εισαι τζετ!

 

Const scUserAgent = "API-Guide test program"

Const INTERNET_OPEN_TYPE_DIRECT = 1

Const INTERNET_OPEN_TYPE_PROXY = 3

Const INTERNET_FLAG_RELOAD = &H80000000

Const sURL = "http://www.megamillions.com/includes/numberData_home.asp"

Private Declare Function InternetOpen Lib "wininet" 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 InternetCloseHandle Lib "wininet" (ByRef hInet As Long) As Long

Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer

Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long

 

 

Private Function getSrc() As String

'KPD-Team 1999

'URL: http://www.allapi.net/

'E-Mail: [email protected]

 

Dim hOpen As Long, hFile As Long, sBuffer As String, Ret As Long

'Create a buffer for the file we're going to download

sBuffer = Space(1000)

'Create an internet connection

hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)

'Open the url

hFile = InternetOpenUrl(hOpen, sURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)

'Read the first 1000 bytes of the file

InternetReadFile hFile, sBuffer, 1000, Ret

'clean up

InternetCloseHandle hFile

InternetCloseHandle hOpen

'Show our file

getSrc = sBuffer

End Function

 

Sub main()

MsgBox Trim(getSrc)

End Sub

***αυτόματη ένωση μηνυμάτων***

Τελικα ο κωδικας που βρηκα εχει ενα προβλημα. Οταν εχω τον internet explorer σε work offline και εκτελεσω τον κωδικα, εμφανιζει το source που εχει κρατησει στην cache. Πως θα γινει να μην εμφανιζει τα δεδομενα της cache;

Ευχαριστω

Δημοσ.

Καλημέρα και συγνώμη φίλε μου, αλλά δεν έχω καταλάβει πλήρως τι θέλεις να κάνεις...

Το Inet γιατί σου χρειάζεται?

Πες μου τι θέλεις να κάνεις στο project σου να πιάσω το νόημα, μήπως καταφέρω να σε βοηθήσω, μιας κ το έχω χρησιμοποιήσει και εγώ κάμποσες φορές..

Δημοσ.
Καλημέρα και συγνώμη φίλε μου, αλλά δεν έχω καταλάβει πλήρως τι θέλεις να κάνεις...

Το Inet γιατί σου χρειάζεται?

Πες μου τι θέλεις να κάνεις στο project σου να πιάσω το νόημα, μήπως καταφέρω να σε βοηθήσω, μιας κ το έχω χρησιμοποιήσει και εγώ κάμποσες φορές..

 

Θελω να εμφανιζω τον πηγαιο κωδικα απο ενα site. Ο κωδικας που εγραψα δουλευει αλλα οταν εχω τσεκαρει το work offline (εργασια χωρις συνδεση) απο τον internet explorer εμφανιζει τα δεδομενα που εχει κρατησει στην cache. Οταν ειμαι work offline δεν θελω να εμφανιζει δεδομενα. Κανωντας χρηση το Inet εχω το ιδιο προβλημα. Προτιμω να βρω μια λυση με API.

Δημοσ.

οκ..

δώσε μου λίγα λεπτάκια και θα σου δώσω τον κώδικα που χρησιμοποίησα που δεν έχει τέτοια προβλήματα..

***αυτόματη ένωση μηνυμάτων***

φτιαχνεις ενα Inet.bas και πετάς αυτό μέσα:

 

>
Option Explicit

Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Public Const INTERNET_OPEN_TYPE_DIRECT = 1
Public Const INTERNET_OPEN_TYPE_PROXY = 3

Public Const scUserAgent = "SMS Chatline"
Public Const INTERNET_FLAG_RELOAD = &H80000000

Public 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

Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" _
(ByVal hOpen As Long, ByVal sUrl As String, ByVal sHeaders As String, _
ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long

Public Declare Function InternetReadFile Lib "wininet.dll" _
(ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Integer

Public Declare Function InternetCloseHandle Lib "wininet.dll" _
(ByVal hInet As Long) As Integer


Function OpenURL(sUrl As String) As String

Dim hOpen               As Long
Dim hOpenUrl            As Long
Dim bDoLoop             As Boolean
Dim bRet                As Boolean
Dim sReadBuffer         As String * 3000
Dim lNumberOfBytesRead  As Long
Dim sBuffer             As String
   
   On Error GoTo OUErr
   OpenURL = ""
   hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
   If hOpen > 0 Then
       hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
       If hOpenUrl > 0 Then
           bDoLoop = True
           sBuffer = ""
           While bDoLoop
               DoEvents
               sReadBuffer = vbNullString
               bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
               sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
               If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
           Wend
           OpenURL = sBuffer
           InternetCloseHandle (hOpenUrl)
       End If
       InternetCloseHandle (hOpen)
   End If
   Exit Function
OUErr:
   'MsgBox "Error " & Error(Err)
   Resume Next
   
End Function

 

 

και μετά για να το χρησιμοποιήσεις απο οπουδήποτε μέσα στο project:

 

>
   Dim myURL as String
   Dim pos1, pos2 As Long
   Dim start_str, end_str As String
   Dim tmp As String

   myURL = Inet.OpenURL("http://")

   pos1 = 1

   start_str = "" 'ΕΔΩ ΒΑΖΕΙΣ ΜΙΑ ΛΕΞΗ ΝΑ ΒΡΕΙ ΜΕΣΑ ΣΤΟ URL Η` ΣΤΗΝ ΠΕΡΙΠΤΩΣΗ ΣΟΥ ΤΗΝ ΑΡΧΗ ΤΟΥ SITE
   end_str = "" 'ΕΔΩ ΕΙΝΑΙ ΠΟΥ ΘΑ ΣΤΑΜΑΤΗΣΕΙ ΝΑ ΨΑΧΝΕΙ
   pos1 = InStr(pos1, myURL, start_str)
   pos1 = pos1 + Len(start_str)
   pos2 = InStr(pos1, myURL, end_str)
   tmp = Trim(Mid(myURL, pos1, pos2 - pos1)) 'ΣΟΥ ΕΠΙΣΤΡΕΦΕΙ ΟΤΙ ΕΙΝΑΙ ΑΝΑΜΕΣΑ ΣΤΟ start_str ΚΑΙ ΤΟ end_str

   pos1 = pos2


Δημοσ.
οκ..

δώσε μου λίγα λεπτάκια και θα σου δώσω τον κώδικα που χρησιμοποίησα που δεν έχει τέτοια προβλήματα..

***αυτόματη ένωση μηνυμάτων***

φτιαχνεις ενα Inet.bas και πετάς αυτό μέσα:

 

>
Option Explicit

Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Public Const INTERNET_OPEN_TYPE_DIRECT = 1
Public Const INTERNET_OPEN_TYPE_PROXY = 3

Public Const scUserAgent = "SMS Chatline"
Public Const INTERNET_FLAG_RELOAD = &H80000000

Public 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

Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" _
(ByVal hOpen As Long, ByVal sUrl As String, ByVal sHeaders As String, _
ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long

Public Declare Function InternetReadFile Lib "wininet.dll" _
(ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Integer

Public Declare Function InternetCloseHandle Lib "wininet.dll" _
(ByVal hInet As Long) As Integer


Function OpenURL(sUrl As String) As String

Dim hOpen               As Long
Dim hOpenUrl            As Long
Dim bDoLoop             As Boolean
Dim bRet                As Boolean
Dim sReadBuffer         As String * 3000
Dim lNumberOfBytesRead  As Long
Dim sBuffer             As String
   
   On Error GoTo OUErr
   OpenURL = ""
   hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
   If hOpen > 0 Then
       hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
       If hOpenUrl > 0 Then
           bDoLoop = True
           sBuffer = ""
           While bDoLoop
               DoEvents
               sReadBuffer = vbNullString
               bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
               sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
               If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
           Wend
           OpenURL = sBuffer
           InternetCloseHandle (hOpenUrl)
       End If
       InternetCloseHandle (hOpen)
   End If
   Exit Function
OUErr:
   'MsgBox "Error " & Error(Err)
   Resume Next
   
End Function

 

 

και μετά για να το χρησιμοποιήσεις απο οπουδήποτε μέσα στο project:

 

>
   Dim myURL as String
   Dim pos1, pos2 As Long
   Dim start_str, end_str As String
   Dim tmp As String

   myURL = Inet.OpenURL("http://")

   pos1 = 1

   start_str = "" 'ΕΔΩ ΒΑΖΕΙΣ ΜΙΑ ΛΕΞΗ ΝΑ ΒΡΕΙ ΜΕΣΑ ΣΤΟ URL Η` ΣΤΗΝ ΠΕΡΙΠΤΩΣΗ ΣΟΥ ΤΗΝ ΑΡΧΗ ΤΟΥ SITE
   end_str = "" 'ΕΔΩ ΕΙΝΑΙ ΠΟΥ ΘΑ ΣΤΑΜΑΤΗΣΕΙ ΝΑ ΨΑΧΝΕΙ
   pos1 = InStr(pos1, myURL, start_str)
   pos1 = pos1 + Len(start_str)
   pos2 = InStr(pos1, myURL, end_str)
   tmp = Trim(Mid(myURL, pos1, pos2 - pos1)) 'ΣΟΥ ΕΠΙΣΤΡΕΦΕΙ ΟΤΙ ΕΙΝΑΙ ΑΝΑΜΕΣΑ ΣΤΟ start_str ΚΑΙ ΤΟ end_str

   pos1 = pos2


 

Thanks για τον κωδικα. Δεν θελω να ψαχνω μεσα στο site. Θελω απλως να εμφανιζει ολα τα δεδομενα. Πρωτα ομως θελω να ελεγχω αν ο default internet browser ειναι work offline. Σε περιπτωση που ειναι να τον γυριζει online και επειτα να εμφανιζει τα δεδομενα του site. Σε καμια περιπτωση δεν θελω να εμφανιζει τα δεδομενα που ειναι στην cache. Αν εβρισκα μια API που να γυρναει τον default internet browser σε online mode θα βοηθουσε πολυ.

Δημοσ.
μα αν βάλεις την πρώτη λέξη ή γράμμα του site στο strart_str και στο end_str βαλεις </html> το ενδοιάμεσο είναι όλο το site..

 

Το δοκιμασα και δεν παιζει. Τωρα ανακαλυψα οτι ο κωδικας μου οταν τρεχει σε vista επιστρεφει μηδενικο string ενω στα xp οχι.

Δημοσ.
Το δοκιμασα και δεν παιζει. Τωρα ανακαλυψα οτι ο κωδικας μου οταν τρεχει σε vista επιστρεφει μηδενικο string ενω στα xp οχι.

 

Πετάξτε την VB .Τα πράγματα είναι απλά απλός κανεις request στον http server και διαβάζεις αυτά που γυρίζει .Όλα αυτά με sockets ,και όχι με έτοιμα πράγματα .Μάθετε να προγραμματίζεται σωστά .

Δημοσ.
Πετάξτε την VB .Τα πράγματα είναι απλά απλός κανεις request στον http server και διαβάζεις αυτά που γυρίζει .Όλα αυτά με sockets ,και όχι με έτοιμα πράγματα .Μάθετε να προγραμματίζεται σωστά .

 

Πως γινεται με sockets;

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...