VB 4/6- und VBA-Forum - Beitragsübersicht -
ThemaVB6: Webseiten erkennen Zwischenablage
Von It's me
E-Mail chambers1@gmx.net
Datum 07. Oktober 2015 um 17:49:30
Frage Hallo ich mal wieder

ich hab meinen Freund *Google* gequält aber ich hab nichts gefunden. Und zwar ist es möglich, wenn man die Zeischenablage ausliest zu erkennen ob es sich um eine internet-adresse handelt?

Wenn ja wäre ich für jeden tipp dankbar
Antwort:
Von BAGZZlash
Datum 09. Oktober 2015 um 09:41:02
Antwort Die Funktion hält sich relativ strikt an die Definition dessen, was URL ist und was nicht. Beispielsweise ist "google.de" keine URL. Wenn man das in den Browser eingibt, gibt dieser die Anfrage weiter. An irgendeiner Stelle wird das dann aufgelöst, heraus kommt mittlerweile die (definitionsgetreue) URL "https://www.google.de/?gws_rd=ssl".

Frühere Internet-Explorer haben dieses Auflösen selbst erledigt. Wie moderne Browser das handhaben, weiß ich nicht, ggf. erfolgt dies heutzutage sogar erst durch den DNS.

Theoretisch kann man einfach beim DNS nachfragen, ob eine eingegebene Adresse gültig aufgelöst wird. Wenn ja, muss es eine URL (im weiteren Sinne) sein, wenn nicht, dann nicht. Das kann dann natürlich aber auch dazu führen, dass eine gültige URL wie "http://www.dfuikgsfdijhgsdfkljfgdlj.com", die aber nicht existiert, als nicht gültig identifiziert wird. Wenn Dich das nicht stört, probiere dies:
Option Explicit

Private Declare Function DnsQuery Lib "dnsapi" Alias "DnsQuery_A" (ByVal strname As String, ByVal wType As Integer, ByVal fOptions As Long, ByVal pServers As Long, ppQueryResultsSet As Long, ByVal pReserved As Long) As Long
Private Declare Function DnsRecordListFree Lib "dnsapi" (ByVal pDnsRecord As Long, ByVal FreeType As Long) As Long
Private Declare Function lstrlen Lib "kernel32" (ByVal straddress As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, ByVal Source As Long, ByVal Length As Long)
Private Declare Function inet_ntoa Lib "ws2_32.dll" (ByVal pIP As Long) As Long
Private Declare Function inet_addr Lib "ws2_32.dll" (ByVal sAddr As String) As Long

Private Const DnsFreeRecordList As Long = 1
Private Const DNS_TYPE_A As Long = &H1
Private Const DNS_QUERY_BYPASS_CACHE As Long = &H8

Private Type VBDnsRecord
pNext As Long
pName As Long
wType As Integer
wDataLength As Integer
flags As Long
dwTel As Long
dwReserved As Long
prt As Long
others(35) As Byte
End Type

Private Sub Command1_Click()

MsgBox IsIP("google.de")
MsgBox IsIP("http://www.dfuikgsfdijhgsdfkljfgdlj.com")

End Sub

Private Function Resolve(sAddr As String, Optional sDnsServers As String) As String
Dim pRecord As Long
Dim pNext As Long
Dim uRecord As VBDnsRecord
Dim lPtr As Long
Dim vSplit As Variant
Dim laServers() As Long
Dim pServers As Long
Dim sName As String

If LenB(sDnsServers) <> 0 Then
vSplit = Split(sDnsServers)
ReDim laServers(0 To UBound(vSplit) + 1)
laServers(0) = UBound(laServers)
For lPtr = 0 To UBound(vSplit)
laServers(lPtr + 1) = inet_addr(vSplit(lPtr))
Next
pServers = VarPtr(laServers(0))
End If
If DnsQuery(sAddr, DNS_TYPE_A, DNS_QUERY_BYPASS_CACHE, pServers, pRecord, 0) = 0 Then
pNext = pRecord
Do While pNext <> 0
Call CopyMemory(uRecord, pNext, Len(uRecord))
If uRecord.wType = DNS_TYPE_A Then
lPtr = inet_ntoa(uRecord.prt)
sName = String(lstrlen(lPtr), 0)
Call CopyMemory(ByVal sName, lPtr, Len(sName))
If LenB(Resolve) <> 0 Then
Resolve = Resolve & " "
End If
Resolve = Resolve & sName
End If
pNext = uRecord.pNext
Loop
Call DnsRecordListFree(pRecord, DnsFreeRecordList)
End If
End Function

Private Function IsIP(Addr As String)

Addr = Resolve(Addr)

If Addr = "" Then IsIP = False Else IsIP = True

End Function
[ Antwort schreiben | Zurück zum VB 4/6- und VBA-Forum | Forum-Hilfe ]
Antworten
VB6: Webseiten erkennen Zwischenablage - It's me 07. Oktober 2015 um 17:49:30
Re: Webseiten erkennen Zwischenablage - Neptun 08. Oktober 2015 um 06:03:32
Re: Webseiten erkennen Zwischenablage - It's me 08. Oktober 2015 um 09:20:24
Re: Webseiten erkennen Zwischenablage - BAGZZlash 08. Oktober 2015 um 18:39:16
Re: Webseiten erkennen Zwischenablage - Neptun 08. Oktober 2015 um 18:55:16
Re: Webseiten erkennen Zwischenablage - It's me 08. Oktober 2015 um 21:11:42
Re: Webseiten erkennen Zwischenablage - BAGZZlash 09. Oktober 2015 um 09:41:02
Re: Webseiten erkennen Zwischenablage - It's me 10. Oktober 2015 um 08:44:13
Re: Webseiten erkennen Zwischenablage - It's me 18. November 2015 um 21:38:17

Ihre Antwort
(Nick-)Name   Wichtige Informationen zur Namensangabe
E-Mail (opt.)  Wichtige Informationen zur Angabe einer eMail-Adresse
Thema   Wichtige Informationen zur Angabe eines Themas
Betrifft (IDE)  Visual Basic 6 (*.exe)
Ihre Antwort
Smilies
Mehr...
FettKursivUnterstrichen   Übersicht der Tipp-KürzelÜbersicht der Projekt-KürzelÜbersicht der Bücher-Kürzel 
Homepage
Titel
Root-Smilies              
             
             
[ Zurück zum VB 4/6- und VBA-Forum | Forum-Archiv | Forum-Hilfe | Chat ]

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB.Net | .Net-Forum | DirectX | DirectX-Forum | Chat | Ausschreibungen | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 13. Dezember 2015