uruchamianie plików exe z argumentami

0

Witam ponownie

mam taki kod:

System.Diagnostics.Process takipi= new System.Diagnostics.Process();

            takipi.StartInfo.UseShellExecute = false;
            takipi.StartInfo.RedirectStandardOutput = true;
            takipi.StartInfo.RedirectStandardError = true;
            takipi.StartInfo.Arguments = @"-it TXT -i in.txt -o out.xml";
            takipi.StartInfo.FileName= @"TaKIPI18\takipi.exe";
            takipi.Start();

program nie przyjmuje mi argumentów (nie potrafie przeczytać treści błędu bo okienko cmd od razu się zamyka).
Jak uruchamiam program ręcznie, z tymi samymi argumentami - działa dobrze.

Ma ktoś jakiś pomysł?

0

Ja bym całość wpisał w FileName tj. ścieżkę, nazwę pliku i parametry

0

wtedy wyskakuje błąd "nie odnaleziono pliku"

0

spróbuj tak i sprawdź czy zrzucił coś do c:\log.txt

takipi.StartInfo.FileName= @"TaKIPI18\takipi.exe >>C:\\log.txt";
0

też nie znajduje pliku...


takipi.StartInfo.FileName = "TaKIPI18\\takipi.exe  >>C:\\log.txt";

szczerze to już 4 godziny nad tym siedze i cały czas mi się wydaje że jest poprawnie;/ jednak nie działa... jak nie ma argumentów to jest ok, jak wale argumenty to klapa.

0
  1. Strzał w ciemno: dodaj spacje na końcu i na początku tego
takipi.StartInfo.Arguments = @" -it TXT -i in.txt -o out.xml ";
  1. Czy probowałeś mieniać te parametry
            takipi.StartInfo.UseShellExecute = false;
            takipi.StartInfo.RedirectStandardOutput = true;
            takipi.StartInfo.RedirectStandardError = true;
0

Różne przykłady:

using System;
using System.Diagnostics;
using System.ComponentModel;

namespace MyProcessSample
{
    class MyProcess
    {
        // Opens the Internet Explorer application.
        void OpenApplication(string myFavoritesPath)
        {
            // Start Internet Explorer. Defaults to the home page.
            Process.Start("IExplore.exe");

            // Display the contents of the favorites folder in the browser.
            Process.Start(myFavoritesPath);
        }

        // Opens urls and .html documents using Internet Explorer.
        void OpenWithArguments()
        {
            // url's are not considered documents. They can only be opened
            // by passing them as arguments.
            Process.Start("IExplore.exe", "www.northwindtraders.com");

            // Start a Web page using a browser associated with .html and .asp files.
            Process.Start("IExplore.exe", "C:\\myPath\\myFile.htm");
            Process.Start("IExplore.exe", "C:\\myPath\\myFile.asp");
        }

        // Uses the ProcessStartInfo class to start new processes,
        // both in a minimized mode.
        void OpenWithStartInfo()
        {
            ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
            startInfo.WindowStyle = ProcessWindowStyle.Minimized;

            Process.Start(startInfo);

            startInfo.Arguments = "www.northwindtraders.com";

            Process.Start(startInfo);
        }

        static void Main()
        {
            // Get the path that stores favorite links.
            string myFavoritesPath =
                Environment.GetFolderPath(Environment.SpecialFolder.Favorites);

            MyProcess myProcess = new MyProcess();

            myProcess.OpenApplication(myFavoritesPath);
            myProcess.OpenWithArguments();
            myProcess.OpenWithStartInfo();
        }
    }
}
0
  1. nie pomogło

  2. pierwszy element po zmianie wyświetla błąd, dwa pozostałe nie dają efektu

0

Podaj bezwzględną ścieżkę do programu.

0

niestety... nic

0

Zmieniłem ścierzke na
takipi.StartInfo.FileName = @"takipi.exe";

potem skompilowany program przeniosłem do folderu z uruchamianym programem.
POSZŁO...

wie ktoś dla czego?

0

Poszło, bo system operacyjny znalazł program uruchamiany w bieżącym katalogu. Tam jest szukany, gdy podajesz ścieżki względne. Jakbyś podał ścieżkę bezwzględną poszłoby z dowolnego katalogu.

0

Przecież pisałem że ze ścieżki bezwzględnej też nie idzie.

Ogólnie bez argumentów idzie bez problemów poprawnie (ścieżka względna i bezwzględna), a jak się doda argumenty to działa tylko jeśli oba programy są w jednym katalogu...

0
xseper napisał(a)

Zmieniłem ścierzke na
takipi.StartInfo.FileName = @"takipi.exe";

potem skompilowany program przeniosłem do folderu z uruchamianym programem.
POSZŁO...

wie ktoś dla czego?

To rozjaśnia problem. Twój program takipi.exe najprawdopodobniej używa względnych dostępów do pliku zdefiniowanego w argumencie -in. Uruchamiasz go w working directory procesu wywołującego i nie widzi pliku. Zdefiniuj wszystkie pliki wraz ze bezwzględnymi ścieżkami dostępu.

0
            takipi.StartInfo.Arguments = @"-it TXT -i c:\TaKIPI18\in.txt -o c:\TaKIPI18\out.xml";
            takipi.StartInfo.FileName = @"c:\TaKIPI18\takipi.exe";

niestety nie idzie...
kurcze uruchamia tylko z folderu z programem...
(próbowałem już wczoraj przerzucać plik in.txt w różne miejsca żeby nie było)

pewnie będę musiał napisać miniprogramik ort! tylko do uruchamiania tej aplikacji i wrzucić go do środka... jakoś innego rozwiązania nie widzę...

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