Impression d'écran pour la fenêtre active

Aller en bas

Impression d'écran pour la fenêtre active Empty Impression d'écran pour la fenêtre active

Message  Gus le Ven 27 Juil - 18:16

Je vais vous expliquer comment utiliser l'API jna (Java Native Access), que nous avons déjà eu l'occasion d'utiliser, pour faire une impression d'écran seulement sur la zone de la fenêtre active dans votre bureau Windows.

Tout d'abord il est très important de récupérer la dernière version en date de cette API, à savoir la version 3.4. Les versions précédentes ne supportent pas le code qui va suivre.

L'API jna va en fait nous servir à récupérer l'emplacement de la fenêtre active, grâce au code suivant :

Code:
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinDef.RECT;
...
HWND hWnd = User32.INSTANCE.GetForegroundWindow();
RECT rect1 = new RECT();
User32.INSTANCE.GetWindowRect(hWnd,rect1);
On obtient un objet rect1 de type com.sun.jna.platform.win32.WinDef.RECT qu'on va ensuite convertir en object de type java.awt.Rectangle grâce à la méthode suivante :
Code:
private Rectangle convert(RECT r)
{
       int x = Math.min(r.left,r.right);
       int y = Math.min(r.bottom,r.top);
       int w = Math.abs(r.left-r.right);
       int h = Math.abs(r.bottom-r.top);
       return new Rectangle(x,y,w,h);
}
...
Rectangle rect2 = convert(rect1);
Pour finir, on fait appel à la classe java.awt.Robot pour récupérer l'image correspondante à l'objet java.awt.Rectangle, et le tour est joué !
Code:
Robot robot = new Robot();
Image image = robot.createScreenCapture(rect2);
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

Voir le profil de l'utilisateur http://www.gus05.com

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum