Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WPF-Dialog fehlt auf GDI-Screenshot des Desktops
AlexDozer
myCSharp.de - Member



Dabei seit:
Beiträge: 58

Themenstarter:

WPF-Dialog fehlt auf GDI-Screenshot des Desktops

beantworten | zitieren | melden

Hallo zusammen,

ich benötige für meine Test-Applikation die Möglichkeit Screenshots zu machen. Das funktioniert auch gewissermaßen. Problem was ich habe ist das wenn ein Dialog offen ist sieht man dießen auf dem Screenshot nicht. Es handelt sich hierbei um WPF-Applikationen.

Ich habe schon folgende zwei Möglichkeiten ausprobiert:

IntPtr handle = GDI32.GetForegroundWindow();
IntPtr hdcSrc = User32.GetWindowDC(handle);

User32.RECT windowRect = new User32.RECT();
User32.GetWindowRect(handle, ref windowRect);

int width = windowRect.right - windowRect.left;
int height = windowRect.bottom - windowRect.top;

IntPtr hdcDest = GDI32.CreateCompatibleDC(hdcSrc);
IntPtr hBitmap = GDI32.CreateCompatibleBitmap(hdcSrc, width, height);
IntPtr hOld = GDI32.SelectObject(hdcDest, hBitmap);

GDI32.BitBlt(hdcDest, 0, 0, width, height, hdcSrc, 0, 0, GDI32.SRCCOPY);
GDI32.SelectObject(hdcDest, hOld);
GDI32.DeleteDC(hdcDest);

User32.ReleaseDC(handle, hdcSrc);
Image img = Image.FromHbitmap(hBitmap);
GDI32.DeleteObject(hBitmap);

_bitmaps.Add(new Bitmap(img));

Bitmap b = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height);
Graphics g = Graphics.FromImage(b);
g.CopyFromScreen(0, 0, 0, 0, b.Size);
g.Dispose();

_bitmaps.Add(b);

Bei beiden sieht man nicht die offenen Dialoge. Beide hab ich aus dem Internet. Hat jemand eine Lösung?

Gruß Alex
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10083

beantworten | zitieren | melden

Schonmal davon gehört das WPF auf DirectX aufbaut?
Und deshalb sind ScreenShots auch nicht mit GDI zu machen, sondern ebenfalls per DirectX.
private Nachricht | Beiträge des Benutzers
AlexDozer
myCSharp.de - Member



Dabei seit:
Beiträge: 58

Themenstarter:

beantworten | zitieren | melden

Was ist aber mit dem Desktop? Es soll ja der ganze Bildschirm auf dem Screenshot zu sehen sein, nicht nur die Applikation. Funktioniert das dann noch mit DirectX?
private Nachricht | Beiträge des Benutzers