AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) "Fensterfoto" unter Windows 7 klappt nicht so recht...
Thema durchsuchen
Ansicht
Themen-Optionen

"Fensterfoto" unter Windows 7 klappt nicht so recht...

Ein Thema von turboPASCAL · begonnen am 25. Jul 2010 · letzter Beitrag vom 26. Jul 2010
Antwort Antwort
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#1

"Fensterfoto" unter Windows 7 klappt nicht so recht...

  Alt 25. Jul 2010, 21:35
Hi,

nun muss ich doch mal nachfragen. Ich mochte von einem Fenster welches Subfenster enthält eins dieser Subfenster als Bild kopieren.
Das klappt bei den OS XP und Vista ohne Probleme, jedoch bei Win7 bekomme ich den kompletten Desktop in mein Bitmap kopiert.

Ich glaube mich zu erinnern, das schon mal so ein Thema gab nur leider finde ich es nicht mehr.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: "Fensterfoto" unter Windows 7 klappt nicht so recht...

  Alt 25. Jul 2010, 21:40
Wie versuchst du den Screenshot zu machen?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

AW: "Fensterfoto" unter Windows 7 klappt nicht so recht...

  Alt 25. Jul 2010, 21:48
So:

Delphi-Quellcode:
if (hNotifierWnd <> 0) and (isWindowVisible(hNotifierWnd)) then
  begin
    hInetExpWnd := FindWindowByClasses(...);
    if hInetExpWnd <> 0 then
    begin
      GetClientRect(hInetExpWnd, cwcr);

      hINSWndDC := GetDC(hInetExpWnd);
      if hINSWndDC <> 0 then
      begin
        with cwcr do
          stretchblt(hBmpDC, 0, 37, clWndWidth, clWndHeight - 37, hINSWndDC, 0, 0, Right - Left,
            Bottom - Top, SRCCOPY);
        
        // ...
      end;
      ReleaseDC(hInetExpWnd, hINSWndDC);
    end;
  end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: "Fensterfoto" unter Windows 7 klappt nicht so recht...

  Alt 26. Jul 2010, 02:07
Wird das Fenster denn gefunden?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: "Fensterfoto" unter Windows 7 klappt nicht so recht...

  Alt 26. Jul 2010, 08:42
Also ich würde versuchen den Code sauber in einer Prozedur zu verpacken.
(Stichwort: Wiederverwendbarkeit und Testbarkeit)
Als Übergabeparameter würde ich das Fensterhandle und ein TBitmap-Objekt übergeben:
procedure MakeWindowScreenshot(hWnd:THWND; bitmap:TBitmap); Dann würde ich zunächst einmal mit einem Fenster der eigenen Anwendung testen.
Danach würde ich es mit einem fremden Fenster versuchen, dass mit FindWindowByClasses(...) gefunden wurde.
Und ausserdem würde ich eine Exception werfen, wenn FindWindowByClasses(...) kein gültiges Fensterhandle liefert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: "Fensterfoto" unter Windows 7 klappt nicht so recht...

  Alt 26. Jul 2010, 08:51
Vielleicht auch mal schauen ob und welche Fehlermeldung GetClientRect liefert.
Und stretchblt hätte auch noch ein Result zum Prüfen, aber da hier ein anscheinend Bild geliefert wird, scheint das ja zu gehn.

@Luckie: Der Desktop hat zwar das Pseudo-Handle 0, aber er prüft ja auf <> 0 , also wird vermutlich das Fenster gefunden.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

AW: "Fensterfoto" unter Windows 7 klappt nicht so recht...

  Alt 26. Jul 2010, 19:42
Wird das Fenster denn gefunden?
Ja.

Also ich würde versuchen den Code sauber in einer Prozedur zu verpacken.
(Stichwort: Wiederverwendbarkeit und Testbarkeit)
Als Übergabeparameter würde ich das Fensterhandle und ein TBitmap-Objekt übergeben
Es ist ein Teil aus einer Procedure.

Vielleicht auch mal schauen ob und welche Fehlermeldung GetClientRect liefert.
Hm, mal gucken...

Und stretchblt hätte auch noch ein Result zum Prüfen, aber da hier ein anscheinend Bild geliefert wird, scheint das ja zu gehn.
So ist es.
Miniaturansicht angehängter Grafiken
image-vista.jpg  
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:31 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