Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
'Verbindung herstellen
Winsock1.Close
Winsock1.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim ImagePack As New PropertyBag
Dim RecievedImage As Variant
'Bei Fehler nochmal Neu Verlangen
On Error GoTo ImageError
Winsock1.GetData RecievedImage
'Temporäre Picturebox Erstellen
Set oTemp = Me.Controls.Add("VB.PictureBox", "TemporaryPictureBox")
With oTemp
.AutoRedraw = True
.AutoSize = True
.BorderStyle = 0
End With
'Mit Der Property Bag
With ImagePack
'Inhalt Laden, Fehler durch Falsche daten Lässt das Bild Nochmal
' Verlangen
.Contents = RecievedImage
'Bild aus PropertyBag Laden
oTemp.Picture = .ReadProperty("Picture", Nothing)
'In Bild
Picture2.PaintPicture oTemp.Picture, .ReadProperty("X", 0), _
.ReadProperty("Y", 0)
'Temporäre PictureBox Löschen
Me.Controls.Remove "TemporaryPictureBox"
'Den Progress Einstellen
ProgressBar2 = .ReadProperty("Percent", 0)
End With
'Ok Geben ( Für nächsten Teil)
Winsock1.SendData "OK"
Exit Sub
ImageError:
Winsock1.SendData "ERROR"
End Sub
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim RecievedData As String
Winsock2.GetData RecievedData
Select Case RecievedData
Case Is = "OK"
ErrorMessage = False
BackMessage = True
Case Is = "ERROR"
ErrorMessage = True
BackMessage = True
End Select
End Sub
Function SendImage( _
ParentForm As Form, _
ByVal X As Integer, _
ByVal Y As Integer, _
Size As Integer, _
Socket As Winsock, _
Picture As PictureBox, _
ByVal Percent As Integer) As Boolean
Dim ImageData As Variant
Dim ImagePack As New PropertyBag
'Erstelle Temporäre Picturebox
Set oTemp = ParentForm.Controls.Add("VB.PictureBox", _
"TemporaryPictureBox_SENDING")
'Kopiere Bildteil
With oTemp
.ScaleMode = vbPixels
.Width = ParentForm.ScaleX(Size, vbPixels, ParentForm.ScaleMode)
.Height = ParentForm.ScaleY(Size, vbPixels, ParentForm.ScaleMode)
.AutoRedraw = True
.BorderStyle = 0
BitBlt .hDC, 0, 0, Size, Size, Picture.hDC, X, Y, vbSrcCopy
End With
'Erstelle Die Datentasche
With ImagePack
'Infos Rein (Hier könnten auch Bild name Und Beschreibung Dazu)
ImagePack.WriteProperty "Picture", oTemp.Image, Nothing
ImagePack.WriteProperty "Size", Size
ImagePack.WriteProperty "Percent", Percent
ImagePack.WriteProperty "X", X
ImagePack.WriteProperty "Y", Y
ImageData = .Contents
End With
'Temporäre PictureBox Löschen
ParentForm.Controls.Remove "TemporaryPictureBox_SENDING"
'Bild Senden, Falls Socket Da
If Socket.State = 7 Then
Socket.SendData ImageData
SendImage = True
DoEvents
Else
SendImage = False
End If
End Function
Function MilliTime()
MilliTime = timeGetTime
End Function Viel Spaß Damit, garantiert absolut Fehlerfrei, oder so ;)
Lars |