Uruchamianie programu z parametrami

0

Potrzebuje uruchomic program ktory na wejsciu przyjmoje trzy parametry, jak to zrobic?

 
System.Diagnostics.Process.Start(Application.StartupPath + @"ścieżka do programu" + parametr1 + parametr2 + parametr3);
0
System.Diagnostics.ProcessStartInfo process = new System.Diagnostics.ProcessStartInfo(Application.StartupPath + @"\updater.exe");
                process.Arguments = @"http://www.google.pl/""Parametr1""Parametr2";
                System.Diagnostics.Process.Start(process);

Tak nie działa.

0

Tak nie działa.

Jak nie działa jak działa. Lepiej sprawdź (wyświetl sobie) jaką masz wynikową ścieżkę do programu i czy jest tam ten program.

using System;
using System.Diagnostics;

class Program {

  static void Main()
  {
     string windir = Environment.GetFolderPath(Environment.SpecialFolder.System);
     var pinfo = new ProcessStartInfo(windir+@"\notepad.exe");
     pinfo.Arguments = windir+@"\drivers\etc\hosts";
     Process.Start(pinfo);
  }
}
0

Program "update.exe" jest w folderze z glownym programem ktory przekazuje parametry.

Tak program update.exe odbiera parametry:

static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Main(args));
        }
 
 
public Main(string[] args)
        {
            InitializeComponent();

            arg = args;

            if (arg.Length > 0)
            {
                url = arg[0];
                old_exe = arg[1];
                new_exe = arg[2];
            }
        }

A tak w glownym programie uruchamiam program update.exe

 
private void aktualizuj_Click(object sender, EventArgs e)
        {
            if (File.Exists(Application.StartupPath + @"\updater.exe"))
            {
                System.Diagnostics.ProcessStartInfo process = new System.Diagnostics.ProcessStartInfo(Application.StartupPath + @"\updater.exe");
                process.Arguments = @"adres do pliku""nazwa1""nazwa2";       //3 parametry
                System.Diagnostics.Process.Start(process);
            }
0

A po wpisaniu w wiersz poleceń: updater.exe adres do pliku"nazwa1"nazwa2 działa?
Bo moim zdaniem ten ciąg znaków to jest jeden, a nie trzy parametry.

0

Program updater jest programem okienkowym ale przy kompilacji w trybie debug podaje każdy parametr w "" i odstęp przerwy miedzy nimi i jest ok. Kiedy natomiast wywołuje updater z innego programu chyba nie za dobrze przesyłają się te parametry

0

Moim zdaniem parametry powinny być oddzielone spacjami, a nie cudzysłowami jak u Ciebie.

0

Czyli np. tak:

 
process.Arguments = @"adres do pliku" + "" + "nazwa1" + "" + "nazwa2";

?

0
                System.Diagnostics.Process.Start(process);
                Application.Exit()              // a czy ta linijka nie sprawia ze program nie zdarzy przeslac parametrow zanim sie zamknie?
            
0
haxy napisał(a)

Czyli np. tak:

 
process.Arguments = @"adres do pliku" + "" + "nazwa1" + "" + "nazwa2";

?

A gdzie tu masz spacje w stringu?

string arg1 = "lupa", arg2 = "kupa", arg3 = "pupa";
process.Arguments = arg1 + " " + arg2 + " " + arg3; //brzydko
process.Arguments = string.Format("{0} {1} {2}", arg1, arg2, arg3); //ładnie
process.Arguments = string.Format("\"{0}\" \"{1}\" \"{2}\"", arg1, arg2, arg3); //ładnie z argumentami w cudzysłowach
0

Dzieki, a wytlumacz po co sa te ukośniki?

 "\"{0}\"
0

Ukośniki są po to, żeby móc umieścić w ciągu znaków znak specjalny. Cudzysłów jest właśnie znakiem specjalnym - normalnie w kodzie programu to on stanowi granicę łańcucha znaków. A zatem chcąc umieścić cudzysłów w takim łańcuchu trzeba go poprzedzić backslashem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1