AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bildschirmfoto knipst nicht alles

Bildschirmfoto knipst nicht alles

Ein Thema von KodeZwerg · begonnen am 29. Mai 2018 · letzter Beitrag vom 4. Jun 2018
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 08:11
Zitat:
Dieses.
Nein.. Es gibt das DC des Virtuellen Bildschirm (Screen) zurück.
Und was machst du nun wenn du mehrere Monitore verwendest du glaubst das es dann immer noch funktioniert?
Wenn du also mit mehreren Monitoren arbeitern willst solltest du das verwenden.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Zitat:
Kein Scherz, ich sehe bei mir keine Nachricht von Luckie, wo soll er sowas geschrieben haben?
Er sagte nicht das du dein Konzept überdenken sollst.
Zitat:
Wie "Hintergrund herausfiltern"? Wenn du mit dem DC von dem betreffenden Fenster arbeitest, sollte auch nur das Fenster in das Bitmap kopiert werden.
Das sagte Ich. Denn ich verstehe deine Herangehensweise leider auch nicht.
Es reicht wenn man sich das Bitmap direkt vom DC holt
Da muss man nix rausfiltern.
HBitmap(GetCurrentObject(DC, OBJ_BITMAP));
Zitat:
Es geht mir nicht ums Kekse backen, ich will ein Fenster fotographieren so wie es mir auch der Desktop präsentiert.
Aha.. OK ein vier\fünf Zeiler also.
1. GetDesktopWindow
2. GetDC\CreateDC
3. GetWindowRect
4. StretchBlt via BitBlt.
5. ReleaseDC

Das knipst alles incl. die Videos in meinem Player(DirectX) und Layered Windows.
Zitat:
da mir die Erfahrung fehlt und ich keine Ahnung davon habe mache ich es nunmal so wie ich es mache.
Zitat:
Frage: Wenn Du selbst Dein OTTB mit deiner selbstgebackenen Knipsmethode knipst und da nen Rahmen malst, wo issn der Rahmen dann?
Wo er hingehört um OTTB.

Sorry! Ich wollte dir nicht zu nahe treten, mach wie du willst.
Bin erste mal raus. (Dachte du wolltest etwas dabei lernen)

gruss

Geändert von EWeiss (11. Jul 2019 um 15:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 08:26
Och menno, Ok, Danke auf jeden fall für die korrekte heran gehens weise, ich versuche es so wie Du es beschreibst umzusetzen.

edit
Ich habe gerade dein update mit Bild gesehen, da ist doch auch Desktop Hintergrund, das meinte ich mit rausfiltern bei obiger Aussage.
Gruß vom KodeZwerg

Geändert von KodeZwerg (30. Mai 2018 um 08:28 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 08:34
Och menno, Ok, Danke auf jeden fall für die korrekte heran gehens weise, ich versuche es so wie Du es beschreibst umzusetzen.

edit
Ich habe gerade dein update mit Bild gesehen, da ist doch auch Desktop Hintergrund, das meinte ich mit rausfiltern bei obiger Aussage.
OK dies Antwort noch.
Dann hole dir doch direkt das Bitmap vom DC was gibt es da raus zu filtern.
Habe dir doch gezeigt wie es geht.
HBitmap(GetCurrentObject(DC, OBJ_BITMAP));
Aber ehrlich? Frage mich was es dir bringen soll ob ich nun den Hintergrund des Desktop im Bereich von OTTB sehe
oder aber nachher anstelle dessen einen weißen\schwarzen oder was auch immer Hintergrund habe ist gehüpft wie gesprungen.

Das einzige was du dann noch machen könntest das Bild als PNG kopieren und den schwarzen\weißen Hintergrund dann ausschneidest.
Aber das ist wieder höhere Mathematik

gruss

Geändert von EWeiss (30. Mai 2018 um 08:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 08:45
Habe dir doch gezeigt wie es geht.HBitmap(GetCurrentObject(DC, OBJ_BITMAP));
Ja ich bin da noch nicht so fit, bedankt habe ich mich bereits und versuche es umzusetzen. Für Dich ist das alles so selbstverständlich weil Du so tief in der Materie drinnen steckst, ich muss das alles nun Sinnvoll umsetzen und natürlich hier und da MSDN lesen wie/womit/ausgabe etc ich aufrufe damit am Ende das rauskommt was ich wollte, ein Bild vom Fenster mit egal was für Content. Du hast ja heran gehens weise nun sehr deutlich beschrieben, ich bin dabei.
Danke nochmals!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.157 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 09:57
emm


BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY);

BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY or CAPTUREBLT);
mit

Delphi-Quellcode:
Const
   CAPTUREBLT = $40000000;
Grüsse Mavarik
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 10:13
emm


BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY);

BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY or CAPTUREBLT);
mit

Delphi-Quellcode:
Const
   CAPTUREBLT = $40000000;
Grüsse Mavarik
Zitat:
Includes any windows that are layered on top of your window in the resulting image. By default, the image only contains your window. Note that this generally cannot be used for printing device contexts.
Kann da keinen besonderen Vorteil drin erkennen.
Habe ich noch nie verwendet.

https://stackoverflow.com/questions/...y-of-the-targe
Denke das kann man getrost weglassen.

gruss

Geändert von EWeiss (30. Mai 2018 um 10:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.157 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 10:32
Kann da keinen besonderen Vorteil drin erkennen.
Habe ich noch nie verwendet.
Denke das kann man getrost weglassen.
Bei einem "Foto" des eigenen Fensters ggf. ja, aber wenn man z.B. die Gadgets vom Vista-Bildschirm auch im Image haben möchte, geht es nicht ohne...

Keine Ahnung ob das auch für andere Inhalte gilt, hab ich noch nicht getestet.

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 11:43
BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY or CAPTUREBLT);
Das bewirkt leider keinen Unterschied, Layered knipsen = schwarzes Bild, Danke trotzdem Mavarik!
Ich habe gerade neu gestartet und wenn fertig gebe ich bescheid oder pump es in Mitglieder Projekte.
So in etwa wird die GUI aussehen Screenshot - 30_05.jpg
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Bildschirmfoto knipst nicht alles

  Alt 30. Mai 2018, 22:19
@Emil, nun hab ich mal Dein Text für Delphi angepasst, funktioniert für ganzes Display mit egal was für Content. Danke
Jetzt taste ich mich an Deine zweite Variante ran.
Delphi-Quellcode:
Function CaptureScreen(var hbmp: HBITMAP): Boolean;
var
  hDCScreen, hDCMem : HDC;
  cx, cy: Integer;
  hBmpOld: HBITMAP;
  dwRop: DWORD;
begin
  hDCScreen := CreateDC('DISPLAY', 0, 0, 0);
  cx := GetDeviceCaps(hDCScreen, HORZRES);
  cy := GetDeviceCaps(hDCScreen, VERTRES);
  hDCMem := CreateCompatibleDC(hDCScreen);
  hbmp := CreateCompatibleBitmap(hDCScreen, cx, cy);
  hBmpOld := SelectObject(hDCMem, hbmp);
  dwRop := SRCCOPY or CAPTUREBLT;
  Result := BitBlt(hDCMem, 0, 0, cx, cy, hDCScreen, 0, 0, dwRop);
  SelectObject(hDCMem, hBmpOld);
  DeleteDC(hDCMem);
  DeleteDC(hDCScreen);
end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz