und teil2:
' Hier trite ein Fehler auf!!!
' MsgCount=0 obwohl beim senden kein fehler auftrat
' Dateien da?
If MsgCount > 0 Then
' Wenn ja, Funktion zum Lesen und anzeigen
MsgText = MailSlotRead(BufferSize)
txt_RecMsg.Text = MsgText
End If
End Sub
Public Function MailSlotRead(BufferSize As Long) As String
Dim TextPuffer As String
Dim RC As Long
Dim BytesRead As Long
' Puffer mit benötigter Anzahl Nullen füllen
TextPuffer = String(BufferSize, 0)
' Datei auslesen:
' BytesRead sagt uns, wie viele Bytes gelesen wurden
RC = ReadFileSimple(SlotHandle, TextPuffer, _
Len(TextPuffer) + 1, BytesRead, 0)
' Datei-Inhalt übergeben
MailSlotRead = TextPuffer
End Function
Private Sub cmd_CloseProg_Click()
' bedarf wohl keiner Erklärung ;)
Unload Me
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, _
UnloadMode As Integer)
' Das ist ein wichtiger Programmteil!
' Sollte das Programm beendet werden, ohne den
' Mailslot zu schließen, hilft nur noch ein An- und
' Abmelden des Users oder ein Neustart des Rechners,
' um wieder auf den Mailslot zugreifen zu können.
CloseHandle (SlotHandle)
End Sub
Private Sub cmd_SendMsg_Click()
Dim Result As Boolean
Dim ErrMsg As String
' Daten da?
If txt_SendSlot.Text = "" Then Exit Sub
If txt_SendMsg.Text = "" Then Exit Sub
' Funktion zum Senden des Textes aufrufen
Result = MailSlotSend(txt_SendMsg.Text, _
txt_SendSlot.Text)
' wenn das Resultat True ist, hat alles geklappt
If Result = False Then
ErrMsg = "Es konnte nicht in den Mailslot geschrieben werden!"
MsgBox ErrMsg, vbCritical
End If
End Sub
Public Function MailSlotSend(ByVal Message As String, _
ByVal TargetMailSlot As String) As Boolean
Dim TMSlot As Long
Dim Res As Long
Dim Res1 As Long
Dim BytesWritten As Long
' Daten übergeben ?
If TargetMailSlot = "" Or Message = "" Then
MailSlotSend = False: Exit Function
End If
' Datei im Mailslot des Zielrechners öffnen
TMSlot = CreateFileNoSecurity(TargetMailSlot, _
GENERIC_WRITE, FILE_SHARE_READ, 0, _
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
' und füllen
Res = WriteFileSimple(TMSlot, Message, Len(Message), _
BytesWritten, 0)
' und schließen
Res1 = CloseHandle(TMSlot)
' BytesWritten gibt an, wie viele Bytes
' geschrieben wurden
MailSlotSend = (BytesWritten > 0)
End Function ich kanns mir einfach nicht erklären, hab auch schon die ganze msdn durchforstet
cu Michael
________________________________________________________________________________________________________________________________________
Freeware Programme, Tools, Tutorials und Controls auf >> << |