je souhaiterais lire les données d'un pipe (par exemple \\.\Pipe\lsarpc ) mais je ne sais pas du tout comment faire. J'ai éssayé de bidouillé avec la documentation de MSDN (http://msdn.microsoft.com/en-us/library ... S.85).aspx ) mais aucun resultat

Code : Tout sélectionner
Structure POINTAPI
x.l
Y.l
EndStructure
Global *Mem1.l
Global *Mem2.l
Global Img1.l
Global Img2.l
Global tWidth.l
Global tHeight.l
Global Width.f
Global Height.f
Declare SendImage(tImg)
Procedure Screenshot(srcDc,Width,Height,tWidth,tHeight)
hImage = CreateImage(#PB_Any,tWidth,tHeight)
If hImage
hdc = StartDrawing(ImageOutput(hImage))
p.POINTAPI
p\x = 0
p\y = 0
SetStretchBltMode_(hdc,#HALFTONE)
SetBrushOrgEx_(hdc, 0, 0, @p)
StretchBlt_(hdc, 0, 0, tWidth, tHeight, srcDc, 0, 0,Width,Height, #SRCCOPY)
StopDrawing()
ReleaseDC_(#Null,srchdc)
ReleaseDC_(#Null,hdc)
EndIf
ProcedureReturn hImage
EndProcedure
Procedure SendImage(tImg)
UsePNGImageEncoder()
UsePNGImageDecoder()
ImageSize = ImageWidth(tImg) * ImageHeight(tImg)
ImgDataPipe = CreateNamedPipe_("\\.\pipe\ImgDataPipe",#PIPE_ACCESS_INBOUND|#FILE_FLAG_OVERLAPPED,#PIPE_TYPE_BYTE|#PIPE_READMODE_BYTE|#PIPE_NOWAIT,1,ImageSize,ImageSize,#NMPWAIT_USE_DEFAULT_WAIT,#Null)
PNGImageData = AllocateMemory(ImageSize) ;The Size of the png is smaller, but we dont know yet how much exactly
SaveImage(tImg,"\\.\pipe\ImgDataPipe",#PB_ImagePlugin_PNG)
ReadFile_(ImgDataPipe,PNGImageData,ImageSize,@PNGImageSize,#Null)
CloseHandle_(ImgeDataPipe)
If CatchImage(1,PNGImageData,PNGImageSize)
SetGadgetState(0,ImageID(1))
EndIf
EndProcedure
ExamineDesktops()
Width =DesktopWidth(0)
Height = DesktopHeight(0)
tWidth = (Width / Height) * 600
tHeight = 600
MemorySize = (tWidth * tHeight << 2)
*Mem1 = AllocateMemory(MemorySize)
*Mem2 = AllocateMemory(MemorySize)
*Dest = AllocateMemory(MemorySize)
ldest = MemorySize
hdc = GetDC_(0)
Img2 = CreateImage(#PB_Any,tWidth,tHeight,24)
OpenWindow(0,0,0,800,600,"",$CF0001)
CreateGadgetList(WindowID(0))
ImageGadget(0,0,0,0,0,0)
ButtonGadget(1,10,10,40,20,"go")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Img1 = Screenshot(hdc,Width,Height,tWidth,tHeight)
sendImage(Img1)
;uncomment and it fails possibly due to a conflict in references to the lz libs in png and PureZip
;If PureZIP_PackMemory(*mem1, sz+16, *Dest, @ldest) = #Z_OK
; MessageRequester("","ziped")
;EndIf
EndSelect
Case #WM_CLOSE
quit =1
EndSelect
Until quit
Code : Tout sélectionner
If WaitNamedPipe_("\\.\pipe\lsass", #NMPWAIT_USE_DEFAULT_WAIT)
Debug "ok"
hPipe = CreateFile_("\\.\pipe\lsass", #GENERIC_READ, #FILE_SHARE_READ, 0, #OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, 0)
If hPipe
Debug hPipe
Text.s = Space(1000)
Readed.l
ReadFile_(hPipe, @Text, 1000, @Readed, 0)
Debug Text
Else
Debug "0"
EndIf
EndIf
Code : Tout sélectionner
ReadFile_(hPipe, @Text, 1000, @Readed, 0)
hPipe=#false
Code : Tout sélectionner
hPipe = CreateFile_("\\.\pipe\lsass", #GENERIC_READ, #FILE_SHARE_READ, 0, #OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, 0)