AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Screenshot über Sockets als JPEG versenden
Thema durchsuchen
Ansicht
Themen-Optionen

Screenshot über Sockets als JPEG versenden

Ein Thema von Neuni · begonnen am 29. Okt 2004 · letzter Beitrag vom 1. Nov 2004
Antwort Antwort
Seite 1 von 3  1 23      
Neuni

Registriert seit: 25. Feb 2004
815 Beiträge
 
Delphi 7 Personal
 
#1

Screenshot über Sockets als JPEG versenden

  Alt 29. Okt 2004, 20:34
Hallo zusammen.

Ich möchte gerne ein Remote-Tool programmieren. Auf dem Client soll ein Screenshot gemacht werden, der dann in JPEG komprimiert wird, und dann per Clientsocket an den Server gesendet wird.

Also den Screenshot mache ich mit:
Delphi-Quellcode:
function GetCursorInfo2: TCursorInfo;
var
 hWindow: HWND;
 pt: TPoint;
 pIconInfo: TIconInfo;
 dwThreadID, dwCurrentThreadID: DWORD;
begin
 Result.hCursor := 0;
 ZeroMemory(@Result, SizeOf(Result));
 // Find out which window owns the cursor
 if GetCursorPos(pt) then
 begin
   Result.ptScreenPos := pt;
   hWindow := WindowFromPoint(pt);
   if IsWindow(hWindow) then
   begin
     // Get the thread ID for the cursor owner.
     dwThreadID := GetWindowThreadProcessId(hWindow, nil);

     // Get the thread ID for the current thread
     dwCurrentThreadID := GetCurrentThreadId;

     // If the cursor owner is not us then we must attach to
     // the other thread in so that we can use GetCursor() to
     // return the correct hCursor
     if (dwCurrentThreadID <> dwThreadID) then
     begin
       if AttachThreadInput(dwCurrentThreadID, dwThreadID, True) then
       begin
         // Get the handle to the cursor
         Result.hCursor := GetCursor;
         AttachThreadInput(dwCurrentThreadID, dwThreadID, False);
       end;
     end
     else
     begin
       Result.hCursor := GetCursor;
     end;
   end;
 end;
end;

// 2. Capture the screen
function CaptureScreen: TBitmap;
var
 DC: HDC;
 ABitmap: TBitmap;
 MyCursor: TIcon;
 CursorInfo: TCursorInfo;
 IconInfo: TIconInfo;
begin
 // Capture the Desktop screen
 DC := GetDC(GetDesktopWindow);
 ABitmap := TBitmap.Create;
 try
   ABitmap.Width := GetDeviceCaps(DC, HORZRES);
   ABitmap.Height := GetDeviceCaps(DC, VERTRES);
   // BitBlt on our bitmap
   BitBlt(ABitmap.Canvas.Handle,
     0,
     0,
     ABitmap.Width,
     ABitmap.Height,
     DC,
     0,
     0,
     SRCCOPY);
   // Create temp. Icon
   MyCursor := TIcon.Create;
   try
     // Retrieve Cursor info
     CursorInfo := GetCursorInfo2;
     if CursorInfo.hCursor <> 0 then
     begin
       MyCursor.Handle := CursorInfo.hCursor;
       // Get Hotspot information
       GetIconInfo(CursorInfo.hCursor, IconInfo);
       // Draw the Cursor on our bitmap
       ABitmap.Canvas.Draw(CursorInfo.ptScreenPos.X - IconInfo.xHotspot,
                           CursorInfo.ptScreenPos.Y - IconInfo.yHotspot, MyCursor);
     end;
   finally
     // Clean up
     MyCursor.ReleaseHandle;
     MyCursor.Free;
   end;
 finally
   ReleaseDC(GetDesktopWindow, DC);
 end;
 Result := ABitmap;
end;
Is so lang, da man den Cursor ja sehen soll!

Nun kann ich das ganze ja in einem Image anzeigen lassen mit.
Image1.Picture.Assign(CaptureScreen); Nun soll das ganze aber in JPEG konvertiert werden und das fertige Bild in einen Stream (soll ja per ClientSocket verschickt werden)



Hoffe ihr wisst, wie ich das anstelle

PS: Danke schonmal für die Antworten
  Mit Zitat antworten Zitat
MasterC

Registriert seit: 9. Jan 2004
Ort: Krefeld
369 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Screenshot über Sockets als JPEG versenden

  Alt 29. Okt 2004, 20:41
Hi,

benutze doch GraphicEx.

Edit: Merke gerade das GraphicEx kein JPG kann, aber es gibt ja noch andere gute Formate. PNG ist für Screenshots z.b. besser.

MFG Chris.
Christian H.
www.Future-Coding.de
  Mit Zitat antworten Zitat
Neuni

Registriert seit: 25. Feb 2004
815 Beiträge
 
Delphi 7 Personal
 
#3

Re: Screenshot über Sockets als JPEG versenden

  Alt 29. Okt 2004, 20:43
Wie mach ich das denn damit?
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Screenshot über Sockets als JPEG versenden

  Alt 29. Okt 2004, 20:47
Wie wäre es mit der Unit "jpeg"?
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
MasterC

Registriert seit: 9. Jan 2004
Ort: Krefeld
369 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Screenshot über Sockets als JPEG versenden

  Alt 29. Okt 2004, 20:47
GraphicEx musst du einfach nur einbiden und schon kannst du die Formate lesen. Ein TImage direkt in einen Stream speichern geht glaube ich nicht, du könntest es ja erst in eine Datei speichern und dann schicken.
Christian H.
www.Future-Coding.de
  Mit Zitat antworten Zitat
Neuni

Registriert seit: 25. Feb 2004
815 Beiträge
 
Delphi 7 Personal
 
#6

Re: Screenshot über Sockets als JPEG versenden

  Alt 29. Okt 2004, 20:49
Zitat von MasterC:
GraphicEx musst du einfach nur einbiden und schon kannst du die Formate lesen. Ein TImage direkt in einen Stream speichern geht glaube ich nicht, du könntest es ja erst in eine Datei speichern und dann schicken.
Das mit der Datei wollte ich gerade verhindern, da es dadurch länger dauert. Wenn ich die dateien im RAM behalte geht es schneller (Es werden ja alle paar sekunden bilder übertragen)
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Screenshot über Sockets als JPEG versenden

  Alt 29. Okt 2004, 20:49
Und du könntest bitte Delphi-Tags verwenden. Danke!

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Neuni

Registriert seit: 25. Feb 2004
815 Beiträge
 
Delphi 7 Personal
 
#8

Re: Screenshot über Sockets als JPEG versenden

  Alt 29. Okt 2004, 20:54
Welchen unterschied bitte macht es ob ich
Code:
CODE
oder DELPHI nehme?
  Mit Zitat antworten Zitat
MasterC

Registriert seit: 9. Jan 2004
Ort: Krefeld
369 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Screenshot über Sockets als JPEG versenden

  Alt 29. Okt 2004, 21:00
Mit Delphi Tags hat der Code Delphi Language Highlighting.
Christian H.
www.Future-Coding.de
  Mit Zitat antworten Zitat
Neuni

Registriert seit: 25. Feb 2004
815 Beiträge
 
Delphi 7 Personal
 
#10

Re: Screenshot über Sockets als JPEG versenden

  Alt 29. Okt 2004, 21:05
OT: Ahh...ok, werd sie ab jetzt immer benutzen

Aber jetzt back to topic
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz