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
» Logiciel de planétarium.
Wordpad Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Wordpad Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Wordpad Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Wordpad Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Wordpad Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Wordpad Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Wordpad Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Wordpad Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Wordpad Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Wordpad Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Wordpad Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Wordpad Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Wordpad Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Wordpad Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Wordpad Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

 

 Wordpad

Aller en bas 
+2
Klaus
JL35
6 participants
AuteurMessage
JL35




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

Wordpad Empty
MessageSujet: Wordpad   Wordpad EmptyDim 29 Avr 2018 - 10:40

Code:
DIM wpd$
wpd$ = "C:\Windows\System32\write.exe": ' Wordpad
EXECUTE_WAIT wpd$
TERMINATE
Pourquoi est-ce que l'on sort tout de suite de l'Execute_Wait, sans attendre la fermeture de write.exe ??
Revenir en haut Aller en bas
Klaus

Klaus


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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyDim 29 Avr 2018 - 11:01

Je ne vois qu'une explication: c'est un bug.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyDim 29 Avr 2018 - 11:11

Bonjour Klaus, tu me rassures (si on peut dire), et là je m'absente pour la journée.
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyDim 29 Avr 2018 - 12:40

Je viens d'essayer, c'est plutôt subtil, 'execute_wait' attend bien la fin du fichier, mais seulement si c'est une application panoramic! Même chose avec une version plus ancienne(0927i5) Neutral
Revenir en haut Aller en bas
papydall

papydall


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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyDim 29 Avr 2018 - 13:15

Remplacer le TERMINATE par END.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyDim 29 Avr 2018 - 13:37

Citation :
Remplacer le TERMINATE par END.
Ben... non, Papydall ! Si JL35 a mis un TERMINATE à la fin, c'est justement pour mettre le problème en évidence, avec peu de lignes. Ce qui est clair, c'est que Panoramic, contrairement à ce que laisse entendre le mot-clé et à ce que dit la doc:
Citation :
La commande EXECUTE_WAIT F exécute le fichier F et attend la fin.
Donc, en toute logique, lors de l'exécution de la commande Panoramic suivante, on doit être assuré que le programme lancé a été terminé. Sinon, il n'y a aucune différence avec la commande EXECUTE. D'ailleurs, facile à vérifier: place une commande MESSAGE après EXECUTE_WAIT, et tu verras que le message vient alors que le programme lancé est toujours actif.

C'est bien un bug.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Navigateur

Navigateur


Nombre de messages : 42
Age : 76
Localisation : Les Clayes-sous-bois 78340
Date d'inscription : 02/09/2016

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyDim 29 Avr 2018 - 16:04

Bonjour,

Le problème vient du fait que le nom de la tâche de "write.exe" une fois lancé est "wordpad.exe"
Comme a priori EXECUTE_WAIT recherche une tâche  dont le nom correspond au nom qu'on lui a transmis, soit "write.exe", il suppose qu'elle est (déjà) terminée et revient aussitôt.

Pour le vérifier, copier c:\windows\system32\write.exe dans votre répertoire courant et renommer le en wordpad.exe
et exécuter le programme suivant :

wpd$ = "wordpad.exe"
EXECUTE_WAIT wpd$
terminate

Maintenant, la fenêtre Panoramic reste ouverte tant que wordpad n'est pas fermé.

Navigateur


PS : vous pouvez utiliser la commande tasklist  /fi "imagename eq  nom_image" pour voir si nom_image est en cours d'exécution.
Revenir en haut Aller en bas
Klaus

Klaus


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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyDim 29 Avr 2018 - 16:58

Dans ce cas, il suffira de créer un petit fichier BAT qui, lui, va lancer WRITE.exe. Et on lance de fichier BAT avec EXECUTE_WAIT. Ca devrait résoudre le problème.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyDim 29 Avr 2018 - 18:31

Merci Navigateur, tu as mis le doigt dessus, c'est que c'est un cas particulier de nom... et donc ce n'est pas un bug.
(je lance write.exe et dans tasklist j'ai wordpad.exe actif)
Et connaissant le problème, la solution est facile à imaginer.
Merci à tous pour vos remarques.
Revenir en haut Aller en bas
JL35




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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyDim 29 Avr 2018 - 19:11

Ce n'est peut-être pas aussi simple que ce que je pensais...

@Klaus: le fait de passer par un fichier .bat ne change rien, ça rend la main tout de suite.

Si après l'Execute_Wait je fais une boucle temporisée avec examen de tasklist (pour voir si wordpad.exe est présent),
du genre:
Code:
 EXECUTE_WAIT wpd$: ' write.exe
 a$ = "wordpad.exe"
 WHILE INSTR(a$,"wordpad.exe") > 0
    PAUSE 200
    EXECUTE_WAIT "cmd.exe /c tasklist.exe | clip": a$ = CLIPBOARD_STRING_PASTE$
 END_WHILE
ça marche, mais ça fait apparaître une fenêtre noire à chaque passage dans la boucle... très inesthétique !
Revenir en haut Aller en bas
Klaus

Klaus


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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyDim 29 Avr 2018 - 19:16

Comment lances-tu le fichier BAT ? Car, en tout état de cause, le programme lancé doit être CMD.exe.Il faut peut-être ajouter la commande PAUSE à la fin du fichier. Si tu lances CMD avec l'option /C puis le nom du fichier BAT, le seul processus lancé par Panoramic sera alors CMD.exe et il reste actif tant que PAUSE n'est pas validé.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyDim 29 Avr 2018 - 19:35

Je lance le bat comme d'habitude: cmd.exe /c xxx.bat, il me rend la main tout de suite.

J'ai essayé autre chose, un peu lourd et sans doute pas très élégant, mais ça marche et je n'ai pas trouvé mieux: supprimer l'apparition de la fenêtre noire à chaque boucle en passant par un script vbs (les chemins de fichiers sont à adapter):
Code:
DIM wpd$,wba$,vb$,q$,a$
wpd$ = "C:\Windows\System32\write.exe"
wba$ = "Z:\word.bat"
vb$ = "Z:\vb.vbs"
q$ = CHR$(34)

EXECUTE_WAIT wpd$: ' -> Z:\Document.rtf
FILE_OPEN_WRITE 1,wba$: ' .BAT, provisoire
    FILE_WRITELN 1,"@echo off"
    FILE_WRITELN 1,"tasklist.exe | clip"
FILE_CLOSE 1
FILE_OPEN_WRITE 1,vb$: ' script vbs, provisoire
    FILE_WRITELN 1,"CreateObject("+q$+"Wscript.Shell"+q$+").Run "+q$+wba$+q$+",0,True"
FILE_CLOSE 1
a$ = "wordpad.exe"
WHILE INSTR(a$,"wordpad.exe") > 0
    PAUSE 200
    EXECUTE_WAIT "WSCRIPT.exe "+vb$: a$ = CLIPBOARD_STRING_PASTE$
END_WHILE
DELETE wba$: DELETE vb$
stop
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyLun 30 Avr 2018 - 0:04

Je procède de cette manière pour mon projet, mais je ne sais pas si ça va aller pour le tien:
Code:
DIM wpd$
wpd$ = "C:\Windows\System32\write.exe": ' Wordpad
EXECUTE_WAIT wpd$: ' write.exe

repeat : until handle_form("Document - WordPad")>0 :' attendre le démarrage de wordpad
WHILE handle_form("Document - WordPad") > 0 : END_WHILE :' attendre la cloture de wordpad
print "Worpad arrêté"
Revenir en haut Aller en bas
Klaus

Klaus


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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyLun 30 Avr 2018 - 2:04

Voici une façon "propre" de lancer Write.exe (ou n'importe quoi d'autre...), en attendant la fiin du programme lancé et sans fenêtre DOS noire:
Code:
DIM wpd$
wpd$ = "C:\Windows\System32\write.exe": ' Wordpad
file_open_write 1,"wpd.bat"
file_writeln 1,"echo off"
file_writeln 1,"start "+wpd$
file_writeln 1,":WAITLOOP"
file_writeln 1,"tasklist /FI "+chr$(34)+"IMAGENAME eq wordpad.exe"+chr$(34)+" 2>NUL | find /I /N "+chr$(34)+"wordpad.exe"+chr$(34)+">NUL"
file_writeln 1,"if "+chr$(34)+"%ERRORLEVEL%"+chr$(34)+"=="+chr$(34)+"0"+chr$(34)+" goto RUNNING"
file_writeln 1,"goto NOTRUNNING"

file_writeln 1,":RUNNING"
file_writeln 1,"ping"
file_writeln 1,"goto WAITLOOP"

file_writeln 1,":NOTRUNNING"
file_close 1

file_open_write 1,"wpd.vbs"
file_writeln 1,"CreateObject("+chr$(34)+"Wscript.Shell"+chr$(34)+").Run "+chr$(34)+"wpd.bat"+chr$(34)+",0,True"
file_close 1

EXECUTE_WAIT "wpd.vbs"
file_delete "wpd.bat"
file_delete "wpd.vbs"
TERMINATE                                            

Exercice:
transformer cela en une SUB du genre ExecuteAndWait(prog$)...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyLun 30 Avr 2018 - 9:46

@silverman
Merci pour la méthode, élégante, succincte, et qui marche parfaitement chez moi (mais il fallait y penser, pas évident) !

Mais je vais me faire également une Sub avec la méthode Klaus, qui a l'avantage d'être universelle et de supprimer cette fichue fenêtre noire intempestive pour les autres cas.

En tout cas, merci à tous les deux.

PS ça marche Klaus, mais j'ai quand même la fenêtre noire d'exécution de Cscript.exe...
Finalement, et comme le problème est très particulier et ne se pose a priori qu'avec write.exe (qui est enregistré comme wordpad à l'exécution), je vais utiliser la méthode silverman efficace et peu encombrante (j'ai simplement ajouté une Pause de 300 dans le While/End_While pour que ça ne mouline pas trop vite).
Revenir en haut Aller en bas
Minibug

Minibug


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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyLun 30 Avr 2018 - 10:16

Et pourquoi ne pas appeler directement WORDPAD comme le suggérait Navigateur ?

Code:

wpd$ = "wordpad.exe"
EXECUTE_WAIT wpd$
terminate

J'ai testé et ça marche très bien !
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyLun 30 Avr 2018 - 10:16

Citation :
j'ai quand même la fenêtre noire d'exécution de Cscript.exe...
C'est WScript, pas CScript... et je n'ai aucune fenêtre noire. Il ne peut pas y en avoir, avec cette technique.

Je fais faire une SUB autonome qui va gérer tous les cas.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyLun 30 Avr 2018 - 10:19

Ben... oui, Minibug, tu as raison ! Ca marche ! Mais pourquoi est-on allé chercher midi à 14 heures ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyLun 30 Avr 2018 - 10:42

Juste pour le plaisir: le code suivant est la conversion en SUB de ma solution ci-dessus, en tenant compte de la remarque de Minibug concernant le nom du fichier.
Code:
' lancer_wordpad_et_attendre.bas

DIM wpd$
wpd$ = "wordpad.exe": ' Wordpad
ExecuteAndWait(wpd$)
terminate

sub ExecuteAndWait(prog$)
  file_open_write 1,"temp.bat"
  file_writeln 1,"echo off"
  file_writeln 1,"start "+prog$
  file_writeln 1,":WAITLOOP"
  file_writeln 1,"tasklist /FI "+chr$(34)+"IMAGENAME eq "+prog$+chr$(34)+" 2>NUL | find /I /N "+chr$(34)+prog$+chr$(34)+">NUL"
  file_writeln 1,"if "+chr$(34)+"%ERRORLEVEL%"+chr$(34)+"=="+chr$(34)+"0"+chr$(34)+" goto RUNNING"
  file_writeln 1,"goto NOTRUNNING"

  file_writeln 1,":RUNNING"
  file_writeln 1,"ping"
  file_writeln 1,"goto WAITLOOP"

  file_writeln 1,":NOTRUNNING"
  file_close 1

  file_open_write 1,"temp.vbs"
  file_writeln 1,"CreateObject("+chr$(34)+"Wscript.Shell"+chr$(34)+").Run "+chr$(34)+"temp.bat"+chr$(34)+",0,True"
  file_close 1

  EXECUTE_WAIT "temp.vbs"
  file_delete "temp.bat"
  file_delete "temp.vbs"
end_sub
Cette sub pourra être aisément adapté au cas où le programme à exécuter serait dans un autre dossier, via FILE_EXTRACT_NAME pour récupérer le nom de l'EXE pour les tests dans le fichier vbs.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyLun 30 Avr 2018 - 12:17

Et finalement, concernant write.exe, j'avais dû me dire sans doute "Poujrquoi faire simple quand on peut faire compliqué ?"
Alors que la solution était toute simple, comme l'a fait remarquer Navigateur, et il n'est même pas besoin de recopier write.exe dans le répertoire courant, ça marche directement comme ceci:
Code:
EXECUTE_WAIT "Wordpad.exe"
Et c'est tout !
Que de temps perdu pour rien...
Revenir en haut Aller en bas
Navigateur

Navigateur


Nombre de messages : 42
Age : 76
Localisation : Les Clayes-sous-bois 78340
Date d'inscription : 02/09/2016

Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad EmptyLun 30 Avr 2018 - 13:07

Bonjour,

@ JL35, copier le programme avec son "vrai" nom, c'est la solution la plus simple, si on veut bien créer une copie, pas exemple s'elle n'est pas trop volumineuse.

En fait, j'ai regardé ce problème dans le cadre de mon apprentissage de Panobasic. Merci à klaus pour ses interventions/solutions qui m'ont permis de réviser mes connaissances sur les commandes des fichiers batch.

Et pour continuer d'alimenter ce sujet (ce n'est pas une perte de temps !) et comme exercice d'utilisation des FNC, j'ai essayé de trouver une solution sans passer par l'étape vbs.

Code :
Code:
DIM wpd1$, wpd2$
DIM cmd$, qu$, sp$

qu$   = chr$(34)
sp$   = " "
wpd1$ = "c:\windows\system32\write.exe" : ' Write
wpd2$ = "wordpad.exe"                   : ' Write alias

Running_Test_bat_Make()
EXECUTE_WAIT2(wpd1$, wpd2$)
TERMINATE  


FNC EXECUTE_WAIT2(file_id$, file_alias$)
    cmd$ = "Running_Test.bat | " + file_id$ + sp$ + file_alias$
    EXECUTE_WAIT cmd$
END_FNC


FNC Running_Test_bat_Make()
  cmd$ = "FOR /F %%x IN ('tasklist /NH /FI " + qu$ + "IMAGENAME eq %EXE2%" + qu$ + "') DO IF /I %%x NEQ %EXE2% exit /B"
  file_open_write 1,"Running_Test.bat"
  file_writeln    1, "@echo off"
  file_writeln    1, "set EXE1=%1"
  file_writeln    1, "set EXE2=%2"
  file_writeln    1, "%EXE1%"
  file_writeln    1, ":Running_Test"
  file_writeln    1, "timeout /T 1 /NOBREAK >nul"
  file_writeln    1, cmd$
  file_writeln    1, "goto Running_Test"
  file_close      1  
END_FNC

Navigateur

PS : si on a créé une fois pour toute "Running_Test.bat", on peut supprimer la FNC correspondante et son appel
Revenir en haut Aller en bas
Contenu sponsorisé





Wordpad Empty
MessageSujet: Re: Wordpad   Wordpad Empty

Revenir en haut Aller en bas
 
Wordpad
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» EXECUTE_WAIT Wordpad
» Changer le font de wordpad à distance

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: