| |
|
|
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 |
|
|
| |
|
|
|
| El Pixel bajo una Ventana son imho no wirklich irgendwo gespeichert. |
|
|
| |
|
|
|
Sven Bader | necesario ellos, ansonsten gäbe lo de windows xp no teiltransparenten fenster! |
|
|
| |
|
|
|
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. |
|
|
| |
|
|
|
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. |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Sven Bader | Hier klappts auch sin Transparenz: [...] |
|
|
| |
|
|
|
| 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. ^ ^ |
|
|
| |
|
|
|
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! |
|
|
| |
|
|
|
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 ▲ |
|
|
|