FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» quel est ce comportement de Panoramic_editor
par Oscaribout Aujourd'hui à 3:02

» bug BORDER_HIDE : bloque la commande full_space
par silverman Aujourd'hui à 1:19

» Découpe dans une image
par JL35 Hier à 22:00

» FNC IsDateValide(d$) pour vérifier la validité d'une date
par papydall Hier à 18:57

» Pour faire plaisir à jjn4.
par Pedro Alvarez Hier à 8:13

» Pour faire plaisir à Marc37.
par Marc Jeu 22 Fév 2018 - 21:46

» Couleur d'une variable qui n'est pas un mot-clé
par bignono Jeu 22 Fév 2018 - 14:03

» Un catalogue de photos de fleurs, avec KBDD, affichage HTML
par Klaus Mer 21 Fév 2018 - 22:44

» KGF_dll - nouvelles versions
par Klaus Mer 21 Fév 2018 - 22:30

» Mah-Jong anglais
par jjn4 Mer 21 Fév 2018 - 14:22

» Partie fractionnaire d'un flottant
par silverman Mer 21 Fév 2018 - 14:19

» bug CREATE_HIDE : corruption de form
par silverman Mer 21 Fév 2018 - 13:32

» Racine carrée d’un nombre par l’algorithme de Héron
par Ouf_ca_passe Mer 21 Fév 2018 - 9:52

» Méthode manuelle d'extraction de la racine carrée
par pascal10000 Mer 21 Fév 2018 - 7:47

» [annulé]ON_MOVE n,l ne fonctionne que sur le form 0
par silverman Mar 20 Fév 2018 - 16:52

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Février 2018
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
262728    
CalendrierCalendrier

Partagez | 
 

 Capture d'une zone de l'écran total

Aller en bas 
AuteurMessage
JL35



Nombre de messages : 6152
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Capture d'une zone de l'écran total   Jeu 16 Nov 2017 - 21:07

Rassurez-vous, rien à voir avec les UV !
C'est la capture rectangulaire d'une zone quelconque de l'écran du moniteur, délimitée à la souris (clic en haut à gauche de la zone, puis clic en bas à droite).
L'image résultante est récupérée soit dans un fichier image bmp, soir dans le presse-papier.
Pour détecter le clic souris sur l'écran, j'ai utilisé une DLL de notre ami Nardo26: Pick.dll, fonction 'GetMouseXY', qui donne les coordonnées en valeur absolue de la souris sur l'écran et l'état de ses boutons.
Code:
' Capture d'une zone de l'écran total -> fichier ou clipboard
' NB: DLL de Nardo26: Pick.dll, à récupérer sur son site:
'    http://nardo26.lescigales.org/dll-diverses-fonctions-28.html
DIM x%,y%,w%,h%,et%,el%,a$,b$,fr$
fr$ = "C:\TEMP\Capture.bmp": ' ou fr$ = "" -> clipboard)

BORDER_SMALL 0: FONT_BOLD 0: WIDTH 0,260: HEIGHT 0,65: FONT_NAME 0,"Arial"
  CAPTION 0," CAPTURE  D'UNE  ZONE  DE  L'ÉCRAN": COLOR 0,200,255,255: FONT_SIZE 0,11
ALPHA 2: TOP 2,5: CAPTION 2,"1) Click le coin supérieur gauche"
b$ = "0"
WHILE b$ = "0"
    Pickmouse(): a$ = CLIPBOARD_STRING_PASTE$: b$ = MID$(a$,9,1)
    PAUSE 50
END_WHILE
x% = VAL(LEFT$(a$,4)): y% = VAL(MID$(a$,5,4))
et% = 3: el% = 20: ' épaisseur trait, 1/2 longueur trait
FORM 7: BORDER_HIDE 7: TOP 7,y%-el%: LEFT 7,x%-et%/2: WIDTH 7,et%: HEIGHT 7,2*el%
    COLOR 7,255,0,255
FORM 8: BORDER_HIDE 8: TOP 8,y%-et%: LEFT 8,x%-el%: WIDTH 8,2*el%: HEIGHT 8,et%
    COLOR 8,255,0,255
CAPTION 2,"2) Click le coin inférieur droit"
PAUSE 500
b$ = "0"
WHILE b$ = "0"
    Pickmouse(): a$ = CLIPBOARD_STRING_PASTE$: b$ = MID$(a$,9,1)
    PAUSE 50
END_WHILE
w% = VAL(LEFT$(a$,4))-x%: h% = VAL(MID$(a$,5,4))-y%
DELETE 7: DELETE 8
Capture_T(x%,y%,w%,h%,fr$)
CAPTION 2,"Image :  "+fr$

' Rect_Form(x%,y%,w%,h%,3,65536*255+256*255): ' pour voir
END
' ==============================================================================
SUB Pickmouse()
  ' Souris dans tout l'écran: position, boutons
  ' -> chaîne xxxxyyyyb -> clipboard
  DIM_LOCAL a$,bt%
  DLL_ON "C:\Panoramic\NARDO\pick.dll"
    a$ = STRING$(8," ")
    bt% = DLL_CALL1("GetMouseXY",ADR(a$))
  DLL_OFF
  CLIPBOARD_STRING_COPY a$+STR$(bt%): ' coordonnées et bouton
END_SUB
' ==============================================================================
SUB Capture_T(x,y,w,h,f$)
  ' Capture d'une zone de l'écran total, en x,y absolus, dimensions w x h,
  ' dans f$ (BMP), ou dans le presse-papier (clipboard) si f$ = ""
  ' ATTENTION: x et y absolus par rapport à la totalité de l'écran !
  DIM_LOCAL c2d%
  c2d% = NUMBER_2D_TARGET
  FORM 999: TOP 999,0: LEFT 999,0: WIDTH 999,SCREEN_X: HEIGHT 999,SCREEN_Y
    BORDER_HIDE 999: HIDE 999: 2D_TARGET_IS 999: WAIT 100: ' Tout l'écran
  IF w < 0 THEN x = x+w: w = ABS(w)
  IF h < 0 THEN y = y+h: h = ABS(h)
  IMAGE 1000: 2D_IMAGE_COPY 1000,x,y,x+w,y+h
  IF f$ = ""
      CLIPBOARD_COPY 1000
  ELSE
      FILE_SAVE 1000,f$
  END_IF
  2D_TARGET_IS c2d%: DELETE 999: DELETE 1000
END_SUB
' ==============================================================================
SUB Rect_Form(x%,y%,w%,h%,e%,rgb%)
  ' Tracé d'un rectangle sur tout l'écran
  DIM_LOCAL f%,r%,g%,b%
  r% = INT(rgb%/65536): g% = BIN_AND(rgb%,65280)/256: b% = BIN_AND(rgb%,255)
  f% = 890: FORM f%: COLOR f%,r%,g%,b%
  BORDER_HIDE f%: TOP f%,y%-e%/2: LEFT f%,x%-e%/2: WIDTH f%,w%+e%: HEIGHT f%,e%
  f%=f%+1: FORM f%: COLOR f%,r%,g%,b%
  BORDER_HIDE f%: TOP f%,y%+h%-e%/2: LEFT f%,x%-e%/2: WIDTH f%,w%+e%: HEIGHT f%,e%
  f%=f%+1: FORM f%: COLOR f%,r%,g%,b%
  BORDER_HIDE f%: TOP f%,y%-e%/2: LEFT f%,x%-e%/2: WIDTH f%,e%: HEIGHT f%,h%+e%
  f%=f%+1: FORM f%: COLOR f%,r%,g%,b%
  BORDER_HIDE f%: TOP f%,y%-e%/2: LEFT f%,x%+w%-e%/2: WIDTH f%,e%: HEIGHT f%,h%+e%
END_SUB
' ==============================================================================

En prime, une petite sub (Rect_Form) qui permet de tracer un rectangle n'importe où sur l'écran.

@Klaus
Je n'ai pas trouvé dans les fonctions de KGF.dll le moyen de détecter un clic sur l'écran, ou au moins de lire l'état des boutons, on peut juste le provoquer (AbsoluteMouseLeftClick).


Dernière édition par JL35 le Ven 17 Nov 2017 - 16:16, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10576
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Capture d'une zone de l'écran total   Jeu 16 Nov 2017 - 21:58

Citation :
Je n'ai pas trouvé dans les fonctions de KGF.dll le moyen de détecter un clic sur l'écran, ou au moins de lire l'état des boutons, on peut juste le provoquer (AbsoluteMouseLeftClick).
Oui, je n'ai pas fait de hook global pour intercepter un clic en-dehors des fenêtres de m'application.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 6152
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Capture d'une zone de l'écran total   Jeu 16 Nov 2017 - 22:04

Merci pour ta confirmation Klaus, je craignais d'avoir raté quelque chose. Mais ce n'est pas grave, j'ai un palliatif.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10576
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Capture d'une zone de l'écran total   Jeu 16 Nov 2017 - 22:26

Tu sais que si tu dois utiliser cette possibilité en même temps que KGF.dll, tu peux appeler ces fonctions d'une autre DLL via KGF.dll:
http://klauspanoramic.esy.es/GestiondesDLLsdynamiquesDynamica.html#Dynamic_fr
Tu peux en fait appeler des fonctions de n'importe quelle DLL, en même temps que KGF.dll...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 6152
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Capture d'une zone de l'écran total   Jeu 16 Nov 2017 - 22:42

Donc plusieurs dll sous un seul DLL_ON, je ne savais pas, c'est bon à savoir, merci Klaus.
(il faut dire que KGF.dll est une véritable encyclopédie !)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10576
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Capture d'une zone de l'écran total   Jeu 16 Nov 2017 - 22:50

Oui, j'avais fait ça un jour lorsque je me suis rendu compte que KGF.dll mémorise certaines informations qui doivent absolument rester en mémoire, comme la liste de certains objets créés par KGF.dll, l'état des diverses bases de données, connexions FTP etc. Si entretemps, on a besoin d'une autre DLL, comme USER32.dll par exemple, c'est foutu... . Donc, j'ai fait cela pour régler ce problème.

D'ailleurs, ma base de données relationnelle BDR.dll est également disponible via KGF.dll à travers ce mécanisme !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 6152
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Capture d'une zone de l'écran total   Jeu 16 Nov 2017 - 23:32

Je vais m'endormir plus serein !
Bonne nuit ! Sleep
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5746
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Capture d'une zone de l'écran total   Jeu 16 Nov 2017 - 23:43

Salut JL35

Je lance le programme et ...

ERREUR  Sad :
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

Nombre de messages : 5746
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Capture d'une zone de l'écran total   Ven 17 Nov 2017 - 0:05

J’ai posté ici un mini code de 3 lignes  qui permet de faire différents types de captures d’écran.
Mais comme  les bons trucs passent souvent inaperçus, seul Jicehel à réagi.

Je rappelle le code

Code:

picture 10 : full_space 10
execute_wait "SnippingTool.exe"
clipboard_paste 10

Pour plus d'info , cliquez sur le lien ci-dessus.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 6152
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Capture d'une zone de l'écran total   Ven 17 Nov 2017 - 14:27

Salut papydall,
Bizarre ton erreur, ça semble vouloir dire que la dll de Nardo (GetMouseXY) ne t'a pas renvoyé une chaîne de 9 octets comme prévu ('xxxxyyyyb': valeur x, valeur y, état des boutons de la zone survolée...), tu as bien la bonne version (je sais quil y en a eu une déficiente).

Pour SnippingTool, ton exemple ne marche pas chez moi, il s'affiche une croix, c'est tout...


Perso j'utilise en général une fonction de capture de IrfanView, ça marche très bien, mais ce n'est pas en pur panoramic...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5746
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Capture d'une zone de l'écran total   Ven 17 Nov 2017 - 15:38

Hello Juliet Lima Three Five

Je dispose de la dll de Nardo Pick.dll, mais il s’est avéré qu’elle est comment dire ? Obsolète !
Bon, je l’ai téléchargée à nouveau et il semble qu’elle fonctionne cette fois-ci.
Seulement, comme capture je n’obtiens qu’un horrible rectangle noir !

Pour SnippingTool,  voici ce que ça donne



Essaye de le lancer sous l’invite de commande, juste pour voir.
Ça doit donner ceci :

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 6152
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Capture d'une zone de l'écran total   Ven 17 Nov 2017 - 15:54

Effectivement papydall, SnippingTool est bien plus séduisant (et plus satisfaisant) que mon programme.

MAIS, je suis sous Windows 7
- je fais Windows + 'R', et je tape SnippingTool.exe: très bien, il se lance, s'exécute et s'affiche.
- je fais depuis Panoramic
   EXECUTE_WAIT "SnippingTool.exe"
ou bien
   EXECUTE_WAIT "C:\Windows\System32\SnippingTool.exe"
dans les deux cas:

Et pourtant, il est bien dans C:\Windows\System32 d'après l'explorateur de fichier !


Il semble que ce ne soit pas le programme qui est là, mais un lien vers le véritable programme...
J'y perds mon latin... enfin, c'est une image, il y a bien longtemps que je l'ai perdu !


PS pour ton rectangle noir (horrible en plus) en résultat de capture (mon prog) je ne vois pas pourquoi, chez moi pas de pb, c'est la sub Capture_T() qui fait le boulot...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5746
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Capture d'une zone de l'écran total   Ven 17 Nov 2017 - 16:14

Jl35 a écrit:
MAIS, je suis sous Windows 7

Moi également je suis sous W7.
SnippingTool tourne sur Vista, W7, W8, W10.

JL35 a écrit:
Et pourtant, il est bien dans C:\Windows\System32 d'après l'explorateur de fichier !

Ce type d’erreur est assez connu (une mauvaise indexation des fichiers, peut-être ? mais rien n’est sûr)
Suggestion : faire une copie du fichier SnippingTool.exe sur un autre endroit autre que  C :\Windows\System32 : sur le bureau par exemple et lance le code suivant

Code:

picture 10 : full_space 10
execute_wait "c:\ ....\SnippingTool.exe" :' Indiquer l'emplacement exact du fichier
clipboard_paste 10

Ça devrait fonctionner : parole de Papydall tongue
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 6152
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Capture d'une zone de l'écran total   Ven 17 Nov 2017 - 16:22

Tu as bien fait de rayer ta parole: ça ne marche pas.
J'ai bien essayé de le copier (depuis Windows\System32) : il copie un lien (raccourci) vers le snippingtool de System32...
J'ai fait une recherche de SnippingTool.exe dans tout Windows: il ne trouve que celui-ci et un autre enfoui dans les profondeurs qui est aussi un lien, mais je ne trouve pas le véritable programme...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5746
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Capture d'une zone de l'écran total   Ven 17 Nov 2017 - 16:30

Chez moi le fichier SnippingTool.exe ne pèse que 387 Ko (voir capture d’écran ci-dessous)
Pourquoi, le tien est plus lourd  (421 Ko) ?  Tu l’engraisses avec quel aliment ? Wink
Serait-il corrompu ?




Remarque : j'ai fait une copie de SnippingTool.exe sur le bureau et en l'exécutant j'obtiens exactement l'erreur que tu as signalée.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 6152
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Capture d'une zone de l'écran total   Ven 17 Nov 2017 - 16:41

Mystère, il s'est engraissé tout seul (sur mon dos).En tout cas ce n'est pas un fichier normal, je ne peux pas le copier.

Je suis allé sur un portable Windows 10, il y a un SnippingTool.exe sous C:\Windows\System32, et il fait 3,01 M.
J'ai tenté de le copier sur une clé (avec l'explorateur de fichiers), ça marche, mais il ne copie qu'un raccourci (2 k !)
Je l'ai copié en ligne de commande, et là c'est complet.

Je le lance depuis la clé sur mon W7: manque de bol 'ce n'est pas une application Win32 valide'...

Bon, en conclusion (pour SnippingTool).
- Je renonce à le lancer depuis Panoramic, je n'y arrive pas.
- Je l'installe dans la barre des tâches (explorateur de fichier, C:\Windows\System32, clic droit sur SnippingTool.exe,
  'Épingler dans la barre des tâches'
Et là il suffit de cliquer sur le petit lasso en bas pour en disposer, il y a plein de possibilités (capture sous forme d'image ou de texte).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Capture d'une zone de l'écran total   

Revenir en haut Aller en bas
 
Capture d'une zone de l'écran total
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Comment faire une capture d'écran ( ScreenShot ) et la mettre en ligne
» Capture d'écran
» capture d'écran
» Capture d'écran de Windows
» Vous ne savez pas faire une capture d'écran avec votre clavier

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: