AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Screenshot immer nur weiß
Thema durchsuchen
Ansicht
Themen-Optionen

Screenshot immer nur weiß

Ein Thema von Sascha L · begonnen am 9. Feb 2005 · letzter Beitrag vom 10. Feb 2005
Antwort Antwort
Seite 1 von 2  1 2      
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#1

Screenshot immer nur weiß

  Alt 9. Feb 2005, 21:15
Hallo,

mein Programm ist minimiert im Systray und soll einen Screenshot machen, aber das Bild ist immer nur weiß.

Ich benutze folgende Prozedur:

Delphi-Quellcode:
procedure MakeScreenShot(const ATarget: TBitmap);
var DesktopDC: HDC;
begin
DesktopDC := CreateDC('DISPLAY', nil, nil, nil); // habe auch schon GetWindowDC(0) versucht
  try
  ATarget.PixelFormat := pfDevice;
  ATarget.Width := Form1.Width;
  ATarget.Height := Form1.Height;
  BitBlt(ATarget.Canvas.Handle, Form1.Left, Form1.Top, Form1.Width, Form1.Height, DesktopDC, 0, 0, SRCCOPY);
  finally
  DeleteDC(DesktopDC);
  end;
  end;
Wenn ich eine "normale" Anwendung habe, welche nicht im Systray ist, geht alles einwandfrei.
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#2

Re: Screenshot immer nur weiß

  Alt 9. Feb 2005, 21:21
Versuchs mal so.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Canvas: TCanvas;
  Bitmap: TBitmap;
begin
  Canvas := TCanvas.Create;
  try
    Canvas.Handle := GetWindowDC(0);
    try
      Bitmap := TBitmap.Create;
      try
        Bitmap.Height := Screen.Height;
        Bitmap.Width := Screen.Width;

        BitBlt(Bitmap.Canvas.Handle,0,0,
               Screen.Width,
               Screen.Height,
               Canvas.Handle, 0, 0,
               Bitmap.Canvas.CopyMode);
        Bitmap.SaveToFile('C:\Hallo.bmp');
      finally
      Bitmap.Free;
      end;
    finally
    ReleaseDC(0, Canvas.Handle);
    end;
  finally
  Canvas.Free;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Screenshot immer nur weiß

  Alt 9. Feb 2005, 21:22
Delphi-Quellcode:
 var a:hdc;
begin

 a := GetWindowDC(GetDesktopWindow);
 BitBlt(Canvas.Handle,0,0,width,height,a,0,0,SRCCOPY);

end;
so geht das
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Screenshot immer nur weiß

  Alt 9. Feb 2005, 22:05
@sniper: das ist derselbe Code wie meiner und der funktioniert nicht.

@gerrit89: Danke! Dein Code funktioniert, nur habe ich nun ein Problem mit Snipers Code (http://www.delphipraxis.net/internal...ct.php?t=46669)

Ich bekomme hier einen Fehler (Zugriffsverletzung in der ntdll.dll):

Tree := AddNode(Tree,Bitmap2.Canvas.Pixels[x,y]); Gruß
Sascha
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Screenshot immer nur weiß

  Alt 9. Feb 2005, 22:09
Zitat:
@sniper: das ist derselbe Code wie meiner und der funktioniert nicht.
Bei mir schon (erste genauso wie der zweite Beispiel mit Tree). Ich überprüfe mein Code bevor ich es poste.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Screenshot immer nur weiß

  Alt 9. Feb 2005, 22:12
Hast du beachtet, dass mein Programm minimiert im SysTray ist?

Wenn es maximiert ist, dann funnktioniert der Code, aber wenn das Programm im Hintergrund läuft, dann geht es nicht.
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#7

Re: Screenshot immer nur weiß

  Alt 10. Feb 2005, 11:39
Aber ich glaube wenn du in deinen code nach bitblt einfach Folgendes einfügst :
ATarget.SaveToFile('C:\Hallo.bmp'); Dann müsste der genau so funktionieren oder
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Screenshot immer nur weiß

  Alt 10. Feb 2005, 12:07
Zitat:
Aber ich glaube wenn du in deinen code nach bitblt einfach Folgendes einfügst :
Quellcode: markieren
ATarget.SaveToFile('C:\Hallo.bmp');


Dann müsste der genau so funktionieren oder
Ich denke auch....
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Screenshot immer nur weiß

  Alt 10. Feb 2005, 14:09
ja tut er ja auch, wie gesagt, nur funktioniert das ganze mit dem code von sniper nicht mehr, aber beides muss harmonieren, sonst bekomme ich ja nicht die am häufigsten auftretende farbe.
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#10

Re: Screenshot immer nur weiß

  Alt 10. Feb 2005, 14:19
Das Code funct. nur leide beim ersten Durchlauf, d.h. man kann es nur einmal feststellen im laufe des "Programlebens" welche farbe ist die am häufigsten vorgekommene....
Das liege daran das Tree variable und alle Child Links gelöscht werden müssen, und zum ersten Mal sind sie auch "leer"(nil).
Ich versuche "TREE" noch immer zu löschen...
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:48 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