Captură de ecran a ferestrei active

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







Articole similare

Trimiteți-le prietenilor: