Code: Select all
EnableExplicit
; Beispielprogramm für Named Pipes (very quick, very dirty ...)
; stbi 2007
#BUFSIZE = 1024
Define PipeName.s = "\\.\pipe\pbsamplepipe"
; Named Pipe einrichten
Define hPipe.i = CreateNamedPipe_(PipeName, #PIPE_ACCESS_DUPLEX, #PIPE_TYPE_MESSAGE | #PIPE_READMODE_MESSAGE | #PIPE_NOWAIT, #PIPE_UNLIMITED_INSTANCES, #BUFSIZE, #BUFSIZE, 0, #Null)
If hPipe = 0
Debug "Fehler beim Erstellen der Named Pipe" : End
EndIf
; zur Named Pipe verbinden
ConnectNamedPipe_(hPipe, 0)
; in die Pipe schreiben
Define handle.i = OpenFile(#PB_Any, PipeName)
WriteString(handle, "Hello Pipe!", #PB_Ascii)
CloseFile(handle)
; einen Blick in die Pipe werfen
Define BytesAvailable.l = 0
PeekNamedPipe_(hPipe, 0, 0, 0, @BytesAvailable, 0)
; aus der Pipe lesen
Define Buffer.s = Space(BytesAvailable)
Define BytesRead.l = 0
ReadFile_(hPipe, @Buffer, BytesAvailable, @BytesRead, 0)
Debug PeekS(@Buffer, -1, #PB_Ascii)
; aufräumen
DisconnectNamedPipe_(hPipe)
CloseHandle_(hPipe)
End
Program A Is creating a pipe and writing a message:
Code: Select all
#BUFSIZE = 1024
Define PipeName.s = "\\.\pipe\pbsamplepipe"
; Named Pipe einrichten
Define hPipe.i = CreateNamedPipe_(PipeName, #PIPE_ACCESS_DUPLEX, #PIPE_TYPE_MESSAGE|#PIPE_READMODE_MESSAGE | #PIPE_NOWAIT, #PIPE_UNLIMITED_INSTANCES, #BUFSIZE, #BUFSIZE, 0, #Null)
If hPipe = 0
Debug "Fehler beim Erstellen der Named Pipe" : End
EndIf
; zur Named Pipe verbinden
ConnectNamedPipe_(hPipe, 0)
; in die Pipe schreiben
Define handle.i = OpenFile(#PB_Any, PipeName)
WriteString(handle, "Hello Pipe!", #PB_Ascii)
CloseFile(handle)
OpenConsole()
Print("waiting")
Repeat : Delay(10) : ForEver
Code: Select all
#BUFSIZE = 1024
Define PipeName.s = "\\.\pipe\pbsamplepipe"
; Named Pipe einrichten
Define hPipe.i = CreateNamedPipe_(PipeName, #PIPE_ACCESS_DUPLEX, #PIPE_TYPE_MESSAGE|#PIPE_READMODE_MESSAGE | #PIPE_NOWAIT, #PIPE_UNLIMITED_INSTANCES, #BUFSIZE, #BUFSIZE, 0, #Null)
If hPipe = 0
Debug "Fehler beim Erstellen der Named Pipe" : End
EndIf
; zur Named Pipe verbinden
ConnectNamedPipe_(hPipe, 0)
; einen Blick in die Pipe werfen
PeekNamedPipe_(hPipe, 0, 0, 0, @BytesAvailable, 0)
; aus der Pipe lesen
Define Buffer.s = Space(BytesAvailable)
Define BytesRead.l = 0
ReadFile_(hPipe, @Buffer, BytesAvailable, @BytesRead, 0)
OpenConsole()
Print("Result: " + PeekS(@Buffer, -1, #PB_Ascii))
Repeat : Delay(10) : ForEver