cs_tibo007
Messages postés4Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention 9 février 2007
-
7 févr. 2007 à 18:47
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
10 févr. 2007 à 00:29
Bonjour à tous,
J'ai un petit problème qui est en train de me bouffer mon temps.
Je dois lancer a partir d'une appli .net une executable stockée dans un dossier avec nom a rallonge.
Je vous présente mon code afin de mieux comprendre la bete:
string halfpath = Application.StartupPath.Normalize(); //je recupere le chemin de mon appli
A ce moment là, mon chemin est de la forme :
"C:\\Documents and Settings\\KpTn\\Bureau\\monappli\\appli\\bin\\Debug"
Je cherche ensuite a mettre des guillements autour des noms avec espaces :
string[] tmp1=halfpath.Split('\\');
string result = "";
for (int i = 0; i < tmp1.Length; i++)
{
if(tmp1[i].ToString().Contains(" "))
result = result + """ + tmp1[i].ToString() + """ + @"";// si nom long je rajoute les guillements autour
else
result = result + tmp1[i].ToString() + @""; // sinon je laisse comme c'etait
}
"C:\\"Documents and
Settings"\\KpTn\\Bureau\\monappli\\appli\\bin\\Debug\\Resources\\ffmpeg.exe
-i C:\\test.avi C:\\result.flv"
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(path);
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
try
{
System.Diagnostics.Process.Start(psi); // je lance ma commande
}
catch (Exception exc)
{ }
Et bien sur ca ne marche pas il me dit qu'il ne trouve pas le fichier alors que si je tape la commande a la main dans une fenetre DOS, en enlevant bien sur les / en trop, ca tourne impecc...
J'espere que quelqu'un pourra me donner quelques indications et pourra par la meme occaz me donner des astuces quant à la maniere dont je traite ce cas!!
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 8 févr. 2007 à 08:41
Hello,
Tu te complique la tâche. il n'y a pas besoin de mettre des guillemets, le psi se charge de ça.
Par contre, pour ajouter des arguments à ta commande, il faut les passer dans psi.Arguments.
En gros :
string halfpath = Application.StartupPath.Normalize();
string path = halfpath + @"Resources\ffmpeg.exe"
On obtient:
"C:\Documents and Settings\KpTn\Bureau\monappli\appli\bin\Debug\Resources\ffmpeg.exe"
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(path);
psi.Arguments = @"-i C:\test.avi C:\result.flv";
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
try
{
System.Diagnostics.Process.Start(psi); // je lance ma commande
}
catch (Exception exc)
{ }
cs_tibo007
Messages postés4Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention 9 février 2007 8 févr. 2007 à 09:14
SharpMao, si tu passes sur Lyon, hésite pas a me contacter pour que je te paye un coup à boire!!!!
Merci encore pour ta rapidité.
A bientot pour d'autres questions...
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 10 févr. 2007 à 00:29
Salut,
J'en profite pour plaider un coup en la faveur de mon amie Path.Combine :
string path = halfpath + @"Resources\ffmpeg.exe"
> string path Path.Combine(halfpath, @"Resources\ffmpeg.exe");