Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Capture d'écran | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Capture d'écran Mer 29 Mai 2019 - 22:37 | |
| | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Capture d'écran Jeu 30 Mai 2019 - 0:25 | |
| J'ai la solution avec la dll de Klaus ! - 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 | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Capture d'écran Jeu 30 Mai 2019 - 2:23 | |
| Sous Windows, vous disposez d’une commande SnippingTool.exe qui se trouve dans Windows\System32J’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. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Capture d'écran Jeu 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
A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Capture d'écran Jeu 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: (convertie en bmp, le format .ico ne passe pas) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Capture d'écran Jeu 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 | |
| | | Francis-mr
Nombre de messages : 186 Date d'inscription : 26/11/2012
| Sujet: Re: Capture d'écran Jeu 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" | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Capture d'écran Jeu 30 Mai 2019 - 17:51 | |
| Je confirme ce que dit Francis-mr, c'est valable pour W8.1. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Capture d'écran Jeu 30 Mai 2019 - 19:20 | |
| Et sous W7, je lance les 3 lignes de code de papydall, et: 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. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Capture d'écran Ven 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 ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Capture d'écran Ven 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 , 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... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Capture d'écran Ven 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 ' ============================================================================== | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Capture d'écran Ven 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 ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Capture d'écran Ven 31 Mai 2019 - 19:04 | |
| Le pire, c'est que j'ai stocké ces codes et je ne m'en rappelait plus. Merci Papydall. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Capture d'écran Ven 31 Mai 2019 - 19:28 | |
| Une simple recherche dans le forum avec comme argument le mot ‘simuler’ m’a amené droit au but. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Capture d'écran Ven 31 Mai 2019 - 19:34 | |
| C'est vrai qu'on a tendance parfois à se perdre dans notre forum... 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
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Capture d'écran Ven 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 - 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+ | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Capture d'écran Ven 31 Mai 2019 - 21:20 | |
| Je ne comprends pas !
Chez moi (Win 7.32) mon code fonctionne parfaitement et la copie est complète ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Capture d'écran Ven 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. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Capture d'écran Sam 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+
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Capture d'écran Sam 1 Juin 2019 - 12:31 | |
| Mais non Jean Claude tu me connais, pas de problème, c'était juste pour préciser mon but !
| |
| | | Contenu sponsorisé
| Sujet: Re: Capture d'écran | |
| |
| | | | Capture d'écran | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |