Autor Beitrag
Ak-Alex
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 27.05.03 11:45 
Hallo, habe jetzt also den Codeschnippsel aus der FAQ genommen:

ausblenden volle Höhe 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:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
   B : TBitmap;
implementation

{$R *.dfm}
procedure GetScreenShot (var ABitmap : TBitmap);  
var
  DC : THandle;
begin  
  if Assigned(ABitmap) then                  // Prüfen ob gültiges Bitmap übergeben wurde 
  begin  
    DC := GetDC(0);                          // Desktop DC holen 
    try  
      ABitmap.Width := Screen.Width;           // Bitmapgrösse den... 
      ABitmap.Height := Screen.Height;         // Bildschirm anpassen
      BitBlt(ABitmap.Canvas.Handle,            // Dekstop 
             0,0,Screen.Width,Screen.Height,   // in 
             DC,                               // das 
             0,0,                              // Bitmap 
             SrcCopy                           // kopieren 
        );  
    finally  
      ReleaseDC(0, DC);                        // DC wieder freigeben 
    end;  
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);


begin
  B := TBitmap.Create;  
  try  
    GetScreenShot(B);  
    Image1.Picture.Assign(B);  
  finally
    B.Free;
  end;  
end





end.


Wie kann ich jetzt das Bild in einen Stream fassen so das ich diesen dann versenden kann.....

Gruß

Alex


Moderiert von user profile icontommie-lie: Code- durch Delphi-Tags ersetzt
Ak-Alex
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 27.05.03 12:14 
Titel: ok
ok, ich hab die antwort schon....

aber vielleicht kann mir nun jemand sagen wie ich es schaffe ein bild zu schießen, welches aber nicht so hochauflösend sein muss wie das oroginal desktopbild....wegen der streamgröße!!!!
focus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187

XP, 2k, 98, Me
D6 Prof
BeitragVerfasst: Di 27.05.03 12:52 
hi,
um immer nur das aktive fenster zu knipsen hat

bis11 folgenden code geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure ScreenShotActiveWindow(Bild: TBitMap); 
var 
  c : TCanvas; 
  r, t : TRect; 
  h : THandle; 
begin 
  c := TCanvas.Create; 
  c.Handle := GetWindowDC(GetDesktopWindow); 
  h := GetForeGroundWindow; 
  if h<>0 then 
    GetWindowRect(h, t); 
  try 
    r := Rect(0,0,t.Right-t.left, t.Bottom-t.Top); 
    Bild.Width := t.Right-t.left; 
    Bild.Height := t.Bottom-t.Top; 
    Bild.Canvas.CopyRect(r, c, t); 
  finally 
    ReleaseDC(0, c.handle); 
    c.Free; 
  end
end;

( www.delphi-forum.de/...highlight=screenshot )

ich denke das verringert den traffic recht drastisch..
gruss
michael

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.
Ist die Frage beantwortet? Das Problem gelöst?

Dann klicke hier, um das Thema entsprechend zu markieren!