Entwickler-Ecke

Internet / Netzwerk - Screenshot erstellen und an Client server senden?


keyso - Do 06.09.07 22:15
Titel: Screenshot erstellen und an Client server senden?
heyho^^ erstmal Hallo, bin neu hier(wie man unschwer erkennen kann) ;)
hab auch gleich eine Frage an euch, ich komm allein einfach nciht mehr klar^^

Ich möchte einen screenshot machen diesen konvertieren und ihn über clientsocket verschicken. der Server wandelts dann wieder in ein Bild um. im Mom bin ich soweit, dass keine Fehlermeldungen mehr gezeigt werden, aber das Bild beim Server bleibt trotzdem leer. Hier mal der code:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
 //CLient befehl

//screenshot machen (Originalcode, und schon getestet, da ist kein Fehler mehr drin)
procedure MakeScreenShot(const ATarget: TBitmap);
var
  DesktopDC: HDC;
begin
  DesktopDC := CreateDC('DISPLAY'nilnilnil);
  try
    ATarget.PixelFormat := pfDevice;
    ATarget.Width := Screen.Width;
    ATarget.Height := Screen.Height;

    BitBlt(ATarget.Canvas.Handle, 00, Screen.Width, Screen.Height, DesktopDC, 00, SRCCOPY);
  finally
    DeleteDC(DesktopDC);
  end;
end;
//////Buttonclick
type
testrecord=record
screen:TBitmap;
end;
var
Varscreen: TBitmap;{} sendscreen:Testrecord;
begin
                       varscreen := TBitmap.Create;
                       MakeScreenShot(Varscreen); 
                       with sendscreen do begin screen:=Varscreen; end;  
                       Clientsocket1.Socket.SendBuf(Varscreen,SizeOf(Sendscreen)); end;




Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
 ///Server Reaktion
//onread-Befehl

type
testrecord=record
screen:TBitmap;
end;
var
receivetext: string;
screnVar:TBitmap; incomScreen:testRecord;

   socket.receivebuf(incomScreen, SizeOf(incomScreen)) ;
   with incomScreen do begin
   screnVar:=screen;
   end;
  // Image1.Picture.Assign(screnvar);   nicht sicher ob man das brauch
   image1.Picture.Bitmap:=screnVar;

   QueryMemo.Lines.Add(DateTimeToStr(Now)+' Uhr:mess: Bild erhalten');


Narses - Do 06.09.07 22:21

Moin und :welcome: im Forum!

Fehler-Klassiker ;) Kuckst du FAQ [http://www.delphi-library.de/topic_Probleme+beim+SendenEmpfangen+von+records+und+dyn+Objekten_60793.html]. :les:

cu
Narses


keyso - Do 06.09.07 22:29

okay^^ soweit verstanden, und inwiefern könnt ihr mir jetzt bei der Problemlösung helfen?
ich möchte eine Bitmap vom Client zum Server senden und dort anzeigen lassen.ich bin echt schon verzweifelt (und das mit record war auch nur einer von einigen Versuchen^^)
pls helft mir!!:D


Narses - Do 06.09.07 22:34

Moin!

Schau mal hier [http://www.delphi-library.de/topic_TerminatorzeichenProtokollTutorial+Teil+2_65487.html] und hier [http://www.delphi-library.de/topic_BinaerProtokollTutorial_66706.html], damit sollte das klar werden. ;)

cu
Narses


keyso - Do 06.09.07 23:05

hm das ist für mich zu kompliziert^^
gibts da nicht einfach einen standert-code?
dann kann ich mich auch hinsetzen um den zu verstehen, aber anders macht das glaub ich im mom keinen sinn.
Kann doch nicht so schwer sein oder?
ich bewezifele, dass man dafür einen binärcode oder ähnliches braucht.
kann einer sich nicht vll erbarmen und einen kleinen code schreiben, ich hab mich echt schon genug durch sämtliches Material gewälzt :(


Narses - Do 06.09.07 23:10

Moin!

Hm, ich hätte dann noch das hier [http://www.delphi-forum.de/viewtopic.php?p=451338#451338] :les:

Wenn du auch damit nicht weiter kommst, kann ich dir leider nicht helfen. :? Eine c&p-Lösung habe ich nicht und würde ich auch nicht gut finden... :|

cu
Narses


arj - Fr 07.09.07 11:51

user profile iconkeyso hat folgendes geschrieben:
hm das ist für mich zu kompliziert^^


Wenn du dich mit der Materie beschäftigst, dann wirst du es nicht mehr soo kompliziert finden ;)
Und kannst hinterher stolz sein, dass du es hinbekommen hast!