Aller au contenu

Retour d'une application externe


Fraid

Messages recommandés

Bonjour,

 

Je lance des petites applications dans certains de mes lisp et attend le retour de cette façon

 


       (startapp "C:\\Data\\appli.exe")

(while (= (findfile "C:\\Data\\retour.txt") nil)
(princ)
)

 

donc tant que le fichier de retour n'est pas ecrit on reste coincé dans le while.

cela fonctionne. (a coup de delay bien placés)

comme c'est souvent des invites utlisateurs cela peut etre assez long

mais du coup y a t'il un accès continue au disque dur pendant le while?

et si l'appli échoue dans l’écriture le while continue....

j'avais pensé à utiliser le registre windows, est ce mieux?

il y a aussi le presse papier mais la c'est plus compliqué...

connaissez vous d'autre manière?

 

merci

Lien vers le commentaire
Partager sur d’autres sites

connaissez vous d'autre manière?

 

 

Bonjour,

 

Avec CECI?

 

(defun Sleep (n / lastCmdecho ) 
   (setq lastCmdecho (getvar  "cmdecho"))
   (setvar "cmdecho" 0)
   (eval (list  'VL-CMDF "_.delay" n ) )
   (setvar "cmdecho" lastCmdecho )

)

(defun C:ExternalApplication (  / *error* )
   (defun *error* ( msg / ) 
       (if (not (null msg ) )  (progn (princ "\nC:ExternalApplication:*error*: " ) (princ msg ) (princ "\n")   ) )
   )
   (setq path "C:\\Windows\\")
   (setq app (strcat "Notepad.exe" ) )
   (print (strcat "Run " (strcat path app ) ) )

   (setq Shell (vlax-get-or-create-object "Wscript.Shell"))
   (setq AppHandle(vlax-invoke-method Shell 'Exec (strcat path app ) ))
   (while ( = (vlax-get-property AppHandle 'Status ) 0)
       (Sleep 1000)
   )`
   (vlax-release-object Shell) 
   (print "Process finished" )
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Je ne sais pas quelle valeur tu attends en retour, mais tu peux aussi verifier si le process est toujours actif.

 

Un exemple qui détruit un process en cours...

  (defun kill(qui / item meth1 meth2 obj WMI)
   (setq WMI (vlax-create-object "WbemScripting.SWbemLocator")
  meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil)
  meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_Process")
   )
   (vlax-for item meth2
     (and (setq obj (vlax-get item 'CommandLine)) (vl-string-search (strcase qui) (strcase obj))
(if (vl-catch-all-error-p (vl-catch-all-apply 'vlax-invoke (list item 'Terminate)))
  (vlax-invoke item 'Terminate)
)
     )
   )
   (foreach item (list WMI meth1 meth2)
     (vlax-release-object item)
   )
 )

Par exemple

(kill "PDFCreator.exe")

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Merci

 

très utile aussi de killer un process

 

généralement les retours sont des String écrit dans un ptit fichier txt

facile à lire et à écrire.

ou des fois c'est sans retour du coup je lui fait faire un texte commeme

mes applis sont en java

6 mois que je suis devenus un adepte

j'avais essayer quasiment tout les autres langage orienté objet

j'abandonnais rapidement incapable de comprendre l'instanciation.

maintenant je ne comprend pas pourquoi je ne comprenais pas.

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité