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
» Fonctionnement du caret_x_position(N)
par Jack Hier à 20:36

» Problèmes en cours.
par Jack Hier à 20:31

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Hier à 19:55

» Exemple d'une nouvelle version d'un GRID
par Minibug Hier à 17:36

» Comment faire fonctionner \qj en RTF ?
par jjn4 Mer 12 Déc 2018 - 19:25

» Mais où est donc passé Klaus ?!
par Jicehel Mer 12 Déc 2018 - 13:38

» Problème avec SaveStringList.
par Klaus Mer 12 Déc 2018 - 12:14

» Je suis de retour !
par Klaus Mer 12 Déc 2018 - 12:10

» Connexion au forum
par mindstorm Mer 5 Déc 2018 - 19:09

» Version instantanée V 0.9.29i5 du 17/11/2018
par silverman Ven 30 Nov 2018 - 10:37

» imprimer avec Print.dll
par JL35 Jeu 29 Nov 2018 - 21:33

» Convertisseur Décimal ---> Binaire, Octal, Hexadécimal, ...
par Minibug Dim 25 Nov 2018 - 15:37

» Impression de documents
par JL35 Ven 23 Nov 2018 - 19:45

» Logiciel de soutien scolaire.
par Marc Jeu 22 Nov 2018 - 20:51

» Logiciel de soutien en langues.
par Marc Jeu 22 Nov 2018 - 19:39

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
31      
CalendrierCalendrier

Partagez | 
 

 Wordpad

Aller en bas 
AuteurMessage
JL35



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

MessageSujet: Wordpad   Dim 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
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Wordpad   Dim 29 Avr 2018 - 11:01

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



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

MessageSujet: Re: Wordpad   Dim 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
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 724
Age : 46
Localisation : Picardie
Date d'inscription : 18/03/2015

MessageSujet: Re: Wordpad   Dim 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
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Wordpad   Dim 29 Avr 2018 - 13:15

Remplacer le TERMINATE par END.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

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

MessageSujet: Re: Wordpad   Dim 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
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Navigateur

avatar

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

MessageSujet: Re: Wordpad   Dim 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
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Wordpad   Dim 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
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Wordpad   Dim 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
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Wordpad   Dim 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
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Wordpad   Dim 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
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Wordpad   Dim 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
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 724
Age : 46
Localisation : Picardie
Date d'inscription : 18/03/2015

MessageSujet: Re: Wordpad   Lun 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
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Wordpad   Lun 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
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Wordpad   Lun 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
Voir le profil de l'utilisateur
Minibug

avatar

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

MessageSujet: Re: Wordpad   Lun 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
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Klaus

avatar

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

MessageSujet: Re: Wordpad   Lun 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
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Wordpad   Lun 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
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Wordpad   Lun 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
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



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

MessageSujet: Re: Wordpad   Lun 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
Voir le profil de l'utilisateur
Navigateur

avatar

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

MessageSujet: Re: Wordpad   Lun 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
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Wordpad   

Revenir en haut Aller en bas
 
Wordpad
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» problème de convertion de fichier txt ou log vers GPX

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: