Comment lancer une aplli DOS en la cachant ?

Comment lancer une aplli DOS en la cachant ? - C#/.NET managed - Programmation

Marsh Posté le 04-12-2003 à 09:01:09    

Bonjour,
 
via mon appli c#, je dois lancer des batch (en fait des scripts DB2, mais passons les détails voulez vous  :D)
 

Code :
  1. ProcessStartInfo v_myStartInfo = new ProcessStartInfo();
  2.       v_myStartInfo.CreateNoWindow = true;
  3.       v_myStartInfo.RedirectStandardError = true;
  4.       v_myStartInfo.UseShellExecute = false;
  5.       v_myStartInfo.RedirectStandardOutput = true;
  6.       v_myStartInfo.FileName = "toto.exe";
  7.       v_myStartInfo.Arguments = "blabla";
  8.       Process v_myProcess = Process.Start(v_myStartInfo);


 
Ca fonctionne mais la fenetre DOS s'affiche et ca fait pas top quoi... [:spamafote]
 
Si quelqu'un a une idée ? [:guiotv2]

Reply

Marsh Posté le 04-12-2003 à 09:01:09   

Reply

Marsh Posté le 04-12-2003 à 19:19:50    

j'l'ai fait au boulot, et la j'ai la flemme de chercher  
si demain j'y pense ...

Reply

Marsh Posté le 04-12-2003 à 21:55:10    

Sous quel OS es-tu ? Parce qu'il faut savoir que la propriété CreateNoWindow ne marche que sous NT/2000/XP et pas sous 98 car cette propriété encapsule le paramètre CREATE_NO_WINDOW de la fonction CreateProcess () de l'API Win 32, paramètre qui n'existe pas sous 98. Il y a une erreur dans la doc du framework qui indique que cette propriété est disponible aussi sous 98.
Si tu veux le faire sous 98, tu dois passer par Win32 et utiliser la fonction CreateProcess() en lui passant le flag DETACHED_PROCESS.
Sinon, si tu es sous NT/2000/XP, initialise en plus la propriété WindowStyle :
 

Code :
  1. v_myStartInfo.WindowStyle = ProcessWindowStyle.Hidden;


Message édité par Harkonnen le 04-12-2003 à 21:57:01

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-12-2003 à 08:43:29    

Harkonnen a écrit :

Sous quel OS es-tu ? Parce qu'il faut savoir que la propriété CreateNoWindow ne marche que sous NT/2000/XP et pas sous 98 car cette propriété encapsule le paramètre CREATE_NO_WINDOW de la fonction CreateProcess () de l'API Win 32, paramètre qui n'existe pas sous 98. Il y a une erreur dans la doc du framework qui indique que cette propriété est disponible aussi sous 98.
Si tu veux le faire sous 98, tu dois passer par Win32 et utiliser la fonction CreateProcess() en lui passant le flag DETACHED_PROCESS.
Sinon, si tu es sous NT/2000/XP, initialise en plus la propriété WindowStyle :
 

Code :
  1. v_myStartInfo.WindowStyle = ProcessWindowStyle.Hidden;




 
Deja testaid bien sur (oublié de le préciser ^^), mais ca ne marche pas.... J'ai l'impression que ca prend le meme format que l'appli appelante :
 
1) J'ai un service (donc qui tourne en tache de fond) qui execute une appli dos : l'appli est aussi invisible
2) J'ai une appli windows Winform normal, j'appelle la meme appli dos (par la meme fonction ^^) et la miracle, elle est visible...
 
bizarre tout ca...
 
Edit:  
*je suis sous 2k
*C'est un service windows, pas un webservice :o


Message édité par ToxicAvenger le 05-12-2003 à 08:44:18
Reply

Marsh Posté le 05-12-2003 à 10:33:25    

ouais bon en fait ca vient de l'appli DOS qui "override" les propriétés du Process .net... (avec une autre appli dos ca fonctionne).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed