Bonjours tlm, je fais donc un programme dans le style de vnc et j'utilise les composant indy (TIdTCPServer et TIdTCPClient) pour établir la connection. Sur mon client, j'ai un bouton screen qui me permet normalement de faire une capture d'écran du serveur et de la recevoir. Voici le code du bouton screen :
Voici maintenant le code executé lorsque le serveur reçoi le handler screen :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 timer1.Enabled := true; IdTCPClient1.WriteLn('screen');
voici maintenant le code du timer coté client qui est enable lorsque l'on clic sur le bouton screen (interval : 500) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 var ImageBureau:Tpicture; JpegStream : TMemoryStream; begin ImageBureau.Bitmap.Width := Screen.Width; ImageBureau.Bitmap.Height := Screen.Height; BitBlt(ImageBureau.Bitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height, GetDC(GetDesktopWindow),0,0,SrcCopy); JpegStream := TMemoryStream.Create; imagebureau.Bitmap.SaveToStream(JpegStream); imagebureau.Free; asender.Thread.Connection.WriteInteger(JpegStream.Size); asender.Thread.Connection.OpenWriteBuffer; asender.Thread.Connection.WriteStream(JpegStream); asender.Thread.Connection.CloseWriteBuffer; FreeAndNil(JpegStream);
et voici le message d'erreur que je reçois coté serveur je pense :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 var imagerecu: TMemoryStream; begin idtcpclient1.ReadStream(imagerecu); image5.Picture.Bitmap.LoadFromStream(imagerecu);
Le projet project1.exe a provoqué une classe d'exception EAccessViolation avec le message 'Violation d'acces à l'adresse 0041EF23 dans le module 'project1.exe'. Lecture de l'adresse 0000000C'. Processus stoppé. Utilisez pas-à-pas ou executer pour continuer.
qq1 c ce que je dois faire ????
merci d'avance !
Partager