bon voila je veux faire un outil d'administration dans le style de vnc, je prend donc un screen sur la partie serveur, je la stoque dans un stream, j'envois le stream par socket, je récupere le stream sur le client et je recharge l'image qui es contenue dans le stream
je n'ai aucune erreur lors de la compilation mais lors des teste, j'ai des erreur mémoire. voici mon code :
coté serveur :
définition de toutes les variables suivit de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 TempStream :=TMemoryStream.Create; 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); ImageBureau.Bitmap.SaveToStream(TempStream); serversocket1.Socket.SendStream(TempStream);
et coté client :
définition de toutes les variables suivit de :
et le message d'erreur ce produit actuellement sur le serveur et est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 while Socket.ReceiveLength > 0 do begin Buffer := AllocMem(Socket.ReceiveLength); try Socket.ReceiveBuf(Buffer^, Socket.ReceiveLength); tempstream.Write(Buffer^, StrLen(Buffer)); finally FreeMem(Buffer); end; tempstream.Seek(0, soFromBeginning); ImageBureau.Bitmap.LoadFromStream(tempstream); Image5.Picture.Bitmap:=ImageBureau.Bitmap; end;
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.
merci d'avance
Balises de code ajoutées par Pierre Castelain.
Pensez-y à l'avenir
Partager