Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

le sleep est il juste une façon propre de faire un delay?

sinon je n'avais vu du premier oeil, vlax-get-or-create-object

pour instancier un objet je pensais que c'etais seulement vlax-create ou vlax-get pas les 2

eternel decouvrance....

Posté(e)

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

Posté(e)

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.

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é