VB 5/6-Tipp 0009: DFÜ verbinden und trennen
von ActiveVB
Beschreibung
Dieser Tipp bietet die Möglichkeit aus einer Anwendung heraus eine der vorhanden DFÜ-Verbindungen auszuführen und nach Bedarf wieder zu trennen. Dabei wird der normale Einwahl-Dialog genutzt und mit Sendkeys gestartet. Wer eine wirkliche automatische Einwahl benötigt sollte sich Tipp 49 anschauen!
Update nach einem Hinweis von De Mischi am 24. Februar 2004:
Nun wird die Verbindung auch aufgenommen, wenn im Namen ein Leerzeichen vorhanden ist.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: RasEnumConnectionsA (RasEnumConnections), RasEnumEntriesA (RasEnumEntries), RasHangUpA (RasHangUp) | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Schaltfläche "Command2" ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Listen-Steuerelement "List1" Option Explicit 'Deklaration: Globale Form API-Konstanten Private Const RAS_MaxDeviceType As Long = 16 Private Const RAS95_MaxDeviceName As Long = 128 Private Const RAS95_MaxEntryName As Long = 256 'Deklaration: Globale Form API-Typen Private Type RASCONN95 dwSize As Long hRasConn As Long szEntryName(RAS95_MaxEntryName) As Byte szDeviceType(RAS_MaxDeviceType) As Byte szDeviceName(RAS95_MaxDeviceName) As Byte End Type Private Type RASENTRYNAME95 dwSize As Long szEntryName(RAS95_MaxEntryName) As Byte End Type 'Deklaration: Globale Form API-Funktionen Private Declare Function RasEnumConnections Lib "RasApi32.DLL" Alias "RasEnumConnectionsA" ( _ lprasconn As Any, lpcb As Long, lpcConnections As Long) As Long Private Declare Function RasEnumEntries Lib "RasApi32.DLL" Alias "RasEnumEntriesA" ( _ ByVal reserved As String, ByVal lpszPhonebook As String, lprasentryname As Any, _ lpcb As Long, lpcEntries As Long) As Long Private Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" ( _ ByVal hRasConn As Long) As Long 'Deklaration: Globale Form-Variablen Dim lngRASCon As Long Dim strDFUEName As String Private Sub Command1_Click() 'Programm beenden falls keine DFÜ-Verbindung gefunden wurde If List1.ListIndex = -1 Then Exit Sub End If 'DFÜ-Verbindung starten strDFUEName = List1.List(List1.ListIndex) Shell "rundll32.exe " & Chr(34) & "rnaui.dll,RnaDial " & strDFUEName & Chr(34) SendKeys "{ENTER}", True SendKeys "{ENTER}", True Me.SetFocus End Sub Private Sub Command2_Click() Call HangUp(strDFUEName) End Sub Private Sub Form_Load() 'Deklaration: Lokale Prozedur-Variablen Dim i As Long Dim lngBuffer As Long Dim lngEntries As Long Dim strRASConName As String Dim udtRASCon(255) As RASENTRYNAME95 'Control-Eigenschaften initialisieren Command1.Caption = "Verbinden" Command2.Caption = "Trennen" udtRASCon(0).dwSize = 264 lngBuffer = 256 * udtRASCon(0).dwSize 'DFÜ-Verbindungen ermitteln Call RasEnumEntries(vbNullString, vbNullString, udtRASCon(0), lngBuffer, lngEntries) 'DFÜ-Verbindungen in Liste anzeigen For i = 0 To lngEntries - 1 strRASConName = StrConv(udtRASCon(i).szEntryName(), vbUnicode) List1.AddItem Left$(strRASConName, InStr(strRASConName, vbNullChar) - 1) Next i 'Erste DFÜ-Verbindung in Liste markieren, falls eine vorhanden ist If List1.ListCount > 0 Then List1.ListIndex = 0 End If End Sub Private Sub HangUp(ByVal strVerbindung As String) 'Deklaration: Lokale Prozedur-Variablen Dim i As Long Dim lngBuffer As Long Dim lngEntries As Long Dim lngResult As Long Dim strRASConName As String ReDim udtRASCon(255) As RASCONN95 'DFÜ-Verbindungen ermitteln udtRASCon(0).dwSize = 412 lngBuffer = 256 * udtRASCon(0).dwSize lngResult = RasEnumConnections(udtRASCon(0), lngBuffer, lngEntries) For i = 0 To lngEntries - 1 strRASConName = StrConv(udtRASCon(i).szEntryName(), vbUnicode) strRASConName = Left$(strRASConName, InStr(strRASConName, vbNullChar) - 1) 'DFÜ-Verbindung beenden If strRASConName = strVerbindung Then lngRASCon = udtRASCon(i).hRasConn lngResult = RasHangUp(lngRASCon) End If Next i End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 9 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von am 31.05.2006 um 12:03
hm geht das verbinden nicht auch ohne sendkeys?
währe doch eleganter das über ne api zu machen...
hab bisher aber keine gefunden die unter winxp funzt.
Kommentar von Knud am 21.10.2004 um 10:06
Hallo.
Ich arbeite seit kurzer Zeit mit VB.net!
Kann mir jemand Helfen en Code in .NET umzuschreiben.
Ich bekomme das einfach niht hin!
Vielen Dank!
Knud
Kommentar von Blendman am 28.01.2004 um 14:11
Hallo zusammen.
Hab gelesen, daß einige von euch (die NT/2000 oder XP nutzen) diesen Tip nich benutzen konnten. Ist ja auch kein Wunder, da die rnaui.dll nur für 98/ME gedacht ist und auch nur da funktioniert. Doch kein Problem. Ersetzt einfach folgenden Eintrag:
Shell "rundll32.exe rnaui.dll,RnaDial " & strDFUEName
durch
Shell "rasphone -d " & strDFUEName
Beachtet aber das bereits eine DFÜ-Verbindung eingerichtet sein muß und der Name der DFÜ-Verbindung darf keine Freizeichen enthalten. (Sonderzeichen gehen. Hab ich schon getestet.)
Also dann viel Spass.
Gruß
Blendman
Kommentar von Hans-Jörg Stradtmann am 18.02.2003 um 13:47
Unter XP muss anstelle von rundll rasphone -t oder -f stehen
Kommentar von R.Buchen am 21.11.2002 um 10:12
arbeite mit VB6 unter NT4.0/SP 6
rnaui.dll Vers. 4.10.2222
erhalte nach Aufruf die Fehlermeldung
Fehler beim Laden von rnaui.dll
Die angegebene Prozedur wurde nicht gefunden.
Was kann das sein ?
Kommentar von suter am 14.08.2002 um 20:05
Wäre noch gut, wenn man diesen Tipp noch ausführlich erklären würde.
Kommentar von One-Way am 13.03.2002 um 12:30
Wenn ihr Win2k habt könnt ihr denn befehl "Shell "RASDIAL ""INTERNET (PPP) ISDN""",vbMinimizedNoFocus" benutzen mit /d könnt ihr verbindung trennen
Kommentar von Micheal Longerich am 28.06.2001 um 12:29
Wer kann mir helfen? Ich bekoome von der Funktion Internetdial den returnwert 668, was hat das zu bedeuten ??
Kommentar von Penticrack am 28.04.2001 um 11:14
bei mir gibt es schon Fehlermeldungen, wenn ich das Projekt lade ... da wird mir gesagt, das ein objekt nicht unterstützt wird, so 5 oder 6 mal ... tsts
wenn ixh es starte funktioniert es trotzdem nicht...