2009-08-10 5 views
0

in C++ Builder 6 auf Windows Vista zu senden ...Shop ein Screen-Capture (BitBlt) in einem Speicherpuffer über IdTCPClient

Graphics:: TBitmap * bmpscreencapture = new Graphics::TBitmap; 
bmpscreencapture-> Height = Screen-> Height; 
bmpscreencapture-> Width = Screen-> Width; 
HDC ScreenSrc = GetWindowDC (0); 
BitBlt (bmpscreencapture-> Canvas-> Handle, 0, 0, Screen-> Width, 
Screen-> Height, ScreenSrc, 0, 0, SRCCOPY); 
Canvas->Draw(10, 10, bmpscreencapture); 
ReleaseDC (GetDesktopWindow(), ScreenSrc); 
delete bmpscreencapture; 

Im Moment habe ich einen Code-Abschnitt für den Bildschirm Erfassung und Anzeige des Bildschirms Erfassung auf eine leere Form. Was ich möchte, ist zu tun, speichern Sie das aufgenommene Bild in einen Pufferspeicher und dann diesen Puffer über das Internet senden, um den indy Client IdTCPClient mit durch ein ähnliches Programm mit indy Server IDTCPServer empfangen werden.

Hat jemand irgendwelche Vorschläge/Ideen, wie dies zu tun ?? Ich bin ziemlich neu in Grafiken Programmierung

Antwort

2

Verwenden Sie das TBitmap :: SaveToStream() -Methode, die Daten zu einem TStream, wie ein TMemoryStream zu speichern. Dann passieren die TStream zu Indys TIdTCPConnection :: Writestream() (Indy 9 und früher) oder TIdIOHandler :: Write (TStream) (Indy 10) Verfahren. Auf dem recieving Ende können Sie dann die TIdTCPConnection/TIdIOHandler verwenden :: Readstream() -Methode, die Daten in ein TStream, zu lesen und dann die TStream zum TBitmap passieren :: Loadfromstream() -Methode.