PDA

View Full Version : [C#] apertura programma


Easlay93
15-02-2016, 14:50
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication1
{
class Prompt
{
public void avvia(String diablo, String bot)
{

//start process bot

try
{


System.Diagnostics.Process.Start("CMD.exe", bot);
System.Diagnostics.Process prox = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "C:\\Users\\Private\\Desktop\\ros-bot_1.1\\RoS-BoT.exe";
prox.StartInfo = startInfo;
prox.Start();

}
catch (System.ComponentModel.Win32Exception w )
{
Console.WriteLine(w.Message);
Console.WriteLine(w.ErrorCode.ToString());
Console.WriteLine(w.NativeErrorCode.ToString());
Console.WriteLine(w.StackTrace);
Console.WriteLine(w.Source);
Exception e = w.GetBaseException();
Console.WriteLine(e.Message);
}
catch (System.InvalidOperationException c)
{
Console.WriteLine(c.Message);

Console.WriteLine(c.StackTrace);
Console.WriteLine(c.Source);
Exception e = c.GetBaseException();
Console.WriteLine(e.Message);
}

}
}
}


Bot e' la path che gli passo ottenuta da una textBox;
la path sarebbe C:\Users\Private\Desktop\ros-bot_1.1
non riesco a capire come mai non mi apre il programma

tomminno
15-02-2016, 16:06
Se vuoi eseguire il tuo processo all'interno di cmd devi passare /c (o /k a se vuoi che rimanga aperto, ma visto che è hidden direi /c è più adatto):

startInfo.Arguments = "/c C:\\Users\\Private\\Desktop\\ros-bot_1.1\\RoS-BoT.exe";

Easlay93
16-02-2016, 13:17
grazie

animeserie
16-02-2016, 15:43
Funzionerà comunque,
ma mi permetto di sottolineare che è buona pratica racchiudere la tua istanza "prox" di System.Diagnostic.Process in una "Using" per consentirne la Dispose automatica. ;)
altrimenti try catch finally e lo fai esplicitamente.
Funziona lo stesso, giusto per Best Practice.
Ciao

Easlay93
16-02-2016, 16:55
Grazie mille per l'accorgimento,
conoscente anche per caso come si fa a far premere un pulsate di una seconda apllicazione?

Easlay93
17-02-2016, 10:11
up

tomminno
18-02-2016, 07:44
Grazie mille per l'accorgimento,
conoscente anche per caso come si fa a far premere un pulsate di una seconda apllicazione?

Via codice si fa con le Windows Automation API o usando qualche framework costruito sopra come TestStack (https://github.com/TestStack), che ha inglobato il vecchio White (http://white.codeplex.com/).