Uruchamianie programu z parametrami

haxy
2011-03-19 00:35
haxy
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);

Pozostało 580 znaków

2011-03-19 11:02
Moderator

Rejestracja: 11 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Wrocław

0

http://msdn.microsoft.com/en-[...]ocessstartinfo.arguments.aspx


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

haxy
2011-03-19 12:35
haxy
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.

Pozostało 580 znaków

2011-03-19 12:58

Rejestracja: 16 lat temu

Ostatnio: 13 godzin temu

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([email protected]"\notepad.exe");
     pinfo.Arguments = [email protected]"\drivers\etc\hosts";
     Process.Start(pinfo);
  }
}

Pozostało 580 znaków

haxy
2011-03-19 19:31
haxy
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);
            }

Pozostało 580 znaków

2011-03-19 20:09
Moderator

Rejestracja: 11 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Wrocław

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.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
edytowany 3x, ostatnio: somekind, 2011-03-19 20:26

Pozostało 580 znaków

haxy
2011-03-19 20:21
haxy
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

Pozostało 580 znaków

2011-03-19 20:26
Moderator

Rejestracja: 11 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Wrocław

0

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


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

haxy
2011-03-19 20:39
haxy
0

Czyli np. tak:


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

?

Pozostało 580 znaków

haxy
2011-03-19 20:40
haxy
0
                System.Diagnostics.Process.Start(process);
                Application.Exit()              // a czy ta linijka nie sprawia ze program nie zdarzy przeslac parametrow zanim sie zamknie?

Pozostało 580 znaków

2011-03-19 22:07
Moderator

Rejestracja: 11 lat temu

Ostatnio: 8 godzin temu

Lokalizacja: Wrocław

0
haxy napisał(a)

Czyli np. tak:

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

> ?

A gdzie tu masz spacje w stringu?

```csharp
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

"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

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