FAQ 0041: Wie kann ich Winsock laden, ohne eine Form zu benutzen?
von Helge Rex
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
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.