Xabi


2075 messages

Membre, Developpeur, LAN

Mardi 13 Septembre 2011 - 11:20 (post édité 1 fois)

Salut les devs,

 

J'en appèle a vous au cas ou vous connaitriez la réponse m^me si je sais que dans l'ensemble vous êtes plus système unix que grosoft mais sait on jamais...

 

Voilà le topo:

pour une appli (php) j'ai un certain nombre d'editions à faire qui se font par l'intermédiaire de fichier de fision word avec des fichier de données csv que l'on génère. Ceci marche bien sauf dans le cas ou word est déjà en train de tourner, provoquant des comportement bizzarre qu'on a du mal a rationnaliser (un coup ca passe un coup non, bref...).

 

Il a donc été décidé de tester si word tourne avant de lancer les éditions (on fait ca avec un activeX Signé qui marche très bien) Seulement notre client étant un peu chiant il ne veux pas voir apparaitre pendant 1/10 de secondes une console windows avnat chaque édition.

 

Connaissez vous un moyen de lancer une commande win (en l'occurence tasklist.exe) en silentMode. j'ai tout essayé ce que je trouve sur le net (/q /s /verysilent toussa toussa) mais rien n'y fait. A moins que ce soit l'activeX a mettre en silencieux mais de ce coté aussi mes recherche furent infructueuses

 

d'avance merci

 

Voici le code

 

function isRunningProcess(process_name) {

    // create a shell object and exec handle

    var shell = new ActiveXObject('WScript.Shell');

    var handle = shell.Exec("tasklist.exe");
    // loop through the output of tasklist.exe

    while (!handle.StdOut.AtEndOfStream) {

        // grab a line of text

        var p = handle.StdOut.ReadLine();

        // split on space

        p = p.split(' ');

        // check for split lines longer than 2

        if (p.length < 2)

            continue;

        // match process_name to this item

        if (p[0].toLowerCase() == process_name.toLowerCase()) {

            // clean up and return true, process running

            shell = null;

            handle = null;

            return true;

        }

     }

    //prossess not running

return false;

}

 

isRunningProcess("winword.exe");


les 2 principes de la réussite :

1- Ne jamais révéler tout son savoir.
Absolute Dreams
Zog Zog !


lemonhead


dirigeant

18016 messages

Fondateur, Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Corpo, Designer, Adjoint (ED)

Mardi 13 Septembre 2011 - 11:37 (post édité 1 fois)

cherche du côté de la commande msdos "start".

 

EDIT : ta commande shell doit avoir des paramètres qui permettent d'indiquer que tu ne veux pas ouvrir de fenêtre de sortie. C'est le cas dans la plupart des langages.


« Lemon est vraiment un Malade... Heureusement qu'il est de notre côté.» (Guzmud)

« Lemon est fort, Lemon est beau, Lemon est sexy, Lemon est omniscient, Lemon est THE Lemon » (Violenconjugal)

« Lemon a un monde à lui dans sa tête » (Im_a_player)

« Putain, ca devient trop ce clan. Bientot on appelera Lemon le Parrain et le clan la Famille. Nawak » (Rumpl)

« Lemon est le seul mec qui préfère qu'on lui dise qu'il a une grosse femme plutôt qu'une grosse bite. » (Thrallscream)

« Lemon vient de me montrer... c'est ENORME !!! » (Seven)

« Lemon est un dieu, et Thrall a une.... enfin bon, je m'égare. » (Titi-fr)

DoBeL


80 messages

Mardi 13 Septembre 2011 - 11:41

personnellement, je regarderais plus sur la méthode que tu utilise pour parser ton fichier word 


In 6 pool we trust !

lemonhead


dirigeant

18016 messages

Fondateur, Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Corpo, Designer, Adjoint (ED)

Mardi 13 Septembre 2011 - 11:50

http://msdn.microsoft.com/en-us/library/d5fk67ky%28v=vs.85%29.aspx

 

var handle = shell.Run ("tasklist.exe", 0, false)


« Lemon est vraiment un Malade... Heureusement qu'il est de notre côté.» (Guzmud)

« Lemon est fort, Lemon est beau, Lemon est sexy, Lemon est omniscient, Lemon est THE Lemon » (Violenconjugal)

« Lemon a un monde à lui dans sa tête » (Im_a_player)

« Putain, ca devient trop ce clan. Bientot on appelera Lemon le Parrain et le clan la Famille. Nawak » (Rumpl)

« Lemon est le seul mec qui préfère qu'on lui dise qu'il a une grosse femme plutôt qu'une grosse bite. » (Thrallscream)

« Lemon vient de me montrer... c'est ENORME !!! » (Seven)

« Lemon est un dieu, et Thrall a une.... enfin bon, je m'égare. » (Titi-fr)

DoBeL


80 messages

Mardi 13 Septembre 2011 - 11:59 (post édité 1 fois)

utiliser ActiveX pour parser un doc WordConfus

 

je pense que tu devrais plus regarder sur des trucs dans le genre :

http://www.phpclasses.org/package/3553-PHP-Edit-Microsoft-Word-documents-using-COM-objects.html

 

(après c'est qu'un avis personnel)

 

 

EDIT: j'ai pas regardé le code qu'il y avait dedans mais bon, ça se trouve ils font pareils x)


In 6 pool we trust !

Xabi


2075 messages

Membre, Developpeur, LAN

Mardi 13 Septembre 2011 - 12:00

lemonhead a écrit :

http://msdn.microsoft.com/en-us/library/d5fk67ky%28v=vs.85%29.aspx

 

var handle = shell.Run ("tasklist.exe", 0, false)


J'ai déjà essayé ceci (param 7 pour run en minimized) ca fonctionne mais ne permet pas de recuperer réellement un "handle". manifestement seule la commande Exec le permet, et elle ne dispose pas d'autant de parametres. J'en ai marre de ma casser le dents chaque jour sur du billou Content. Il va surement falloir que je m'oriente vers cette methode et trouver un moyen de récuperer la sortie de ce biniou.

 

Pour ce qui est de chercher du coté de la manière dont est générée le doc c'est une fausse piste car je ne suis que "client" de ces documents et n'ai aucun contrôle sur ces fichiers.


les 2 principes de la réussite :

1- Ne jamais révéler tout son savoir.
Absolute Dreams
Zog Zog !


Xabi


2075 messages

Membre, Developpeur, LAN

Mardi 13 Septembre 2011 - 12:02 (post édité 1 fois)

DoBeL a écrit :

utiliser ActiveX pour parser un doc WordConfus

 

je pense que tu devrais plus regarder sur des trucs dans le genre :

http://www.phpclasses.org/package/3553-PHP-Edit-Microsoft-Word-documents-using-COM-objects.html

 

(après c'est qu'un avis personnel)

 

 

EDIT: j'ai pas regardé le code qu'il y avait dedans mais bon, ça se trouve ils font pareils x)


Je n'ai pas de controle sur la solution a utiliser on est en phase finale de recette et ca doit aller vite. Merci donc d'eviter les trolls. Je sais pertinament que ce n'est pas la methode la plus directe pour faire cela. SI ca tenais qu'a moi on serait passé par un lib PDF pour php et ca serait passé comme une lettre à la poste seulement voila le client a ses modèle de doc et on doit faire avec

 

EDIT et je ne parse pas de doc avec l'activeX ce sont des macro VBA qui se chargent de générer le document

tout ce que je cherche a faire c'est checker un process en mode silencieux.


les 2 principes de la réussite :

1- Ne jamais révéler tout son savoir.
Absolute Dreams
Zog Zog !


lemonhead


dirigeant

18016 messages

Fondateur, Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Corpo, Designer, Adjoint (ED)

Mardi 13 Septembre 2011 - 14:12 (post édité 3 fois)

Et ma première idée, un start /MIN tasklist.exe, ça te convient pas ?

 

EDIT : au pire, si t'as besoin d'exploiter la sortie, tu peux faire un start /MIN "tasklist.exe >sortie.txt"

 

EDIT 2 : encore mieux : cmd /C "tasklist.exe >sortie.txt"

ça marche très bien, et ça n'ouvre aucune fenetre.


« Lemon est vraiment un Malade... Heureusement qu'il est de notre côté.» (Guzmud)

« Lemon est fort, Lemon est beau, Lemon est sexy, Lemon est omniscient, Lemon est THE Lemon » (Violenconjugal)

« Lemon a un monde à lui dans sa tête » (Im_a_player)

« Putain, ca devient trop ce clan. Bientot on appelera Lemon le Parrain et le clan la Famille. Nawak » (Rumpl)

« Lemon est le seul mec qui préfère qu'on lui dise qu'il a une grosse femme plutôt qu'une grosse bite. » (Thrallscream)

« Lemon vient de me montrer... c'est ENORME !!! » (Seven)

« Lemon est un dieu, et Thrall a une.... enfin bon, je m'égare. » (Titi-fr)

Xabi


2075 messages

Membre, Developpeur, LAN

Mardi 13 Septembre 2011 - 14:52

lemonhead a écrit :

Et ma première idée, un start /MIN tasklist.exe, ça te convient pas ?

 

EDIT : au pire, si t'as besoin d'exploiter la sortie, tu peux faire un start /MIN "tasklist.exe >sortie.txt"

 

EDIT 2 : encore mieux : cmd /C "tasklist.exe >sortie.txt"

ça marche très bien, et ça n'ouvre aucune fenetre.


Oui c'est ce que je suis en train de voir avec l'objet FSO on verra si ca abouti... quelle usine a gaz pour eliminé une pov fenetre d'un dizieme de seconde


les 2 principes de la réussite :

1- Ne jamais révéler tout son savoir.
Absolute Dreams
Zog Zog !


alexscott


dirigeant

11648 messages

Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Adjoint (ED)

Mardi 13 Septembre 2011 - 14:58

ca t'interesse une réponse avec cygwin Très content ?


Que le citron soit pressé ou qu'il vente, il jute.

lemonhead


dirigeant

18016 messages

Fondateur, Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Corpo, Designer, Adjoint (ED)

Mardi 13 Septembre 2011 - 15:24

@xabi, j'ai fait quelques essais, la meilleure méthode, c'est quand meme de récupérer la sortie dans un fichier

http://forum.hardware.fr/hfr/Programmation/VB-VBA-VBS/recuperer-resultat-commande-sujet_122686_1.htm

 

@alex, moi aussi j'aurais pu lui donner des solutions à base de cygwin, grep, awk, vu que j'ai récupéré des petits programmes sympa sous DOS qui imitent le comportement de ces commandes linux (assez bien d'ailleurs).


« Lemon est vraiment un Malade... Heureusement qu'il est de notre côté.» (Guzmud)

« Lemon est fort, Lemon est beau, Lemon est sexy, Lemon est omniscient, Lemon est THE Lemon » (Violenconjugal)

« Lemon a un monde à lui dans sa tête » (Im_a_player)

« Putain, ca devient trop ce clan. Bientot on appelera Lemon le Parrain et le clan la Famille. Nawak » (Rumpl)

« Lemon est le seul mec qui préfère qu'on lui dise qu'il a une grosse femme plutôt qu'une grosse bite. » (Thrallscream)

« Lemon vient de me montrer... c'est ENORME !!! » (Seven)

« Lemon est un dieu, et Thrall a une.... enfin bon, je m'égare. » (Titi-fr)

Xabi


2075 messages

Membre, Developpeur, LAN

Mardi 13 Septembre 2011 - 15:32 (post édité 1 fois)

alexscott a écrit :

ca t'interesse une réponse avec cygwin Très content ?


Je sais pas ce que c'est mais dit toujours

 

au final j'ai trouvé avec les FSO mais quel bordel. en plus il semblerait que la motier des methodes de ce truc fonctionnent pas

 

pour le curieux voila le bouzin

 

function isRunningProcess(process_name) {

   // create a shell object and exec handle

   var objFSO = new ActiveXObject("Scripting.FileSystemObject");

   var shell = new ActiveXObject('WScript.Shell');

   var objName = objFSO.GetTempName();

   var handle = shell.Run('cmd /c "tasklist > temp.txt"',0 , true);

   var objTextFile = objFSO.OpenTextFile('temp.txt',1);

   // loop through the output of tasklist.exe

   while (!objTextFile.AtEndOfStream) {

       // grab a line of text

              var p = objTextFile.ReadLine();

       // split on space

       p = p.split(' ');

       // check for split lines longer than 2

       if (p.length < 2)

           continue;

       // match process_name to this item

       if (p[0].toLowerCase() == process_name.toLowerCase()) {

           // clean up and return true, process running

           shell = null;

           handle = null;

           return true;

       }

     }

   //prossess not running

   return false;

}

 

merci lemon pour la syntaxe d'une console silence 

 

EDIT en tout cas merci a vous deux et même si je suis pas un pinguoin dans l'âme je dois reconnaitre que ce genre d'opérations qui semble parfaitement relou sous win est un jeu d'enfant sous unix mais que voulez, on me demande pas de choisir des solutions technique mais de faire avcc les moyen du bord.

 

merci a tous ce petit topic "emulation" m'aura bien aidé a réfléchir dans la bonne direction



les 2 principes de la réussite :

1- Ne jamais révéler tout son savoir.
Absolute Dreams
Zog Zog !


Papaille


289 messages

Membre, LAN, Retraité

Mardi 13 Septembre 2011 - 17:55

J'ai po compris la question Content...

ok je sorsTongue out


Maudit soit le Suarez, puisse son ame griller en enfer pour les 4 prochaines années.

alexscott


dirigeant

11648 messages

Dirigeant, Membre, Developpeur, LAN-MASTER, Streamer, Adjoint (ED)

Mardi 13 Septembre 2011 - 18:07

cygwin


Que le citron soit pressé ou qu'il vente, il jute.

Arkane


626 messages

Membre, Developpeur

Mercredi 14 Septembre 2011 - 16:11

Mince alors, il y a de la propagande Unix ici ! Content

Liens utiles : Rechercher - Droits d'accès