[R] Capture avec double écran

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 412
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

[R] Capture avec double écran

#1

Message par scorp84 »

Bonjour,

Je me permets de vous solliciter de nouveau après avoir cherché en vain la solution sur le forum ou chez notre ami Google.

Nous utilisons au travail un progiciel qui génère pas mal de bugs et je cherche à développer un script qui me permette au clic sur un raccourci dans la barre de lancement rapide de pouvoir m'envoyer par mail la capture écran.

Jusque là, pas de problème avec la fonction "_ScreenCapture_Capture" et "_INetSmtpMailCom".

Par contre là où je rencontre un problème c'est que la plupart des postes sont en double écran et la fonction "_ScreenCapture_Capture" ne permet pas de définir quel est l'écran à capturer.

J'ai essayer d'additionner la taille écran 2*1024 et 2*768 mais cela ne fonctionne pas.

J'ai essayer de chercher dans l'aide d'Autoit mais je n'ai pas trouvé comment définir s'il y a un double écran et si oui, lui indiquer le moniteur à capturer.

En espérant avoir été assez clair :-)

Merci d'avance pour votre aide.

Amicalement.

BM
Modifié en dernier par scorp84 le ven. 14 août 2009 23:45, modifié 1 fois.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Capture avec double écran

#2

Message par Iste »

Ya surement une solution pour le dualview, mais juste au cas ou, ou en attendant, tu peux aussi simuler l'appuis de la touche PrtSc, lancer paint, coller et enregistrer ^^'
Signez ici
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 412
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Capture avec double écran

#3

Message par scorp84 »

Bonjour,

J'ai essayé d'utiliser la fonction Send("{PRINTSCREEN}") pour faire la capture écran mais là où j'ai pêché, c'est pour enregistrer le contenu du presse papier en tant qu'image.

J'ai utilisé ClipGet() mais ça ne doit pas être la bonne fonction car je n'obtiens rien dans le presse papier alors que quand je copie du texte, cela fonctionne.

Et le deuxième souci est qu'avec PRINTSCREEN, j'obtiens une image très grande alors que je préférerai en obtenir une de chaque écran.

Mais bon, si quelqu'un connait un moyen avec PRINTSCREEN, je suis preneur :-)

Merci d'avance.

Amicalement.

BM
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Capture avec double écran

#4

Message par Tlem »

J'ai trouvé deux liens intéressants :
- http://www.autoitscript.com/forum/index ... t&p=482883
- http://www.autoitscript.com/forum/index ... t&p=146011

Le dernier lien fait appel à une dll spécifique (a voir). Le lien de la dll est mort, mais on peut la trouver ici : http://www.autoitscript.com/forum/index ... t&p=340910

Bon courage. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 412
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Capture avec double écran

#5

Message par scorp84 »

Bonsoir,

Une fois de plus un grand merci pour votre aide :-)

Je regarde ça demain et vous tiens au courant de ce que j'aurai réussi à faire.

Amicalement.

BM
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 412
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Capture avec double écran

#6

Message par scorp84 »

Bonjour,

J'ai essayé les 2 pistes.

En premier, celle avec la DLL "captdll.dll" :

Code : Tout sélectionner

DllCall("captdll.dll", "int", "CaptureRegion", "str", "dump.jpg", "int", 0, "int", 0, "int", (@DesktopWidth*2), "int", @DesktopHeight, "int", 100)
 
Elle fonctionne bien mais me fait la même chose que Send("{PRINTSCREEN}"). C'est à dire qu'elle me fait une seule image de 2048 x 768 avec les 2 écrans.

Ensuite j'ai essayé "Ctrl+printscreen" et "Alt+printscreen" du second exemple. Le premier capture les 2 écrans et le second capture la fenêtre active (j'aurai encore appris quelque chose :-)

Il me faudrait donc arriver à soit découper l'image en 2048 en 2, soit arriver à enregistrer en tant qu'image le presse papier après avoir envoyé l'ordre "Alt+printscreen".

Je vais chercher sur le forum et sur Internet voir si je trouve comment faire.

Si je trouve, je mettrai ce que j'ai trouvé.

Merci encore pour votre aide.

Amicalement.

BM
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Capture avec double écran

#7

Message par orax »

Je suppose que vous n'aviez pas laissé "(@DesktopWidth*2)" dans votre code ; parce que j'ai l'impression que ça prendra les 2 écrans dans ce cas.

Autre chose, j'avais vu ça : http://msdn.microsoft.com/en-us/library ... 85%29.aspx, et d'après ce que je vois il faudrait modifier un peu la fonction _ScreenCapture_Capture pour capturer l'écran que l'on souhaite. Mais évidemment, vu que je ne peux pas tester, ce n'est peut-être pas une bonne piste...
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 412
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Capture avec double écran

#8

Message par scorp84 »

Bonsoir,

Si au départ j'avais laissé @DesktopWidth*2 mais en fait sur l'image il y avait l'écran principal et le reste était noir, du coup, je l'avais enlevé.

Merci pour cette autre piste. Je vais étudier ça demain et vous tiendrai au courant.

Savez vous s'il est possible de transformer l'image qui est dans le presse-papier après le Send("{PRINTSCREEN}") en un fichier ?

J'ai cherché mais je n'ai pas réussi à trouver la solution.

Merci encore à tous pour votre aide très précieuse :-)

Amicalement.

BM
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Capture avec double écran

#9

Message par Iste »

Apres avoir galéré pour y arriver seul, j'ai regardé sur le fofo anglais, et tadaaaa
http://www.autoitscript.com/forum/index ... ntry671709

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#Include <GDIPlus.au3>
#include <ClipBoard.au3>
#include <ScreenCapture.au3>

Send("{PRINTSCREEN}")


$hGUI=GUICreate("WW")
_ClipBoard_Open ($hGUI)
$fred=ClipGet()
    if @error = 2 Then
        $hBitmap=_ClipBoard_GetData ($CF_BITMAP )      
        _ScreenCapture_SaveImage(@ScriptDir & '\Testt.bmp', $hBitmap)
    EndIf
Exit
testé et fonctionel, avec un écran du moins ^^
Signez ici
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 412
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Capture avec double écran

#10

Message par scorp84 »

Bonjour,

Vous êtes trop forts :-)

Cette dernière piste marche nickel pour un écran. Je me suis permis de modifier l'extension de BMP à GIF car avec le double écran, le poids de l'image était de 4.6 Mo alors qu'en GIF elle est de 100 Ko (ce qui est mieux pour envoyer par mail :-)

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#Include <GDIPlus.au3>
#include <ClipBoard.au3>
#include <ScreenCapture.au3>

Send("{PRINTSCREEN}")


$hGUI=GUICreate("WW")
_ClipBoard_Open ($hGUI)
$fred=ClipGet()
    if @error = 2 Then
        $hBitmap=_ClipBoard_GetData ($CF_BITMAP )
        _ScreenCapture_SaveImage(@ScriptDir & '\Testt[b].gif[/b]', $hBitmap)
    EndIf
Exit
 
Il me reste à explorer la piste de Orax pour définir l'écran et le tour est joué.

Merci encore à tous pour votre aide.

Amicalement.

BM
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Capture avec double écran

#11

Message par Tlem »

Pour le format, je vous conseil plutôt PNG.
C'est le double du GIF, mail la définition est supérieure. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
scorp84
Niveau 7
Niveau 7
Messages : 412
Enregistré le : mar. 04 nov. 2008 21:51
Localisation : Avignon, France
Status : Hors ligne

Re: [..] Capture avec double écran

#12

Message par scorp84 »

Bonsoir,

Merci pour ce nouveau conseil :-)

Voici de manière bien modeste mon script qui me permet de faire une capture écran à l'exécution du script et de :
- la stocker sur le poste client dans le répertoire c:\BUGS
- l'envoyer par mail en PJ avec un mini rapport (date, heure, nom machine, nom utilisateur, ...)

La fonction de capture écran découle des conseils de ce fil et la fonction d'envoi du mail a été trouvé dans ce forum (http://www.autoitscript.fr/forum/viewto ... =20&t=822)).

Elle est bien sûr perfectible mais elle fonctionne et peut peut être servir à d'autres.
► Afficher le texte
Merci beaucoup à tous ceux qui ont bien voulu prendre du temps pour m'aider pour ce problème.

Amicalement.

Bertrand
Répondre