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 |
|
|
| Msgbox/Inputbox | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Msgbox/Inputbox Mer 14 Jan 2015 - 23:15 | |
| Il existe déjà en Panoramic des fonctions Message qui permettent d'afficher un certain nombre d'infos ou de proposer certains choix. Malheureusement ces choix sont en langue anglaise (Yes, No, Cancel etc.) Voici une sub qui utilise un script vbs et qui permet d'utiliser la fonction Msgbox avec plus de possibilités (choix du titre, du texte, et les boutons sont en langue française). L'essentiel de la sub est le mode d'emploi en tête, avec les paramètres à fournir, notamment le 'code' composé de 4 paramètres combinables (à additionner), le code en retour (action de l'utilisateur) est dans le presse-papier: - Code:
-
DIM tit$,txt$,code tit$ = "Ceci est le titre" txt$ = "Et ceci est le texte" code = 51: ' (= 3 + 48 + 0 + 0: boutons Oui,Non,Annuler et icône warning) Msgbox(tit$,txt$,code) print clipboard_string_paste$: ' code retour: action de l'utilisateur END " ============================================================================== SUB Msgbox(Tit$,Txt$,code) ' Affichage d'une msgbox de titre Tit$ et de texte Txt$ ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' PARAMÈTRES (code) 4 valeurs combinables (additionables): ' boutons affichés: ' 0= bouton OK seul ' 1= boutons OK, Annuler ' 2= boutons Abandonner, Recommencer, Ignorer ' 3= boutons Oui, Non, Annuler ' 4= boutons Oui, Non ' 5= boutons Recommencer, Annuler ' icône du message: ' 16= icône message critique ' 32= icône point d'interrogation ' 48= icône message warning ' 64= icône message d'information ' bouton par défaut: ' 0= 1er bouton est le bouton par défaut ' 256= 2ème bouton est le bouton par défaut ' 512= 3ème bouton est le bouton par défaut ' 768= 4ème bouton est le bouton par défaut ' comportement: ' 0= Bloque l'application courante en attente de réponse de l'utilisateur ' 4096= Bloque toutes les applications en attente de réponse ' CODE RETOUR: ' 1 OK cliqué ' 2 Annuler cliqué ' 3 Abandonner cliqué ' 4 Recommencer cliqué ' 5 Ignorer cliqué ' 6 Oui cliqué ' 7 Non cliqué ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DIM_LOCAL fvb$,scr$,p$,q$: q$ = CHR$(34) fvb$ = "C:\Temp\Msgb.vbs" scr$ = "C:\Temp\Vbscript.vbs" FILE_OPEN_WRITE 9,fvb$ FILE_WRITELN 9,"x=msgbox("+q$+Txt$+q$+","+STR$(code)+","+q$+Tit$+q$+")" FILE_WRITELN 9,"WScript.Echo x" FILE_CLOSE 9 p$ = "Cmd.exe /C Cscript.exe "+fvb$+" | clip" FILE_OPEN_WRITE 9, scr$: ' ===== Création du script .vbs ===== FILE_WRITELN 9, "CreateObject("+q$+"Wscript.Shell"+q$+").Run "+q$+p$+q$+",0,True" FILE_CLOSE 9 EXECUTE_WAIT "Wscript.exe "+scr$: ' ===== Exécution du script ===== FILE_DELETE scr$: FILE_DELETE fvb$ END_SUB ' ==============================================================================
Dernière édition par JL35 le Jeu 15 Jan 2015 - 21:01, édité 1 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Msgbox/Inputbox Mer 14 Jan 2015 - 23:45 | |
| Salut JL35 Merci pour le patage. Deux choses à dire : 1 – Ligne 4 - Code:
-
code = 51: ( = 3 + 48: boutons Oui,Non,Annuler et icône warning) Remplacer la parenthèse ouvrante par REM (‘) 2 – Tu utilises , ligne 50 - Code:
-
p$ = "Cmd.exe /C cscript.exe "+fvb$+" | clip" Ceci va afficher Microsoft ® Windows Script Host Version 5.8 Copyright © …. puis le code retour. Pour éviter ce message de copyright (que j'aime pas !!!) , il vaut mieux exécuter le script en mode Wscript et non en Cscript (bof! ce n'est qu'un détail) Donc, la ligne 50 devient - Code:
-
p$ = "Cmd.exe /C Wscript.exe "+fvb$+" | clip" | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Msgbox/Inputbox Mer 14 Jan 2015 - 23:58 | |
| Bonsoir papydall, Tu as évidemment raison pour le 1er point, commentaire rajouté en dernière minute ... il faut bien lire: - Code:
-
code = 51: ' (= 3 + 48: boutons Oui,Non,Annuler et icône warning) Par contre je ne suis pas d'accord sur le 2ème point, c'est justement si je fais p$ = ... Wscript.exe que j'ai l'affichage de la fenêtre résultat ' Windows Script Host' (tel quel) avec le code retour et un bouton 'OK' à cliquer, ce que je ne veux pas ! Avec p$ = ...Cscript.exe je n'ai pas d'affichage par le script, seulement le résultat dans le presse-papier. Et jusqu'à preuve du contraire, je maintiens ma ligne 49 (et non 50) - Code:
-
p$ = "Cmd.exe /C cscript.exe "+fvb$+" | clip" Bizarre ce fonctionnement inversé entre nous deux ??? | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 0:07 | |
| Voici ce que ça donne chez moi avec Cscript | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 0:15 | |
| Et ce que ça donne chez moi avec wscript: Je suis sous W7 Alors peut-être que le comportement est différent suivant l'os ??? bizarre quand même...
Dernière édition par JL35 le Jeu 15 Jan 2015 - 0:18, édité 1 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 0:18 | |
| Je suis également sous W7.
Je pense que c’est une question de l’environnement d’exécution de script par défaut. Chez moi j’exécute (par défaut) mes script en mode WScript. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 0:21 | |
| Je ne saurais pas te dire tout de suite, et à cette heure-ci, sous quel environnement j'exécute mes scripts... Autrement dit il faut essayer les deux solutions pour ne pas avoir l'affichage du code retour par le script... Sans doute des éléments de réponse ici: http://tahe.developpez.com/web/vbscript/?page=page_2 mais on verra demain ! PS on dirait bien pourtant que wscript affiche les résultats dans une fenêtre, et cscript sur la console, et c'est bien la console que je veux intercepter. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 0:33 | |
| Merci pour le lien. Je ne manquerai pas d’y jeter un œil. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 0:55 | |
| J’ai trouvé le pourquoi du comment.
Sous l’invite de commande, taper Wscript puis <ENTREE> Sur la fenêtre windows qui s’affiche, décocher Afficher le logo lorsque le script est exécuté dans la console de commande
On ne finit jamais d’apprendre ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 8:00 | |
| Merci pour cette nouvelle astuce | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 10:20 | |
| Bravo papydall, tu as mis le doigt dessus ! et effectivement c'est bien décoché chez moi ce qui est normal si on veut l'utiliser depuis panoramic en format ligne de commande et intercepter le résultat de manière transparente. Ça doit être coché implicitement, et j'ai dû le décocher... autrefois... En tout cas, merci à toi pour la participation, efficace comme toujours. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 10:28 | |
| C’est en échangeant des propos (même hors sujet parfois) qu’on avance ! Vive Le Forum ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| | | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 21:00 | |
| Poursuivons nos investigations... Voici maintenant une Inputbox (boîte de saisie). (je modifie le titre du post pour l'ajouter) Certes, la fonction existe en panoramic (Message_Input), mais cette sub-ci a l'avantage d'avoir ses boutons en français (!), et surtout de pouvoir être positionnée où on veut sur l'écran. Je ne sais pas dans quelle unités sont définies les coordonnées, mais j'ai remarqué empiriquement qu'il faut multiplier les valeurs par 15 pour avoir la bonne position en pixels (c'est fait dans la sub). - Code:
-
DIM Tit$,Txt$,Def$,x,y Tit$="Demande d'âge" Txt$="Quel est votre âge ?" Def$ = "20": ' valeur par défaut x = 300: y = 150 Inputbox(Tit$,Txt$,Def$,x,y) PRINT CLIPBOARD_STRING_PASTE$ END ' ============================== SUB Inputbox(Tit$,Txt$,Def$,x,y) ' Affichage d'une boîte de saisie de titre Tit$, texte Txt$, par défaut Def$ ' Position de la boîte en x,y pixels, résultat dans le presse-papier ' Si on clique 'Annuler', la chaîne rendue est vide. DIM_LOCAL fvb$,scr$,p$,a$,q$: q$ = CHR$(34) fvb$ = "C:\Temp\Msgb.vbs" scr$ = "C:\Temp\Vbscript.vbs" FILE_OPEN_WRITE 9,fvb$ a$ = q$+Txt$+q$+","+q$+Tit$+q$+","+q$+Def$+q$+","+STR$(x*15)+","+STR$(y*15) FILE_WRITELN 9,"x=inputbox("+a$+")" FILE_WRITELN 9,"WScript.Echo x" FILE_CLOSE 9 p$ = "Cmd.exe /C Cscript.exe "+fvb$+" | clip" FILE_OPEN_WRITE 9, scr$: ' ===== Création du script .vbs ===== FILE_WRITELN 9, "CreateObject("+q$+"Wscript.Shell"+q$+").Run "+q$+p$+q$+",0,True" FILE_CLOSE 9 EXECUTE_WAIT "Wscript.exe "+scr$: ' ===== Exécution du script ===== FILE_DELETE scr$: FILE_DELETE fvb$ END_SUB @ygeronimi Tu remarqueras que j'ai mis un print après l'exemple d'appel à la sub, pour afficher le résultat dans Form 0 | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 22:07 | |
| Tant de peine pour échanger un Cancel par un Annuler et garder en commun le OK ! - Code:
-
print message_input$("Demande d'âge", "Quel est votre âge ?" , "20") Mais bon : ce n’est que la poursuite des nos investigations… puisque tu t'adresses à des gens âgés de 20 ans. Tu en fais partie, toi ? Quand j’étais plus jeune d’une demi-année ( ), j’ai posté le code d’un message dont la fenêtre est autorefermable qui n’a suscité aucune réaction. En voici un rappel : - Code:
-
rem ============================================================================ ' Message autorefermable ' Afficher un message d'information qui se ferme automatiquement après n secondes ' Appel : message_Auto_Close(msg$, duree) rem ============================================================================ message_Auto_Close("Cette fenêtre va se fermer toute seule !!!",5) end rem ============================================================================ ' Script VBS pour afficher un message d'information qui se ferme automatiquement ' apès une durée de duree secondes si l'utilisateur ne ferme pas lui-même la ' fenêtre du message SUB message_Auto_Close(msg$,duree) dim_local f$,g$,d$ f$ = "c:\temp\Msg_Auto_Close.vbs" : ' Fichier temporaire contenant le script g$ = chr$(34) : ' guillemets d$ = str$(duree) FILE_OPEN_WRITE 9999, f$ file_writeln 9999,"Set WshShell = WScript.CreateObject("+g$+"Wscript.Shell"+g$+")" file_writeln 9999,"ret = WshShell.popup("+g$+msg$+g$+" & vbcrlf &" +g$+" Autofermeture dans : "+d$+" secondes"+g$+","+d$+","+g$+"Information"+g$+")" FILE_CLOSE 9999 : ' Fin de l'enregistrement EXECUTE_WAIT f$ : ' Exécution du script FILE_DELETE f$ : ' supprimer le fichier du script END_SUB rem ============================================================================
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 22:36 | |
| Ouh là ! je suis bien loin de mes 20 ans (en avant, pas en arrière ! ) Certes, il y a le Message_Input, mais en british, et surtout tu ne peux pas le positionner où tu veux, il est automatiquement centré. Par contre pour le Msgbox il n'y a apparemment aucun moyen de le positionner, c'est centré d'office. J'ai simplifié les deux subs, il n'y a plus création que d'un seul fichier provisoire d'exécution: - Code:
-
' ============================== SUB Inputbox(Tit$,Txt$,Def$,x,y) ' Affichage d'une boîte de saisie de titre Tit$, texte Txt$, par défaut Def$ ' Position de la boîte en x,y pixels, résultat dans le presse-papier ' Si on clique 'Annuler', la chaîne rendue est vide. DIM_LOCAL scr$,a$,q$: q$ = CHR$(34) scr$ = "C:\Temp\Vbscript.vbs" FILE_OPEN_WRITE 9,scr$ a$ = q$+Txt$+q$+","+q$+Tit$+q$+","+q$+Def$+q$+","+STR$(x*15)+","+STR$(y*15) FILE_WRITELN 9,"res=inputbox("+a$+")" FILE_WRITELN 9,"Set WshShell = WScript.CreateObject("+q$+"WScript.Shell"+q$+")" FILE_WRITELN 9,"WshShell.Run "+q$+"cmd.exe /c echo "+q$+" & res & "+q$+" | clip"+q$+", 0, TRUE" FILE_CLOSE 9 EXECUTE_WAIT "Wscript.exe "+scr$: ' ===== Exécution du script ===== FILE_DELETE scr$ END_SUB ' ============================================================================== SUB Msgbox(Tit$,Txt$,code) ' Affichage d'une msgbox de titre Tit$ et de texte Txt$ ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' PARAMÈTRES (code) 4 valeurs combinables (additionables): ' boutons affichés: ' 0= 'OK' seul ' 1= 'OK', 'Annuler' ' 2= 'Abandonner', 'Recommencer', 'Ignorer' ' 3= 'Oui', 'Non', 'Annuler' ' 4= 'Oui', 'Non' ' 5= 'Recommencer', 'Annuler' ' icône du message: ' 16= message critique ' 32= point d'interrogation ' 48= message d'alerte ' 64= message d'information ' bouton par défaut: ' 0= 1er bouton ' 256= 2ème bouton ' 512= 3ème bouton ' 768= 4ème bouton ' comportement: ' 0= Bloque l'application courante en attente de réponse de l'utilisateur ' 4096= Bloque toutes les applications en attente de réponse ' CODE RETOUR (bouton cliqué): ' ----------- ' 1 'OK' ' 2 'Annuler' ' 3 'Abandonner' ' 4 'Recommencer' ' 5 'Ignorer' ' 6 'Oui' ' 7 'Non' ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DIM_LOCAL scr$,q$: q$ = CHR$(34) scr$ = "C:\Temp\Vbscript.vbs" FILE_OPEN_WRITE 9,scr$ FILE_WRITELN 9,"res=msgbox("+q$+Txt$+q$+","+STR$(code)+","+q$+Tit$+q$+")" FILE_WRITELN 9,"Set WshShell = WScript.CreateObject("+q$+"WScript.Shell"+q$+")" FILE_WRITELN 9,"WshShell.Run "+q$+"cmd.exe /c echo "+q$+" & res & "+q$+" | clip"+q$+", 0, TRUE" FILE_CLOSE 9 EXECUTE_WAIT "Wscript.exe "+scr$: ' ===== Exécution du script ===== FILE_DELETE scr$ END_SUB ' ============================================================================== Pour l'affichage d'un message non bloquant, il y a eu aussi ceci: https://panoramic.1fr1.net/t3686-message-passant?highlight=message+temporaire | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 22:48 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Msgbox/Inputbox Jeu 15 Jan 2015 - 22:52 | |
| Eh bien merci mon cher papydall pour ce joli cadeau, je ne vais pas manquer de l'accrocher au-dessus de mon bureau pour l'avoir en permanence sous les yeux ! Les autres ne savent pas ce qu'ils ratent ! | |
| | | Contenu sponsorisé
| Sujet: Re: Msgbox/Inputbox | |
| |
| | | | Msgbox/Inputbox | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |