Español
Foro

Hecho: Screenshot OHNE el Programmfenster

 

Sven
Bader
Sombrero irgendjemand una solución en seinem Fundus, una Screenshot sin el aktuelle Programmfenster a hacer o. insbesondere una Screenshot de el qué gerade bajo mi Programmfenster es a hacer?

Was Yo así vorhabe?
Yo arbeite viel con freien Fensterformen, en denen el Kanten desafortunadamente siempre angefressen aussehen wegen fehlendem Antialiasing. Nun Yo una solución programmiert, welche con uno Alphamaske el Pixel en el Randbereich entsprechend con el Hintergrund mischt y así weiche Kanten producido. Problemas hay entonces, si se el Hintergrund ändert oder Yo el Ventana sólo una kleines Stück verschiebe - deshalb brauche Soy un Screenshot de el qué bajo el Programmfenster es.

Wenn lo entonces veces funktioniert, lugar Yo, el Code gerne disponible
 
05.10.2009  
 



El Pixel bajo una Ventana son imho no wirklich irgendwo gespeichert.
 
05.10.2009  
 




Sven
Bader
necesario ellos, ansonsten gäbe lo de windows xp no teiltransparenten fenster!

90 kB
Hochgeladen:05.10.2009
Ladeanzahl100
Descargar
 
05.10.2009  
 




Dieter
Zornow
Tal vez kannst du bevor dein Ventana sichtbar se, also beim starten una Screenshot hacer. Aber el es denke Yo no Solución. Wenn Yo para Ejemplo 3 Programas offen habe y el schließe verändert se alles. Usted müsstest permanent jede Sekunde una hacer.
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
05.10.2009  
 




Sven
Bader
Yo mache ya permanent screenshots y spare esta siempre el aktuelle position meines programmes de - el funktioniert correcto bien sólo eben entonces no si se eigenständig algo bajo el programmfenster ändert oder Yo sólo una winziges stück verschiebe.

habe todavía una indiz dafür el lo ir muss ;) lo son bildschirmlupen, welche direkt bajo el mauszeiger adecuado voluntad.
 
05.10.2009  
 




Frank
Abbing
Sven Bader, Beitrag=54385, Zeitpunkt=05.10.2009
necesario ellos, ansonsten gäbe lo de windows xp no teiltransparenten fenster!


Hm, Yo glaube, cada Programa muss ser Ventana selber restaurieren. Das Sistema verfügt encima no Kopie. Lo schaltet se sólo dazwischen, si la Optik transparent tener lugar se y regelt entonces entsprechend el grafische Edición.
 
06.10.2009  
 



Sven Bader, Beitrag=54385, Zeitpunkt=05.10.2009
necesario ellos, ansonsten gäbe lo de windows xp no teiltransparenten fenster!


Nein, dass es kein Grund, Windows überzeichnet sólo el vorderen Regionen no.
 
06.10.2009  
 




Sven
Bader
Hier klappts auch sin Transparenz:
[...] 
 
06.10.2009  
 



Nein, hier se sólo una Bild vom Desktop geschossen y dieses se entonces gezoomt - como sería uno Ventana de Estilo 16 | 32 | 64 nutzen. Hübsche Lupe. ^ ^
 
06.10.2009  
 




Andreas
Miethe


IF, Beitrag=54384, Zeitpunkt=05.10.2009
El Pixel bajo una Ventana son imho no wirklich irgendwo gespeichert.


Usted puede aber trotzdem drankommen a esta Pixel.

Das Beipiel blittet el Pixel vom Desktop en una DC y de como gestreckt en el Profanfenster.
Um el con allen sichtbaren, salvo el eigenen Ventana a hacer, necesario Así que el Ventana gezählt voluntad, el Position y Z-Order ermittelt voluntad. Danach kann entonces para cada Ventana como en el Ejemplo una DC gemacht y ser alles zusammengeblittet voluntad. Und ya hast Usted una nettes Bild vom Bildschirm sin Su Ventana.
KompilierenMarcaSeparación
 $H Windows.ph
 $H Messages.ph
cls

Proc GetDesktop

    Declare h&
    h& = ~FindWindow("Progman",0)
    h& = ~FindWindowEx(h&, 0, "SHELLDLL_DefView",0)
    h& = ~FindWindowEx(h&, 0, "Internet Explorer_Server",0)

    if h& > 0

        Return h&

    else

        h& = ~FindWindow("Progman",0)
        h& = ~FindWindowEx(h&, 0, "SHELLDLL_DefView",0)
        h& = ~FindWindowEx(h&, 0, "SysListView32",0)
        Return h&

    endif

EndProc

erstmal ein DC für den Bildschirm
Var C_DC& = ~CreateCompatibleDC(%hdc)
Var C_Bitmap& = ~CreateCompatibleBitmap(%hdc,%maxx,%maxy)
~SelectObject(C_DC&,C_Bitmap&)
~ReleaseDC(C_DC&)
~SetStretchBltMode(C_DC&,~COLORONCOLOR)
Desktop in DC blitten, es spielt kein Rolle, ob sich da ncoh Fenster befinden
Var Desktop& = GetDesktop()
External("user32.dll","PrintWindow",Desktop&,C_DC&,0)
und jetzt in Profanfenster
~StretchBlt(%hdc2,0,0,width(%hwnd),height(%hwnd),C_DC&,0,0,%maxx,%maxy,~srccopy)
Repaint
~DeleteObject(C_Bitmap&)
~DeleteDC(C_DC&)
Waitinput
End
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
06.10.2009  
 



Hehe nett, genau, Yo hatte me auch ya überlegt, el Ventana simplemente se dibujar que se o. el Zeichnung abzukopieren.

Yo kannte el user32s PrintWindow Función garnicht, simplemente super Andreas!
 
06.10.2009  
 




Andreas
Miethe


IF, Beitrag=54398, Zeitpunkt=06.10.2009
Hehe nett, genau, Yo hatte me auch ya überlegt, el Ventana simplemente se dibujar que se o. el Zeichnung abzukopieren.

Yo kannte el user32s PrintWindow Función garnicht, simplemente super Andreas!


Gracias !

Und hier todavía una Ejemplo para todos sichtbaren Ventana sin el propio. Sollte entonces wohl el ser qué como gesucht wurde ?
Vieleicht puede Ganze todavía una wenig optimiert voluntad.
KompilierenMarcaSeparación
 $H Windows.ph
 $H Messages.ph
Struct RECT = left&,top&,right&,bottom&
cls

Proc GetDesktop

    Declare h&
    h& = ~FindWindow("Progman",0)
    h& = ~FindWindowEx(h&, 0, "SHELLDLL_DefView",0)
    h& = ~FindWindowEx(h&, 0, "Internet Explorer_Server",0)

    if h& > 0

        Return h&

    else

        h& = ~FindWindow("Progman",0)
        h& = ~FindWindowEx(h&, 0, "SHELLDLL_DefView",0)
        h& = ~FindWindowEx(h&, 0, "SysListView32",0)
        Return h&

    endif

EndProc

erstmal ein DC für den Bildschirm
Var C_DC& = ~CreateCompatibleDC(%hdc)
Var C_Bitmap& = ~CreateCompatibleBitmap(%hdc,%maxx,%maxy)
~SelectObject(C_DC&,C_Bitmap&)
~ReleaseDC(C_DC&)
~SetStretchBltMode(C_DC&,~COLORONCOLOR)
FensterArray anlegen
DECLARE Windows&[],Anzahl&
sichtbare Fenster durchnumerieren
~EnumWindows(ProcAddr("NumWins",2),0)
zusammenblitten
MakePicture()
und gestreckt ins Fenster
~StretchBlt(%hdc2,0,0,width(%hwnd),height(%hwnd),C_DC&,0,0,%maxx,%maxy,~srccopy)
Repaint
~DeleteObject(C_Bitmap&)
~DeleteDC(C_DC&)
Waitinput
End

Proc Numwins

    Fensterhandle in Array
    Parameters wnd&,lParam&
    das eigene Fenster ausnehmen

    If ~IsWindowVisible(Wnd&) And (Wnd& <> %hwnd)

        Windows&[Anzahl&] = wnd&
        Inc Anzahl&

    Endif

    Return 1

EndProc

Proc MakePicture

    zusammenblitten
    Var R# = New(Rect)
    Declare W&,H&,DC&,Bitmap&
    in umgekehrter Reihenfolge

    Whileloop Anzahl&-1,0,-1

        ~GetWindowRect(Windows&[&Loop],R#)
        W& = Int(R#.right&-R#.left&)
        H& = Int(R#.bottom&-R#.top&)
        DC& = ~CreateCompatibleDC(%hdc)
        Bitmap& = ~CreateCompatibleBitmap(%hdc,W&,H&)
        ~SelectObject(DC&,Bitmap&)
        ~ReleaseDC(DC&)
        External("user32.dll","PrintWindow",Windows&[&Loop],DC&,0)
        ~Bitblt(C_DC&,R#.left&,R#.top&,R#.Right,R#.bottom&,DC&,0,0,~srccopy)
        ~DeleteObject(Bitmap&)
        ~DeleteDC(DC&)

    Endwhile

    Di
/a> R# ENDPROC
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
06.10.2009  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

15.246 Views

Untitledvor 0 min.
Sven Bader09.03.2021
kustg11.12.2019
AndreasS17.12.2018
Wolfgang29.11.2016
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie