FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Form(résolu)
Capture d'écran Emptypar leclode Hier à 17:59

» trop de fichiers en cours
Capture d'écran Emptypar Marc Hier à 11:42

» Bataille navale SM
Capture d'écran Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Une calculatrice en une ligne de programme
Capture d'écran Emptypar jean_debord Ven 26 Avr 2024 - 8:01

» Gestion d'un système client-serveur.
Capture d'écran Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Capture d'écran Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Capture d'écran Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Capture d'écran Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Capture d'écran Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Capture d'écran Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Capture d'écran Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Capture d'écran Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Capture d'écran Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Capture d'écran Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Capture d'écran Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-20%
Le deal à ne pas rater :
Ecran PC GIGABYTE 28″ LED M28U 4K ( IPS, 1 ms, 144 Hz, FreeSync ...
399 € 499 €
Voir le deal

 

 Capture d'écran

Aller en bas 
+2
Minibug
JL35
6 participants
AuteurMessage
JL35




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

Capture d'écran Empty
MessageSujet: Capture d'écran   Capture d'écran EmptyMer 29 Mai 2019 - 22:37

Pour capturer une partie de l'image actuelle du bureau windows, j'avais proposé une solution en panoramic,
(avec l'aide d'une dll de l'ami Nardo pour connaître la position de la souris sur tout l'écran).
ici par exemple:
https://panoramic.1fr1.net/t5505-capture-d-une-zone-de-l-ecran-total?highlight=capture
un autre exemple (même principe):
https://panoramic.1fr1.net/t3771-capture-d-ecran-autre?highlight=capture

En fait on capturait une partie d'un Form invisible qui occupait (ou non) tout l'écran.
Ça ne marche plus avec les versions récentes de l'éditeur, sans doute à cause du Form invisible...

Il y a eu une autre solution avec un Form rendu transparent (avec je crois une fonction de user32.dll
rapportée par silverman)... mais ça ne marche plus non plus, résultat image noire.
J'ai retrouvé, c'était là:
https://panoramic.1fr1.net/t4475-forms-transparent-ou-couleur-invisible?highlight=transparent

J'ai bien une autre solution, mais qui fait appel à une ressource externe: boxcutter.exe,
qui s'exécute en ligne de commande de façon transparente depuis un programme Panoramic.

Il y a bien snippingtool.exe qui est intégré à Windows, mais à ma connaissance on ne peut pas le lancer
de façon transparente en ligne de commande, une fenêtre s'ouvre forcément.
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyJeu 30 Mai 2019 - 0:25

J'ai la solution avec la dll de Klaus ! drunken

Code:

DIM res%

DLL_ON "KGF.DLL"
res% = dll_call1("ScreenCopy",0)
PICTURE 1 : PARENT 1,0 : FULL_SPACE 1
CLIPBOARD_PASTE 1

END

ajustable avec :
0 = pour tout l'écran
1 = pour la fenêtre active
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
papydall

papydall


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

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyJeu 30 Mai 2019 - 2:23

Sous Windows, vous disposez d’une commande SnippingTool.exe qui se trouve dans Windows\System32

J’en ai parlé en Février 2016 (soit un peu plus de 3 ans), et ironie du sort : ce post a été visionné plus de deux mille fois mais personne n’y a répondu  (à part Jicehel qui se fait rare ces jours-ci).
Le sujet en question se trouve ici.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyJeu 30 Mai 2019 - 8:29

Bonjour à tous,

Apparemment SnippingTool.exe ne fait pas une capture d'écran complète OU ne fonctionne pas.
Essayez ce code avec et sans la ligne 12, et observez les résultats.

Chez moi (W8.1) je n'ai qu'une copie de form 0.

Code:
clipboard_string_copy "":' vide le presse-papier
label imprime_Form
picture 10 : full_space 10 : color 10,0,0,0
print "BONJOUR"
message "Appyez sur la touche [Imp écran] pour copier le contenu de form 0"
on_key_up 0,imprime_Form

END

imprime_Form:
  if key_up_code=44
     execute "SnippingTool.exe"
     clipboard_paste 10
  end_if  
return

Question

A+
Revenir en haut Aller en bas
JL35




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

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyJeu 30 Mai 2019 - 12:45

En fait je voulais une capture en tout panoramic, mais ça ne marche plus.

@Minibug
Oui mais il faut faire appel à KGF.dll
Il y a plus simple, au clavier:
- touche ImprEécran: capture de tout l'écran dans le presse-papier
- touches Alt/ImprEcran: capture de la fenêtre active

@Papydall
SnippingTool.exe doit sans doute être lancé en mode administrateur, il apparaît bien
dans l'explorateur dans C:\Windows\System32, mais ne veut pas s'exécuter en mode
commande depuis panoramic (non trouvé, même avec le chemin complet). Et on ne peut pas le recopier ailleurs.
De plus (si on arrive à le lancer), il affiche une fenêtre de dialogue, c'est ce que je voulais éviter.

J'ai fait appel à boxcutter.exe, qui peut se lancer en ligne de commande depuis Panoramic.
C'est une ressource externe (ici: http://keepnote.org/boxcutter/)
Je fais aussi appel à pick.dll de notre ami Nardo, qui permet de connaître la position et l'état des boutons de la souris sur tout l'écran (génial).
Ça donne ceci:
Code:
' Capture_totale.bas
' Capture d'une zone rectangulaire du bureau délimitée à la souris -> clipboard
' affichée dans Irfanview
  LABEL Fin
  DIM f%,f1%,f2%,fh%,fb%,fl%,fr%,wc%,x1%,y1%,x%,y%,w%,h%,e%,rt%,gt%,bt%,bo%,a$
  DIM fr$,bc$,c$,vb$,vt$,ncm$,q$: q$ = CHR$(34)
  ncm$ = "C:\UTIL\nircmd.exe"
  TaskBar(0)
  TOP 0,SCREEN_Y-30: WIDTH 0,600: LEFT 0,(SCREEN_X-WIDTH(0))/2: HEIGHT 0,30
  BORDER_HIDE 0: COLOR 0,255,255,0: FONT_SIZE 0,18: ON_CLICK 0,Fin
  PRINT "    Délimiter à la souris la zone de saisie"
  e% = 2: ' épaisseur trait
  rt% = 255: gt% = 0: bt% = 0: ' couleur trait
  ' Croix de tracé
  wc% = 50: ' dimensions croix de saisie
  f% = 0
  f%=f%+1: FORM f%: COLOR f%,rt%,gt%,bt%: BORDER_HIDE f%: ' croix, barre H
           WIDTH f%,wc%: HEIGHT f%,e%: f1% = f%
  f%=f%+1: FORM f%: COLOR f%,rt%,gt%,bt%: BORDER_HIDE f%: ' croix, barre V
           WIDTH f%,e%: HEIGHT f%,wc%: f2% = f%    
  DLL_ON "C:\Panoramic\NARDO\pick.dll": bo% = 0
  WHILE bo% = 0: ' bouton gauche souris non enfoncé
      a$ = STRING$(8," "): bo% = DLL_CALL1("GetMouseXY",ADR(a$))
      x% = VAL(LEFT$(a$,4)): y% = VAL(RIGHT$(a$,4))
      TOP f1%,y%: LEFT f1%,x%-wc%/2: TOP f2%,y%-wc%/2: LEFT f2%,x%
      PAUSE 50
  END_WHILE
  x1% = VAL(LEFT$(a$,4)): y1% = VAL(RIGHT$(a$,4))
  ' Rectangle de saisie
  f%=f%+1: FORM f%: COLOR f%,rt%,gt%,bt%: BORDER_HIDE f%: ' haut rectangle
           TOP f%,y1%-e%/2: LEFT f%,x1%-e%/2: HEIGHT f%,e%: fh% = f%
  f%=f%+1: FORM f%: COLOR f%,rt%,gt%,bt%: BORDER_HIDE f%: ' bas
           LEFT f%,x1%-e%/2: HEIGHT f%,e%: fb% = f%          
  f%=f%+1: FORM f%: COLOR f%,rt%,gt%,bt%: BORDER_HIDE f%: ' gauche
           TOP f%,y1%-e%/2: LEFT f%,x1%-e%/2: WIDTH f%,e%: fl% = f%
  f%=f%+1: FORM f%: COLOR f%,rt%,gt%,bt%: BORDER_HIDE f%: ' droite
           TOP f%,y1%-e%/2: WIDTH f%,e%: fr% = f%
  WHILE bo% = 1
      a$ = STRING$(8," "): bo% = DLL_CALL1("GetMouseXY",ADR(a$))
      x% = VAL(LEFT$(a$,4)): y% = VAL(RIGHT$(a$,4))
      w% = x%-x1%: h% = y%-y1%
      TOP f1%,y%: LEFT f1%,x%-wc%/2: TOP f2%,y%-wc%/2: LEFT f2%,x%      
      WIDTH fh%,w%+e%
      TOP fb%,y1%+h%-e%/2: WIDTH fb%,w%
      HEIGHT fl%,h%+e%
      LEFT fr%,x1%+w%-e%/2: HEIGHT fr%,h%+e%
      a$ = STR$(x1%)+","+STR$(y1%)+" -> "+STR$(x%)+","+STR$(y%)
      a$=a$+"   WxH = "+STR$(w%)+" x "+STR$(h%)+" ->clip            "
      PRINT_LOCATE 20,0: PRINT a$    
      PAUSE 50
  END_WHILE  
  DLL_OFF
  DELETE f1%: DELETE f2%: DELETE fh%: DELETE fb%: DELETE fl%: DELETE fr%
  ' ***** Capture du contenu -> clipboard *****
  ' (boxcutter: http://keepnote.org/boxcutter/)
  bc$ = "C:\PANORAMIC\boxcutter.exe"
  vb$ = "Z:\Vb.vbs": vt$ = "Z:\Tmp.bat"
  fr$ = "": ' Capture dans le clipboarfd (sinon, fichier uniquement BMP ou PNG)  
  c$ = "-c "+STR$(x1%)+","+STR$(y1%)+","+STR$(x%)+","+STR$(y%)
  FILE_OPEN_WRITE 9,vt$
      FILE_WRITELN 9,"@echo off"
      FILE_WRITELN 9,bc$+" "+c$+" "+fr$
  FILE_CLOSE 9
  FILE_OPEN_WRITE 9, vb$: ' ===== Création du script .vbs =====
      FILE_WRITELN 9,"CreateObject("+q$+"Wscript.Shell"+q$+").Run "+q$+vt$+q$+",0,True"
  FILE_CLOSE 9
  EXECUTE_WAIT "WSCRIPT.exe|"+vb$: ' ===== Exécution du script =====
  FILE_DELETE vb$: FILE_DELETE vt$
  TaskBar(1)
  ' ***** Affichage de la capture dans IrfanView, et quitter *****
  EXECUTE "C:\Progra~2\Irfanv~1\i_view64.exe|/clippaste"
Fin:
TERMINATE
' ==============================================================================
SUB TaskBar(onoff%)
  ' Barre de tâches Windows: onoff% = 0: cacher, onoff% = 1: montrer
   DIM_LOCAL TaskbarHandle,lpClassName$,lpWindowName$,null,lpc%,lpw%,ad%
   lpClassName$ = "Shell_traywnd"
   lpWindowName$ = ""
   ad% = ADR(lpClassName$)
   lpc% = 256*256*256*PEEK(ad%+3)+256*256*PEEK(ad%+2)+256*PEEK(ad%+1)+PEEK(ad%)
   ad% = ADR(lpWindowName$)
   lpw% = 256*256*256*PEEK(ad%+3)+256*256*PEEK(ad%+2)+256*PEEK(ad%+1)+PEEK(ad%)
   IF onoff% <> 0 THEN onoff% = 5: ' montrer
   DLL_ON "user32.dll"
       TaskbarHandle = DLL_CALL2("FindWindowA",lpc%,lpw% )
       null = DLL_CALL2("ShowWindow",TaskbarHandle,onoff%)
   DLL_OFF
END_SUB
' ==============================================================================
Compilé en exécutable, avec un raccourci sur le bureau: sélection de zone en rectangle.
Au clic sur l'icône, une croix apparaît.
On clique sur le point de départ haut/gauche, on déplace la souris, on relâche au point d'arrivée:
la zone est copiée en image dans le presse-papier.
J'ai terminé en affichant l'image dans IrfanView, mais ça peut être n'importe où, dans un picture par exemple.
Particularité: pendant le temps de délimitation de la zone à saisir, la barre des tâches Windows est effacée, remplacée par une ligne de dialogue: affichage de la position souris.
En prime, l'icône du raccourci: Capture d'écran Captur10
(convertie en bmp, le format .ico ne passe pas)
Revenir en haut Aller en bas
papydall

papydall


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

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyJeu 30 Mai 2019 - 16:40

J’exécute sans problème le code suivant
Code:

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


Jl35 a écrit:
De plus (si on arrive à le lancer), il affiche une fenêtre de dialogue, c'est ce que je voulais éviter.

Quelle fenêtre ?
Voici ce que j’obtiens, moi sous W7

Spoiler:

Et voici le résultat dans FORM 0

Spoiler:


EDIT :
Pour faire une capture d’écran sous Windows voici  4 méthodes proposées par le crabe
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Francis-mr




Nombre de messages : 185
Date d'inscription : 26/11/2012

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyJeu 30 Mai 2019 - 17:06

Bonjour,
Désolé Papydall, mais JL35 a raison, on ne peut pas ouvrir "SnippingTool.exe" par Panoramic sous Windows 10.
Microsoft veut peut-être favoriser sa nouvelle application "Capture d'écran et croquis" Question
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyJeu 30 Mai 2019 - 17:51

Je confirme ce que dit Francis-mr, c'est valable pour W8.1.

Question
Revenir en haut Aller en bas
JL35




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

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyJeu 30 Mai 2019 - 19:20

Et sous W7, je lance les 3 lignes de code de papydall, et:
Capture d'écran I110
pourtant l'exécutable snippingtool.exe est bien dans C:\Windows\system32, et même si je mets le chemin
complet le résultat est le même.
En bricolant je ne sais plus comment (j'ai dû le recopier ailleurs) j'ai réussi à le lancer, mais il affiche une petite fenêtre avec au milieu juste une croix qui doit signifier: 'exécution interdite'.
Je pense que tu dois être en mode administrateur.

De plus papydall, tu dis 'quelle fenêtre ?' mais dans ton spoiler il y a bien une fenêtre d'exécution affichée
pour snippingtool, titrée 'Outil Capture' ???

Bien sûr il y a plusieurs méthodes de capture d'écran, ne serait-ce qu'au clavier (ImprÉcr.) sans logiciel externe.
Mais je voulais du pur panoramic, sans affichage de logiciel externe, ce qui ne marche plus avec les anciennes méthodes
(invisibilité ou transparence des forms).
J'y arrive avec boxcutter (ressource externe, mais sans affichage, voir un peu plus haut) avec choix du rectangle de sélection en panoramic.
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2380
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyVen 31 Mai 2019 - 0:22

Bonjour à tous !

@JL35
Je ne suis pas sûr que cela réponde à tes besoins, mais voici un petit code extrait d'un source de notre ami Papydall, qui permet de copier automatiquement l'écran dans le presse-papier :
Code:
DIM res%
DLL_ON "user32"
res% = DLL_CALL4("keybd_event",44,0,0,0)
DLL_OFF
MESSAGE "la copie d'écran est dans le presse papier !"
END

Bonne programmation !
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyVen 31 Mai 2019 - 8:41

Bien vu Marc, je ne sais pas où tu l'as trouvé car j'ai cherché hier sans succès.
Mais ce code de Papydall fonctionne avec une DLL mais bon...

J'ai adapté pour faire une copie d'écran, mais ça n'a pas été facile.
1) première difficulté: comment intercepter l'appuis sur la touche [Imp écran]
   J'ai opté pour ON_KEY_UP N sur un EDIT caché car ON_KEY_UP 0 n'est pas autorisé sur form 0
   Et surtout ON_KEY_DOWN N ne marche pas Question , j'ai perdu du temps.
2) J'ai mis un certain temps à deviner que si on supprime le message après la copie d'écran, ça ne fonctionne pas.
   Il faut un temps d'arrêt pour la copie: soit un message soit un DISPLAY ou WAIT. (voir code ci-dessous)

Code:
DIM res%
LABEL Touche

message "Pressez la touche [Imp écran] à la suite de ce message"

picture 1
edit 2 : set_focus 2
top 2,-50 : left 2,-50
on_key_up 2,Touche


END

Touche:
    if key_up_code=44 and key_up_special=0 then CopieEcran() : ColleEcran()
return

SUB CopieEcran()
    clipboard_string_copy ""
    DLL_ON "user32"
    res% = DLL_CALL4("keybd_event",44,0,0,0)
    DLL_OFF
    message "l'écran est copié et va être restitué maintenant"
'    display
END_SUB

SUB ColleEcran()
    full_space 0 : full_space 1
    clipboard_paste 1
END_SUB


A+

PS: il existe la commande SNAPSHOT dans panoramic, mais elle ne fonctionne que sur un SCENE2D.
Il y a surement un moyen de bricoler avec...


Very Happy
Revenir en haut Aller en bas
JL35




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

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyVen 31 Mai 2019 - 13:25

Mais oui Marc, c'est ce qui me manquait, cette fonction de user32.dll !
Un grand merci à toi (et à papydall qui a trouvé le premier), plus d'appel à une ressource externe, et je peux faire ma capture sans affichage d'un programme externe.

J'ai gardé le même principe:
- délimitation de la zone à la souris, en panoramic (et grâce à Nardo: position de la souris sur tout l'écran)
- sauvegarde de tout l'écran dans le clipboard avec user32.dll
- découpe dans cette sauvegarde de la zone délimitée précédemment et recopie dans le clipboard
et le tour est joué !
et après on en fait ce qu'on veut, affichage, sauvegarde dans un bmp, etc.
Mon exécutable fonctionne désormais ainsi.

Voici le code, à tout hasard (l'appel à IrfanView pour visualisation est optionnel, évidemment):
Code:
' Capture_totale.bas
' Capture d'une zone rectangulaire du bureau délimitée à la souris -> clipboard
' affichée dans Irfanview
 DIM f%,f1%,f2%,fh%,fb%,fl%,fr%,wc%,x1%,y1%,x%,y%,w%,h%,e%,rt%,gt%,bt%,bo%,a$
 TaskBar(0)
 TOP 0,SCREEN_Y-30: WIDTH 0,640: LEFT 0,(SCREEN_X-WIDTH(0))/2: HEIGHT 0,30
 BORDER_HIDE 0: COLOR 0,255,255,0: FONT_SIZE 0,18: ' ON_CLICK 0,Fin
 PRINT "    Délimiter à la souris la zone de saisie"
 e% = 2: ' épaisseur trait
 rt% = 255: gt% = 0: bt% = 0: ' couleur trait
 ' Croix de tracé
 wc% = 50: ' dimensions croix de saisie
 f% = 0
 f%=f%+1: FORM f%: COLOR f%,rt%,gt%,bt%: BORDER_HIDE f%: ' croix, barre H
          WIDTH f%,wc%: HEIGHT f%,2*e%: f1% = f%
 f%=f%+1: FORM f%: COLOR f%,rt%,gt%,bt%: BORDER_HIDE f%: ' croix, barre V
          WIDTH f%,2*e%: HEIGHT f%,wc%: f2% = f%    
 DLL_ON "C:\Panoramic\NARDO\pick.dll": bo% = 0
 WHILE bo% = 0: ' bouton gauche souris non enfoncé
     a$ = STRING$(8," "): bo% = DLL_CALL1("GetMouseXY",ADR(a$))
     x% = VAL(LEFT$(a$,4)): y% = VAL(RIGHT$(a$,4))
     TOP f1%,y%: LEFT f1%,x%-wc%/2: TOP f2%,y%-wc%/2: LEFT f2%,x%
     PAUSE 50
 END_WHILE
 x1% = VAL(LEFT$(a$,4)): y1% = VAL(RIGHT$(a$,4))
 ' Rectangle de saisie
 f%=f%+1: FORM f%: COLOR f%,rt%,gt%,bt%: BORDER_HIDE f%: ' haut rectangle
          TOP f%,y1%-e%/2: LEFT f%,x1%-e%/2: HEIGHT f%,e%: fh% = f%
 f%=f%+1: FORM f%: COLOR f%,rt%,gt%,bt%: BORDER_HIDE f%: ' bas
          LEFT f%,x1%-e%/2: HEIGHT f%,e%: fb% = f%          
 f%=f%+1: FORM f%: COLOR f%,rt%,gt%,bt%: BORDER_HIDE f%: ' gauche
          TOP f%,y1%-e%/2: LEFT f%,x1%-e%/2: WIDTH f%,e%: fl% = f%
 f%=f%+1: FORM f%: COLOR f%,rt%,gt%,bt%: BORDER_HIDE f%: ' droite
          TOP f%,y1%-e%/2: WIDTH f%,e%: fr% = f%
 WHILE bo% = 1
     a$ = STRING$(8," "): bo% = DLL_CALL1("GetMouseXY",ADR(a$))
     x% = VAL(LEFT$(a$,4)): y% = VAL(RIGHT$(a$,4))
     w% = x%-x1%: h% = y%-y1%
     TOP f1%,y%: LEFT f1%,x%-wc%/2: TOP f2%,y%-wc%/2: LEFT f2%,x%      
     WIDTH fh%,w%+e%
     TOP fb%,y1%+h%-e%/2: WIDTH fb%,w%
     HEIGHT fl%,h%+e%
     LEFT fr%,x1%+w%-e%/2: HEIGHT fr%,h%+e%
     a$ = "x="+STR$(x1%)+" y="+STR$(y1%)+" -> x="+STR$(x%)+" y="+STR$(y%)
     a$=a$+"   WxH = "+STR$(w%)+" x "+STR$(h%)+" ->clip            "
     PRINT_LOCATE 10,0: PRINT a$    
     PAUSE 50
 END_WHILE  
 DLL_OFF
 DELETE f1%: DELETE f2%: DELETE fh%: DELETE fb%: DELETE fl%: DELETE fr%
 DLL_ON "user32"
     e% = DLL_CALL4("keybd_event",44,0,0,0): ' sauvegarde de tout l'écran -> clip
 DLL_OFF
 PICTURE 10: HIDE 10: WIDTH 10,SCREEN_X: HEIGHT 10,SCREEN_Y
 CLIPBOARD_PASTE 10: 2D_TARGET_IS 10
 IMAGE 11: 2D_IMAGE_COPY 11,x1%,y1%,x%,y%: ' découpe de la partie sélectionnée
 CLIPBOARD_COPY 11
 TaskBar(1)
 ' ***** Affichage de la capture dans IrfanView, et quitter *****
 EXECUTE "C:\Progra~2\Irfanv~1\i_view64.exe|/clippaste"
TERMINATE
' ==============================================================================
SUB TaskBar(onoff%)
 ' Barre de tâches Windows: onoff% = 0: cacher, onoff% = 1: montrer
  DIM_LOCAL TaskbarHandle,lpClassName$,lpWindowName$,null,lpc%,lpw%,ad%
  lpClassName$ = "Shell_traywnd"
  lpWindowName$ = ""
  ad% = ADR(lpClassName$)
  lpc% = 256*256*256*PEEK(ad%+3)+256*256*PEEK(ad%+2)+256*PEEK(ad%+1)+PEEK(ad%)
  ad% = ADR(lpWindowName$)
  lpw% = 256*256*256*PEEK(ad%+3)+256*256*PEEK(ad%+2)+256*PEEK(ad%+1)+PEEK(ad%)
  IF onoff% <> 0 THEN onoff% = 5: ' montrer
  DLL_ON "user32.dll"
      TaskbarHandle = DLL_CALL2("FindWindowA",lpc%,lpw% )
      null = DLL_CALL2("ShowWindow",TaskbarHandle,onoff%)
  DLL_OFF
END_SUB
' ==============================================================================
Revenir en haut Aller en bas
papydall

papydall


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

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyVen 31 Mai 2019 - 18:29

Jean Claude a écrit:
Bien vu Marc, je ne sais pas où tu l'as trouvé car j'ai cherché hier sans succès.
Mais ce code de Papydall fonctionne avec une DLL mais bon...

Jl35 a écrit:
Mais oui Marc, c'est ce qui me manquait, cette fonction de user32.dll !
Un grand merci à toi (et à papydall qui a trouvé le premier), plus d'appel à une ressource externe, et je peux faire ma capture sans affichage d'un programme externe.


Pour des plus amples informations  cliquez sur ce lien et servez-vous : c'est gratos !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyVen 31 Mai 2019 - 19:04

Le pire, c'est que j'ai stocké ces codes et je ne m'en rappelait plus. Embarassed

Merci Papydall.
Revenir en haut Aller en bas
papydall

papydall


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

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyVen 31 Mai 2019 - 19:28

Une simple recherche dans le forum avec comme argument le mot ‘simuler’ m’a amené droit au but.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyVen 31 Mai 2019 - 19:34

C'est vrai qu'on a tendance parfois à se perdre dans notre forum... drunken

Il est parfois difficile de retrouver certaines choses ou trouver les bons mots pour les recherches.
Je travaille d’ailleurs en ce moment sur un petit utilitaire pour vous aider à ne plus perdre la mémoire.
Je vous le présenterai bientôt...

en attendant, j'avais repris le code de Jean Claude ce matin et je n'ai pas eu le temps de le publier.
Le voici :

Code:

DIM res%, x, y
LABEL Touche, Change, Resize

LEFT 0,SCREEN_X+10 : ON_RESIZE 0,Resize
picture 1
SCROLL_BAR 3 : WIDTH 3,WIDTH_CLIENT(0) : TOP 1,HEIGHT(3)+1 : ON_CHANGE 3,Change
SCROLL_BAR 4 : VERTICAL 4 : HEIGHT 4,HEIGHT_CLIENT(0) : LEFT 1,WIDTH(4)+1 : ON_CHANGE 4,Change
edit 2 : set_focus 2 : top 2,-50 : left 2,-50 : on_key_up 2,Touche

message "Pressez la touche [Imp écran] à la suite de ce message"

END

Touche:
    if key_up_code=44 and key_up_special=0 then CopieEcran() : ColleEcran() : LEFT 0,0 : TOP 0,0
return

Change:
  x=((SCREEN_X-WIDTH_CLIENT(0)+WIDTH(4))/100*POSITION(3))*(-1)+WIDTH(4)
  y=((SCREEN_Y-HEIGHT_CLIENT(0)+HEIGHT(3))/100*POSITION(4))*(-1)+HEIGHT(3) 
  LEFT 1,x : TOP 1,y : DISPLAY
RETURN

Resize:
  WIDTH 3,WIDTH_CLIENT(0) : HEIGHT 4,HEIGHT_CLIENT(0)
  GOSUB change
RETURN

SUB CopieEcran()
    clipboard_string_copy ""
    DLL_ON "user32"
    res% = DLL_CALL4("keybd_event",44,0,0,0)
    DLL_OFF
    message "l'écran est copié et va être restitué maintenant"

END_SUB

SUB ColleEcran()
    clipboard_paste 1 : PAUSE 100     
    LEFT 1,WIDTH(4) : WIDTH 1,SCREEN_X
    TOP 1,HEIGHT(3) : HEIGHT 1,SCREEN_Y 
END_SUB
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyVen 31 Mai 2019 - 20:33

Bien vu Minibug,

Je n'avais pas remarqué que la restitution de la copie d'écran était incomplète à cause des bordures.

Il y a une autre solution avec BORDER_HIDE  Very Happy

Code:
DIM res%,a$
LABEL Touche,fin

message "Pressez la touche [Imp écran] à la suite de ce message"

picture 1
edit 2 : set_focus 2
top 2,-50 : left 2,-50
on_key_up 2,Touche

END

Touche:
    if key_up_code=44 and key_up_special=0 then CopieEcran() : ColleEcran()
return

SUB CopieEcran()
    clipboard_string_copy ""
    DLL_ON "user32"
    res% = DLL_CALL4("keybd_event",44,0,0,0)
    DLL_OFF
    message "l'écran est copié et va être restitué maintenant"
'    display
END_SUB

SUB ColleEcran()
    width 0,screen_x : height 0,screen_y : border_hide 0
    full_space 1
    clipboard_paste 1
    gosub fin
END_SUB

fin:
    message "Cliquez sur OK pour quitter la visualisation de la copie d'écran"
    Border_normal 0
return


A toi de jouer !

A+
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyVen 31 Mai 2019 - 21:20

Je ne comprends pas !

Chez moi (Win 7.32) mon code fonctionne parfaitement et la copie est complète !
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
JL35




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

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptyVen 31 Mai 2019 - 21:38

Vous faites des copies de l'écran total, c'est relativement simple, d'abord avec un simple appui sur la touche  ImprEcran ou bien par programme avec user32.dll (merci à Marc et papydall).

Mon but était plutôt la copie d'une sélection d'une partie de l'écran, à délimiter à la souris, sans faire apparaître la fenêtre du programme pour ne pas polluer l'écran.
Par exemple je visite un site internet, une zone de l'écran m'intéresse, image ou n'importe quoi, je lance mon exécutable, je sélectionne la zone et je capture.
Bien sûr on peut capturer la totalité et ensuite faire du découpage dans l'image.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptySam 1 Juin 2019 - 7:56

Oui JL35, j'ai bien compris que ta finalité n'est pas la même que le code que j'ai montré.
Mon but à moi, c'était d'afficher sur l'écran le résultat de l'utilisation de USER32.DLL de Papydall.
Excuse moi pour la pollution de ton post.

@Minibug,
Ne t'inquiète pas, ton code fonctionne parfaitement chez moi aussi, je voulais simplement supprimer les barres horizontales et verticales qui cachent les bords.
En fait ce qui compte c'est que la copie qui est dans le presse-papier est bien fidèle. C'est juste un problème de restitution de l'image en taille réelle qui n'est possible qu'avec un BORDER_HIDE ou avec ton système de barres.

A+
Revenir en haut Aller en bas
JL35




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

Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran EmptySam 1 Juin 2019 - 12:31

Mais non Jean Claude tu me connais, pas de problème, c'était juste pour préciser mon but !
Revenir en haut Aller en bas
Contenu sponsorisé





Capture d'écran Empty
MessageSujet: Re: Capture d'écran   Capture d'écran Empty

Revenir en haut Aller en bas
 
Capture d'écran
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Capture écran
» DLL
» Capture vidéo
» Capture des replay TV
» Logiciel de capture d'écran

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Présentation et bavardage-
Sauter vers: