WinSock uden en form?

Tags:    visual-basic

Hej,

Er det muligt at bruge WinSock uden en form, da jeg gerne vil bruge den i en dll?

Kim Pedersen



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Hej,

Er det muligt at bruge WinSock uden en form, da jeg gerne vil bruge den i en dll?

Kim Pedersen


Det har jeg tilfældigvis lavet en demo på engang, så den får du lige her.

Det du skal gøre, er at lave et klassemodul kaldet SocketClass.cls (for eksempel - klassen kan også hedde noget andet, hvis du synes). Følgende kode skal siden smides ned i klassemodulet:

<pre>Option Explicit

Private m_Socket As Object

Private Sub Class_Initialize()

Set m_Socket = CreateObject("MSWinsock.Winsock")

End Sub


Private Sub Class_Terminate()

Set m_Socket = Nothing

End Sub



Public Property Get Socket() As Variant

Set Socket = m_Socket

End Property
</pre>

I det eksempel, jeg oprindelig lavede, blev der brugt en formular, men du kan også bruge et standard kodemodul (BAS fil). Hovedsagen er vel i dit tilfælde at undgå at skulle bruge WinSock kontrollen.

Jeg havde denne kode i formen:

<pre>Option Explicit

Public mySocketClass As SocketClass

Private Sub Form_Load()

Set mySocketClass = New SocketClass

Debug.Print mySocketClass.Socket.State

End Sub
</pre>

Det skulle være det hele.[Redigeret d. 31/03-02 07:45:29 af Herluf Hermansen]



User
Bruger #194 @ 30.03.02 16:56
Hej,

Er det muligt at bruge WinSock uden en form, da jeg gerne vil bruge den i en dll?

Kim Pedersen



Lav det i et ActiveX Document DLL



EKSTRA FORSLAG

Du KAN selvfølgelig bruge en form, som du loader men ikke viser. Eks: formen hedder MinSockForm.frm og du loader den fra et modul:

<pre>Option Explicit

Public Sub Main()

Load MinSockForm ' load, men vis ikke

End Sub</pre>

HUSK bare at bruge sætningen Unload MinSockForm, når programmet slutter.

Da du kan have forms i DLL'er, er det ikke noget problem at bruge:

<pre>Private Sub Class_Initialize()

Load MinSockForm

End Sub

Private Sub Class_Terminate()

Unload MinSockForm

End Sub</pre>

Med denne måde må du dog lave methods og/eller properties i din klasse, så du kan arbejde med dit socket.[Redigeret d. 31/03-02 08:18:47 af Herluf Hermansen]



t