Captură de ecran a ferestrei active
Fac această procedură
Dar, din anumite motive, dacă fereastra este maximizată pe ecranul de știri, capturați o parte din bara de activități. Dacă fereastra este în modul normal, atunci totul este bine.
Checked only on win 7 pe XP nu există nici o posibilitate în timp ce.
Spune-mi, nimeni nu știe ce-i cu bug-ul?
Funcția GetWindowDC preia contextul dispozitivului (DC) pentru întreaga fereastră, inclusiv bara de titlu, meniuri și bare de defilare
> ecranul captează o parte din bara de activități
Nu doar bara de sarcini. Coordonatele stânga și de sus sunt negative.
Toate pentru că fereastra are o fereastră care este în afara zonei client a desktopului. Prin urmare, pentru aceasta, trebuie să scăpați dimensiunea cadrului (GetSystemMetrics + SM_CX (Y) SIZEFRAME + SM_CX (Y) FIXEDFRAME).
Deși, poate există un alt mod de a obține această dimensiune.
Utilizați GetDC, nu GetWindowDC, și veți fi norocoși.
Și la ce aici este necesar GetDesktopWindow?
> CRLF (07/06/12 12:15) [5]
> Utilizați GetDC, nu GetWindowDC, și veți fi norocoși.
Ești sigur?
robt # xA0; (7 iunie 12 13:20) [8]
Bine, tu ești învățat.
Știți cum să faceți acest lucru în mod diferit?
Am încercat să fac asta, dar se obține forma fără antet
procedura TssThread.ScreenShortWindow (var Bmp: TBitmap);
var h: Thandle;
# xA0; # xA0; r: TRect;
începe
În această și diferența de la GetWindowDC.
> Distribuiți codul corect.
> Știți cum să faceți acest lucru în mod diferit?
Alt + Ctrl + PrintScreen;)))
Adevărul nu este deloc asemănător # xA0; (t.Left<0) then.
poti face cumva fara ea)?
robt # xA0; (07.06.12 14:29) [15]
Apoi deja: Alt + PrintScreen