Der Router sorgt dafür, dass der Hamster eine permanente Verbindung zum Netz hat. Entweder hast Du eine Standleitung, die natürlich über einen richtigen Router geht, oder Du hast einen Dial-in-Router, der bei Bedarf die Verbindung herstellt. Für die angeschlossenen Systeme sieht es in beiden Fällen wie eine permanente Verbindung aus.
Der Hamster kann hier den Aufbau der Verbindung nicht direkt beeinflussen. Daher musst Du in Deinen Skripten die Befehle zum Wählen und Trennen einfach weglassen. Wenn Du keine Scripte benutzt, dann geht das natürlich auch. Die Menübefehle funktionieren ebenfalls.
Mit folgenden Skripten kann man testen, ob eine Verbindung ins Internet möglich ist, zunächst als Subroutine, die in andere Skripte einzubetten ist, dann als eigenständiges Skript.
sub CheckbyPing
# Note: Unter Windows 2000 ist ping nicht verwendbar,
# da es dort immer dasselbe Errorlevel zurückgibt.
# Als Alternative bietet sich Fping (Fast Pinger) an
# (Freeware), Weblink: http://www.kwakkelflap.com/fping.html,
# die Execute-Funktion muss dann ein wenig angepasst werden.
varset ( $rechner, "Name.oder.IP-Adresse.des.Referenzrechners.angeben" )
varset ( $response , $try, 1 )
varset ( $maxtry , 3 )
if ($rechner = "Name.oder.IP-Adresse.des.Referenzrechners.angeben" )
warning ( "LART: " + $rechner )
warning ( "Niemals ein Skript starten, ohne es sich vorher anzusehen!" )
quit
endif
while ($response = 1)
Execute ("ping -n 1 " + $rechner, "" , 0 , True, $response)
# Execute ("fping " + $rechner + " -n 1", "" , 0 , True, $response)
If ( $try = $maxtry )
warning ( $rechner + " kann aktuell nicht gefunden werden!" )
quit
else
print ( $try + " Ping an " + $rechner + " geschickt." )
inc ($try)
endif
endwhile
print ( $rechner + " hat auf PING reagiert." )
endsub
# Online-Check.hsc
# Verwendet eine Komponente des MS Internet Explorer, funktioniert laut
# Dokumentation zur wininet.dll (WinINet Reference) erst ab Windows 2000
#
# Prüft erst, ob der IE sich im Offline-Modus befindet. Wenn ja, kommt eine Anfrage,
# ob man online gehen will. Anschließend wird auf Erreichbarkeit einer Adresse
# getestet, die am Anfang dort einzutragen ist, wo in der Voreinstellung die
# Startseite der deutschsprachigen Wikipedia steht.
#!hs2
varset($testURL,"http://de.wikipedia.org/")
# ^^^^^^^^^^^^^^^^^^^^^^^^
# Hier Adresse eintragen.
if InternetGetConnectedStateEx($testURL)
AddLog( "* InternetGetConnectedStateEx: ++ OK!", $logOK )
else
AddLog( "* InternetGetConnectedStateEx: -- Failed!",$logFail )
endif
# Die Message-Boxen können auch auskommentiert werden.
if CheckOpenUrl($testURL)>0
MsgBox ("Test-URL " + $testURL + " erreichbar.", "Online-Check: Online", 0x40|0x0)
AddLog( "* CheckOpenUrl: ++ online!", $logOK )
else
MsgBox ("Test-URL " + $testURL + " NICHT erreichbar!", "Online-Check: Offline", 0x30|0x0)
AddLog( "* CheckOpenUrl: -- offline!",$logFail )
endif
sub InternetGetConnectedStateEx($strUrl)
varset($buf, MemAlloc(len($strUrl)+1))
MemSetStr($buf, $strUrl)
varset( $p1, MemAlloc(4) )
MemSetInt( $p1, 0 )
varset( $p2, MemAlloc(4) )
MemSetInt( $p2, 0 )
varset($result, DllCall($InternetGetConnectedStateEx,$p1,$p2,$buf,0))
varset( $dwFlags, MemGetInt($p1) )
varset( $inetConnection, "<unknown>" )
if ($p2)
$inetConnection= MemGetStr($p2)
endif
MemFree($p2)
MemFree($p1)
MemFree($buf)
Print( "# InternetGetConnectedStateEx(0x"+hex($dwFlags,2)+", "_
+$inetConnection+"): "+ iif($result,"TRUE","FALSE"))
if (($dwFlags & 0x02 ) = 0 )
print( "Lokales LAN ist offline. Check Hardware." )
return(0)
endif
if ($dwFlags & 0x20 )
print( "IE ist im Offline-Modus.")
return(InternetGoOnline($strUrl))
endif
return($result)
endsub
sub InternetGoOnline($strUrl)
varset($buf, MemAlloc(len($strUrl)+1))
MemSetStr($buf, $strUrl)
varset($result, DllCall( $InternetGoOnline, $buf, 0, 0) )
MemFree($buf)
return($result)
endsub
sub CheckOpenUrl($strUrl)
var($io_h,$iou_h)
varset($buf, MemAlloc(len($strUrl)+1))
MemSetStr($buf, $strUrl)
$io_h=DllCall($InternetOpen, 0, 1, 0, 0, 0)
$iou_h=DllCall($InternetOpenUrl, $io_h, $buf,0,0,0x80000000,0)
DllCall( $InternetCloseHandle, $io_h)
MemFree($buf)
return($iou_h)
endsub
#!initialize
varset($InternetOpen, "wininet.dll|InternetOpenA|n|nnnnn")
varset($InternetOpenUrl, "wininet.dll|InternetOpenUrlA|n|nnnnnn")
varset($InternetCheckConnection,_
"wininet.dll|InternetCheckConnectionA|n|nnn")
varset($InternetGetConnectedStateEx,_
"wininet.dll|InternetGetConnectedStateExA|n|nnnn")
varset($InternetGoOnline,"wininet.dll|InternetGoOnlineA|n|nnn")
varset($InternetCloseHandle,"wininet.dll|InternetCloseHandle|n|n")
varset( $hWinInet, DllLoad("wininet.dll") )
if $hWinInet=0
error("DLL ""wininet.dll"" not found." )
return(-1)
endif
if HamVersion(0)> "2.1.0.11"
varset($logOK, 9)
varset($logFail, 10)
else
varset($logOK, 3)
varset($logFail, 3)
endif
return(0)
#!finalize
DllFree( $hWinInet )
return(0)