| |
|
|
- page 1 - |
|
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 |
|
|
| |
|
|
|
| |
|
- page 1 - |
|
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 ▲ |
|
|
|
| |
|
- page 2 - |
|
|
Dieter Zornow | alors chez funktioniert qui l'affaire malheureusement pas so toll. Es wird un assez zerstörter Bildschirm hinterlassen, den je avec finissons ou bien starten eines Programmes wieder herstellen muss. aussi qui Taskleiste muss je par überfahren qui Elemente wieder 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 Du vom Unheil une Screenshot faire? |
|
|
| |
|
|
|
Andreas Miethe
| Dieter Zornow, Beitrag=54400, Zeitpunkt=07.10.2009
alors chez funktioniert qui l'affaire malheureusement pas so toll. Es wird un assez zerstörter Bildschirm hinterlassen, den je avec finissons ou bien starten eines Programmes wieder herstellen muss. aussi qui Taskleiste muss je par überfahren qui Elemente wieder herstellen.
Sieht so aus, dass quelques System-la fenêtre de XP avec PrintWindow pas klarkommen.sous Vue klappt es sans Probleme. qui Ansatz sollte mais richtig son. Es muss arrêt encore un gescheiter filtre pour qui System-la fenêtre 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 | qui Ansatz ist très intéressant. je befürchte malheureusement, dass es à Stabilität et Geschwindigkeit mangelt. Mir ist folgendes aufgefallen:
XP: -qui Desktop wird toujours noir dargestellt -Alle la fenêtre sommes "zerstört" et doit neugezeichnet volonté
Vue: -qui rechte Moitié des Desktops wird noir dargestellt -Fensterschatten volonté pas dargestellt |
|
|
| |
|
|
|
Andreas Miethe
| Sven Bader, Beitrag=54407, Zeitpunkt=08.10.2009
qui Ansatz ist très intéressant. je befürchte malheureusement, dass es à Stabilität et Geschwindigkeit mangelt. Mir ist folgendes aufgefallen:
XP: -qui Desktop wird toujours noir dargestellt -Alle la fenêtre sommes "zerstört" et doit neugezeichnet volonté
Vue: -qui rechte Moitié des Desktops wird noir dargestellt -Fensterschatten volonté pas dargestellt
allô Sven, ensuite habe je et avec ca Interessantes pour toi. avec cela peux Du aussi freie Fensterformen faire. |
|
|
| 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 | Hat ReleaseDC() pas deux paramètre? |
|
|
| |
|
|
|
| bien sûr 2 [...] . quoi mich toujours wieder daran erinnert, dass unsere HeaderFiles malheureusement aucun Parameterdefinitionen beinhalten sodass on pas automatisch überprüfen laisser peux. |
|
|
| |
|
|
|
Andreas Miethe
| allô zusammen, cela Ganze ist eigentlich très simple, si on es car weiss. BitBlt ignoriert Layered-Windows. alors cela la fenêtre simple layered faire et déjà allez qui Screenshot sans cela la fenêtre.
@Frank, Du liest oui ici avec, cela betrifft aussi Dein Shooter-Tool, veux Du avec cela aussi Layered-Windows capturer ensuite muss qui Bitblt-Flag um ~CAPTUREBLT erweitert volonté. KompilierenMarqueSéparation $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 |
@Frank, Du liest oui ici avec, cela betrifft aussi Dein Shooter-Tool, veux Du avec cela aussi Layered-Windows capturer ensuite muss qui Bitblt-Flag um ~CAPTUREBLT erweitert volonté.
merci pour den Hinweis! suis dans den letzten Tagen aussi sur den Flag gestossen, ist wirklich intéressant. exposition la fois, ici verwende je ihn erstmals: [...] |
|
|
| |
|
|
|
Andreas Miethe
| Habe je verfolgt, très intéressant.
avec ist es aufgefallen chez meinem Screenshot-Tool et meiner neuen Desktopuhr ( ist encore im Betastadium ), qui wurde aussi pas 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 chez Gelegenheit changement, si Je l' Shooter-Code wieder offen hab. |
|
|
| |
|
|