Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Internet und Netzwerke

Bestehende Verbindung(en) trennen

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.Redakteurytwinky 27.01.2008

Eine bestehende Internetverbindung zu trennen, ist gar nicht so einfach..
Zur Auswahl stehen:
-Stromversorgung abschalten(die ganz harte Methode und nicht ganz ungefährlich..)
-diverse Klicks auf bunte Bildchen
-Aufruf von RasDial /d
Syntax:

        Rasdial Eintrag [Benutzername [Kennwort|*]] [/DOMAIN:Domänenname]
                [/PHONE:Rufnummer] [/CALLBACK:Rückrufnummer]
                [/PHONEBOOK:Telefonbuchdatei] [/PREFIXSUFFIX]

        Rasdial [Eintrag] /DISCONNECT

        Rasdial

Das kann jedoch mit FreeBASIC so ohne Weiteres noch nicht realisiert werden ;-)
Für Windows-User bietet sich hier aber der Aufruf von API-Funktionen aus der rasapi32.dll an:
RasEnumConnections Verbindungen auflisten
RasHangUp Verbindungen trennen
Ich habe hier erstmal ein Beispiel aus dem API-Guide nach FB portiert, das meine Internetverbindung
ohne lästige Klickerei beendet. Wenn ich die FB-API Aufrufe kapiert habe, werde ich dies wohl noch
ändern, aber bis hierher war es auch schon ein langer Weg..

'+------------------------------------------------------------------------------------------+
'|   Header: Bestimmen der Übergabeparameter                                                |
'|           AnzeigeCheck:|Il1 sind Alt-0124, Großes i, kleines L, Eins „ä”öüáߎę֚Üñ±¸©ø°|
Const Author="RasTrennen.Bas v017f ¸2007 by ytwinky, MD"'                                   |
'|           (Tastenkombination: keine)                                                     |
'|                                                                                          |
'|   Zweck : Bestehende Verbindung(en) trennen..                                            |
'+------------------------------------------------------------------------------------------+
Const fbNull=0
Const fbOkOnly = 0            'Nur die Schaltfläche OK anzeigen
Const RAS_MAXENTRYNAME=256
Const RAS_MAXDEVICETYPE=16
Const RAS_MAXDEVICENAME=128
Const RAS_RASCONNSIZE=412
Type RasConn
  dwSize As Integer
  hRasConn As Integer
  szEntryName(RAS_MAXENTRYNAME) As Byte
  szDeviceType(RAS_MAXDEVICETYPE) As Byte
  szDeviceName(RAS_MAXDEVICENAME) As Byte
End Type
Declare Function MsgBox Lib "user32" Alias "MessageBoxA" _
    (ByVal hWnd As Integer, ByVal lpText As String, _
    ByVal lpCaption As String, ByVal wType As Integer) As Integer
Declare Function RasEnumConnections Lib "rasapi32.dll" Alias _
    "RasEnumConnectionsA" (lpRasConn As Any Ptr, lpcb As Integer _
    Ptr, lpcConnections As Integer Ptr) As Integer
Declare Function RasHangUp Lib "rasapi32.dll" Alias "RasHangUpA" _
    (byVal hRasConn As Integer) As Integer
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
'This program will close your Internet-connection, so to test this,
'you will have to open an Internet-connection.
'..naja direkt übernehmen ließ sich das Beispiel natürlich nicht ;-))
Dim lpRasConn(255) As RasConn
Dim As Integer i, j, lpcConnections=0, lpcb, ReturnCode
Dim s As String
'Set the structure's size
lpRasConn(0).dwSize=RAS_RASCONNSIZE
lpcb=RAS_MAXENTRYNAME*lpRasConn(0).dwSize
'Enumerate all the available connections
ReturnCode=RasEnumConnections(@lpRasConn(0), @lpcb, @lpcConnections)
If lpcConnections=0 Then
  s="Wasn, ich bin gar nicht drin?!"
Else
  s="Aktive Verbindungen=" &lpcConnections &!"\n"
  For i=0 To lpcConnections-1
    j=0
    Do
      s+=Chr(lpRasConn(i).szEntryName(j))
      j+=1
    Loop Until lpRasConn(i).szEntryName(j)=0 'das muß ja nicht mit Chr() gemacht werden..^^
    'Hang up
    ReturnCode=RasHangUp(lpRasConn(i).hRasConn)
    s+=*IIF(ReturnCode=0, @" sollte getrennt sein..", @" ist mglw. noch aktiv")
  Next i
End If
MsgBox fbNull, s, "RAS-Trennen", fbOkOnly

..fröhliches Trennen :D
Hinweis: Das Programm muß mit -s gui übersetzt werden..

Gruß
ytwinky


Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 28.07.2007 von Redakteurytwinky angelegt.
  • Die aktuellste Version wurde am 27.01.2008 von Redakteurytwinky gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen