| |
|
|
- Página 1 - |
|
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 |
|
|
| |
|
|
|
| |
|
- Página 1 - |
|
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 ▲ |
|
|
|
| |
|
- Página 2 - |
|
|
Dieter Zornow | Also en funktioniert el Sache por desgracia, no así toll. Lo se una bastante zerstörter Bildschirm hinterlassen, el I, con final oder starten uno Programmes otra vez herstellen muss. Auch el Taskleiste muss Yo por überfahren el Elemente otra vez herstellen. |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 07.10.2009 ▲ |
|
|
|
|
| Könntest Usted vom Unheil una Screenshot hacer? |
|
|
| |
|
|
|
Andreas Miethe
| Dieter Zornow, Beitrag=54400, Zeitpunkt=07.10.2009
Also en funktioniert el Sache por desgracia, no así toll. Lo se una bastante zerstörter Bildschirm hinterlassen, el I, con final oder starten uno Programmes otra vez herstellen muss. Auch el Taskleiste muss Yo por überfahren el Elemente otra vez herstellen.
Sieht así de, dass algunos Sistema-Ventana de XP con PrintWindow no klarkommen.Bajo Vista klappt lo sin Problemas. Der Ansatz debería aber correcto ser. Lo muss sólo todavía una gescheiter Filter para el Sistema-Ventana rein. |
|
|
| 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 : [...] | 07.10.2009 ▲ |
|
|
|
|
Sven Bader | Der Ansatz es muy interessant. Yo befürchte desafortunadamente, dass lo a Stabilität y Geschwindigkeit mangelt. Mir es folgendes aufgefallen:
XP: -Der Desktop se siempre schwarz dargestellt -Alle Ventana son "zerstört" y necesario neugezeichnet voluntad
Vista: -El rechte Hälfte des Desktops se schwarz dargestellt -Fensterschatten voluntad no dargestellt |
|
|
| |
|
|
|
Andreas Miethe
| Sven Bader, Beitrag=54407, Zeitpunkt=08.10.2009
Der Ansatz es muy interessant. Yo befürchte desafortunadamente, dass lo a Stabilität y Geschwindigkeit mangelt. Mir es folgendes aufgefallen:
XP: -Der Desktop se siempre schwarz dargestellt -Alle Ventana son "zerstört" y necesario neugezeichnet voluntad
Vista: -El rechte Hälfte des Desktops se schwarz dargestellt -Fensterschatten voluntad no dargestellt
¡Hola Sven, entonces Todavía algo Interessantes para Usted. Damit kannst Usted auch freie Fensterformen hacer. |
|
|
| 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 : [...] | 18.10.2009 ▲ |
|
|
|
|
Frank Abbing | Sombrero ReleaseDC() no zwei Parámetro? |
|
|
| |
|
|
|
| Klar 2 [...] . Was mich siempre otra vez daran erinnert, dass unsere HeaderFiles desafortunadamente no Parameterdefinitionen beinhalten sodass uno no automáticamente überprüfen dejar kann. |
|
|
| |
|
|
|
Andreas Miethe
| ¡Hola zusammen, el Ganze es eigentlich muy simplemente, si uno lo porque blanco. BitBlt ignoriert Layered-Windows. Also el Ventana simplemente layered hacer y ya va el Screenshot sin el Ventana.
@Franco, Usted liest sí hier con, el betrifft auch Su Shooter-Tool, Willst Usted así auch Layered-Windows einfangen entonces muss el Bitblt-Flag en ~CAPTUREBLT erweitert voluntad. KompilierenMarcaSeparación $H Windows.ph
window %maxx/4,%maxy/4-%maxx/2,%maxy/2
SetStyle %Hwnd,1, GetStyle(%hwnd,1) | $80000
External("User32.dll","SetLayeredWindowAttributes",%hwnd,0,255,2)
waitinput
Var ScreenDC& = ~CreateDC("DISPLAY",0,0,0)
Var NB& =Create("hNewPic",%maxx,%maxy,0)
Startpaint nb&
~BitBlt(%hdc,0,0,%maxx,%maxy,ScreenDC&,0,0,~srccopy)
EndPaint
~DeleteDC(ScreenDC&)
DrawSizedPic NB&,0,0-width(%hwnd),Height(%hwnd);0
waitinput
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 : [...] | 25.10.2009 ▲ | |
|
|
|
|
Frank Abbing |
@Franco, Usted liest sí hier con, el betrifft auch Su Shooter-Tool, Willst Usted así auch Layered-Windows einfangen entonces muss el Bitblt-Flag en ~CAPTUREBLT erweitert voluntad.
Gracias para el Referencia! Bin en el letzten Tagen auch en el Flag gestossen, es wirklich interessant. Schau veces, hier verwende Yo ihn erstmals: [...] |
|
|
| |
|
|
|
Andreas Miethe
| Posesiones Yo verfolgt, muy interessant.
Mit es aufgefallen en mi Screenshot-Tool y meiner neuen Desktopuhr ( es aún en Betastadium ), el wurde auch no eingefangen. |
|
|
| 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 : [...] | 25.10.2009 ▲ |
|
|
|
|
Frank Abbing | Werde en Gelegenheit ändern, si yo el Shooter-Code otra vez offen tener. |
|
|
| |
|
|