Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ScreenShot von nichtsehbaren Desktop (https://www.delphipraxis.net/32281-screenshot-von-nichtsehbaren-desktop.html)

SleepyMaster 21. Okt 2004 11:07


ScreenShot von nichtsehbaren Desktop
 
Hi ihrs

weiß jemand von euch wie man den DC von einem Desktop erhält den man nicht sieht (CreateDesktop/EnumDesktops)?

Vielen Dank

Sascha999999999 16. Dez 2006 11:18

Re: ScreenShot von nichtsehbaren Desktop
 
Hat jemand eine Lösung für das Problem?

Die Screenhots werden immer Weis:

Delphi-Quellcode:
procedure ScreenShot(Bild: TBitMap; Desk: TThreadDesktop = nil);
var
  c: TCanvas;
  r: TRect;
begin
  c := TCanvas.Create;
  if(sdgfg=nil) then begin
  c.Handle := GetWindowDC(GetDesktopWindow);
  end
  else begin
  c.Handle := Desk.Handle;
  end;
  try
    r := Rect(0, 0, Screen.Width, Screen.Height);
    Bild.Width := Screen.Width;
    Bild.Height := Screen.Height;
    Bild.Canvas.CopyRect(r, c, r);
  finally
    ReleaseDC(0, c.Handle);
    c.Free;
  end;
end;
Danke!

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

Christian Seehase 16. Dez 2006 13:01

Re: ScreenShot von nichtsehbaren Desktop
 
Moin Sascha,

ich hab's mir mal etwas vereinfacht

Delphi-Quellcode:
procedure ScreenShot(Bild: TBitMap);
var
  c: TCanvas;
  r: TRect;
begin
  c := TCanvas.Create;
  c.Handle := GetWindowDC(GetDesktopWindow);
  try
    r := Rect(0, 0, Screen.Width, Screen.Height);
    Bild.Width := Screen.Width;
    Bild.Height := Screen.Height;
    Bild.Canvas.CopyRect(r, c, r);
  finally
    ReleaseDC(0, c.Handle);
    c.Free;
  end;
end;
aber in der Hauptsache bei Deinem Code belassen:

Kein Problem, das funktioniert so.

Hast Du eventuell den CopyMode des Bitmap-Canvas verstellt?

gsh 16. Dez 2006 13:30

Re: ScreenShot von nichtsehbaren Desktop
 
kann es sein des du versuchst aus einem service einen screenshot zu machen?

xaromz 16. Dez 2006 13:30

Re: ScreenShot von nichtsehbaren Desktop
 
Hallo,

soviel ich weiß, existiert kein Fenterbereich, den Windows nicht tatsächlich anzeigt. Deshalb kannst Du wahrscheinlich auch nur einen Screenshot des aktuell angezeigten Desktops machen.

@Christian: Deine Routine erstellt nur einen Screenshot des aktuellen Desktops. Das funktioniert natürlich.

Gruß
xaromz

himitsu 16. Dez 2006 13:39

Re: ScreenShot von nichtsehbaren Desktop
 
Wenn es also nicht geht, dann halt kurzzeitig auf den anderen Desktop umschalten, Bild machen und schnell wieder zurückschalten. :angel:

Olli 17. Dez 2006 04:47

Re: ScreenShot von nichtsehbaren Desktop
 
Zitat:

Zitat von himitsu
Wenn es also nicht geht, dann halt kurzzeitig auf den anderen Desktop umschalten, Bild machen und schnell wieder zurückschalten. :angel:

LOL. Wenn man das noch effektiver gestalten will, kann man unterschwellige Botschaften ala "du siehst das kurze Umschalten des Desktops nicht" in großen Buchstaben für Sekundenbruchteile einblenden :mrgreen: :mrgreen: :mrgreen:

Sascha999999999 30. Dez 2006 23:57

Re: ScreenShot von nichtsehbaren Desktop
 
hi,

erstmal danke für die vielen Antworten, leider war die lösung immernochnicht dabei,

ist es villeicht möglich mit "CreateProcess" (genauso wie den Explorer) einen Prozess zu erstellen der Screenhots macht und diese an den Hauptprozess sendet?

Danke

Olli 31. Dez 2006 00:10

Re: ScreenShot von nichtsehbaren Desktop
 
Doch die Lösung war dabei. Entweder du schaltest ihn schnell sichtbar oder es geht nicht. Du solltest dir einfach nur mal deine eigene Frage vor Augen führen und dir überlegen wie sinnvoll ein solches Unterfangen an sich ist und wie sinnvoll es ist, das Windows veranlaßt werden soll einen Desktop zu zeichnen, den es nicht anzeigt. :roll:

Sascha999999999 4. Jan 2007 02:47

Re: ScreenShot von nichtsehbaren Desktop
 
naja, entweder binn ich blind oder hier list jemand nicht richtig, die Lösung war wahr ehr nicht dabei!

Also es wird ja ein Aktiver Desktop erstellt, der auch dereichbar ist, man kann ja auch SnapHots von Programmen erstellen die minimirt sind!

ich probier das mal, wenn ich wollt kann ich euch dann ja auch mal mitteilen ob das geklappt hat oder nicht.


.......... ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 Uhr.
Seite 1 von 5  1 23     Letzte »    

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