Français
Forum

Erledigt: Screenshot OHNE cela Programmfenster

 

Sven
Bader
Hat irgendjemand une Solution dans seinem Fundus, une Screenshot sans cela aktuelle Programmfenster trop faire bzw. insbesondere une Screenshot de dem quoi justement sous meinem Programmfenster ist trop faire?

quoi je avec cela vorhabe?
je travaille viel avec freien Fensterformen, chez denen qui Kanten malheureusement toujours angefressen air à cause de fehlendem Antialiasing. eh bien habe je une Solution programmiert, quelle avec einer Alphamaske qui Pixel im Randbereich entsprechend avec dem Hintergrund mischt et so weiche Kanten erzeugt. Probleme gibt es ensuite, si sich qui Hintergrund ändert ou bien je cela la fenêtre seulement un kleines Stück verschiebe - c'est pourquoi brauche je une Screenshot de dem quoi sous dem Programmfenster ist.

si es ensuite la fois funktioniert, lieu Je l' Code volontiers zur Disposition
 
05.10.2009  
 



qui Pixel sous einem la fenêtre sommes imho pas wirklich irgendwo gespeichert.
 
05.10.2009  
 




Sven
Bader
doit vous, ansonsten gäbe es ab windows xp aucun teiltransparenten la fenêtre!

90 kB
Hochgeladen:05.10.2009
Downloadcounter100
Download
 
05.10.2009  
 




Dieter
Zornow
peut-être peux du bevor dein la fenêtre sichtbar wird, alors beim starten une Screenshot faire. mais c'est denke je aucun Solution. si je zum Beispiel 3 Programme offen habe et qui schließe modifié sich alles. Du müsstest permanent chacun seconde une faire.
 
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
je fais déjà permanent screenshots et spare dabei toujours qui aktuelle position meines programmes aus - cela funktioniert richtig bien seulement plan ensuite pas si sich eigenständig quelque chose sous dem programmfenster ändert ou bien je es seulement un winziges stück verschiebe.

habe encore un indiz pour cela es aller muss ;) il y a bildschirmlupen, quelle direct sous dem mauszeiger angezeigt volonté.
 
05.10.2009  
 




Frank
Abbing
Sven Bader, Beitrag=54385, Zeitpunkt=05.10.2009
doit vous, ansonsten gäbe es ab windows xp aucun teiltransparenten la fenêtre!


Hm, je crois, chaque Programme muss son la fenêtre selber restaurieren. cela System verfügt sur aucun Kopie. Es schaltet sich seulement entre, si le optique transparent avoir lieu soll et regelt ensuite entsprechend qui grafische Ausgabe.
 
06.10.2009  
 



Sven Bader, Beitrag=54385, Zeitpunkt=05.10.2009
doit vous, ansonsten gäbe es ab windows xp aucun teiltransparenten la fenêtre!


non, dass ist ne...aucune Grund, Windows überzeichnet seulement qui vorderen Regionen pas.
 
06.10.2009  
 




Sven
Bader
ici klappts aussi sans Transparenz:
[...] 
 
06.10.2009  
 



non, ici wird seulement un Bild vom Desktop geschossen et cet wird ensuite gezoomt - comme serait on Fenêtre Style 16 | 32 | 64 nutzen. Hübsche Lupe. ^ ^
 
06.10.2009  
 




Andreas
Miethe


iF, Beitrag=54384, Zeitpunkt=05.10.2009
qui Pixel sous einem la fenêtre sommes imho pas wirklich irgendwo gespeichert.


tu peux mais quand même drankommen à cet Pixel.

cela Beipiel blittet qui Pixel vom Desktop dans un DC et de là gestreckt ins Profanfenster.
Um cela avec allen sichtbaren, ausser dem eigenen la fenêtre trop faire, doit alors qui la fenêtre gezählt volonté, qui Position et Z-l'ordre ermittelt volonté. après peux ensuite pour chaque la fenêtre comment im Beispiel un DC gemacht volonté et alles zusammengeblittet volonté. et déjà la hâte Du un nettes Bild vom Bildschirm sans Dein la fenêtre.
KompilierenMarqueSéparation
 $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
Fin
 
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 gentil, oui c'est ca, je hatte mir aussi déjà überlegt, qui la fenêtre simple sich zeichnen trop laisser bzw. qui dessin abzukopieren.

je kannte qui user32s PrintWindow Funktion garnicht, simple super Andreas!
 
06.10.2009  
 




Andreas
Miethe


iF, Beitrag=54398, Zeitpunkt=06.10.2009
Hehe gentil, oui c'est ca, je hatte mir aussi déjà überlegt, qui la fenêtre simple sich zeichnen trop laisser bzw. qui dessin abzukopieren.

je kannte qui user32s PrintWindow Funktion garnicht, simple super Andreas!


merci !

et ici encore un Beispiel pour alle sichtbaren la fenêtre sans cela eigene. Sollte ensuite wohl cela son quoi là gesucht wurde ?
Vieleicht peux cela Ganze encore un peu optimiert volonté.
KompilierenMarqueSéparation
 $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  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

15.279 Views

Untitledvor 0 min.
Sven Bader09.03.2021
kustg11.12.2019
AndreasS17.12.2018
Wolfgang29.11.2016
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie