Die Community zu .NET und Classic VB.
Menü

FAQ 0041: Wie kann ich Winsock laden, ohne eine Form zu benutzen?

 von 

Frage 

Wie kann ich Winsock laden, ohne eine Form zu benutzen?

Antwort  

Manchmal möchte man ein Winsock-Control laden, ohne eine Form benutzen zu müssen.
Das kann man erreichen, wenn man Winsock als Verweis in die Anwendung einbindet.

Unter "Projekt" -> "Komponenten" (oder kurz 'STRG'+'T') zuerst Winsock entfernen. Das ist wichtig, sonst kommt es zu Namenskonflikten.
Unter "Projekt" -> "Verweise" -> "Durchsuchen" die MSWinSck.ocx einbinden.

Jetzt kann man Winsock wie jedes andere Objekt auch anlegen:

Option Explicit

Private WithEvents objWinSock As MSWinsockLib.Winsock

Private Sub Class_Initialize()
    '   Winsock anlegen
    Set objWinSock = New MSWinsockLib.Winsock
    
    '   Winsock mit Daten füttern
    With objWinSock
        .RemoteHost = "www.activevb.de"
        .RemotePort = 80
    End With
End Sub

Private Sub Class_Terminate()
    '   Wurde ein Winsock-Control angelegt?
    If Not (objWinSock Is Nothing) Then
        '   Ja, ist die Verbindung nicht geschlossen?
        If (objWinSock.State <> StateConstants.sckClosed) Then
            '   Nein, unbedingt schließen
            objWinSock.Close
            
            '   nachfolgender Befehl ist wichtig!
            DoEvents
        End If
        
        '   Winsock entfernen
        Set objWinSock = Nothing
    End If
End Sub

Listing 1: Winsock in einer Klasse instanzieren

Nachtrag von Kai Liebenau:
Der Verpackungs- und Weitergabeassistent (deployment wizard) verpackt Lizenzen für Steuerelemente nur dann in einem Setup-Paket, wenn eine Instanz des jeweiligen Steuerelementes auf mindestens einer Form vorhanden ist. Nähere Informationen dazu finden sich in der MSDN Library:
INFO: Visual Basic Winsock Control Run-Time Error 429 and Scalability

Ihre Meinung  

Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen 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.