Diskuze: Otevreni souboru .exe ve slozce

C# .NET .NET (C# a Visual Basic) Otevreni souboru .exe ve slozce American English version English version

Avatar
enes.vint
Člen
Avatar
enes.vint:

Ahoj,

potykam se se zvlastnim a asi i jednoduchym problemem. Mam jednu slozku, ve ktere mam aplikaci + dalsi slozku se soubory. Potrebuji po nastaveni parametru v aplikaci otevrit soubor s priponou .exe ze slozky, ale nemohu prijit na to jak. Pres aplikaci ukladam soubory .txt klasicky, StreamWriter("sloz­ka/soubor.txt");. Kdyz se ale pokusim soubor otevrit - Process.Start("sloz­ka/soubor.exe");, hodi to chybu. Docetl jsem se, ze na to slouzi neco jako WorkingDirectory, ale nevim, jak to pouzit.

 
Odpovědět 4.5.2014 21:43
Avatar
enes.vint
Člen
Avatar
enes.vint:

Hodim sem ten kod s otviranim aplikace:

var aplikace = new ProcessStartInfo();
            aplikace.WorkingDirectory = "slozka/aplikace.exe";
            Process.Start(aplikace);

Kdyz debuguju ve Visual Studiu (slozku s aplikaci samozrejme mam v projectech) tak hlasi, ze soubor nebyl nalezen. Kdyz spoustim aplikaci normalne, hlasi tohle:

************** Text výjimky **************
System.InvalidOperationException: Proces nelze spustit, protože nebyl uveden název souboru.
   v System.Diagnostics.Process.Start()
   v System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   v Soukup_RP_Launcher.Form1.btLaunch_Click(Object sender, EventArgs e)
   v System.Windows.Forms.Control.OnClick(EventArgs e)
   v System.Windows.Forms.Button.OnClick(EventArgs e)
   v System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   v System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   v System.Windows.Forms.Control.WndProc(Message& m)
   v System.Windows.Forms.ButtonBase.WndProc(Message& m)
   v System.Windows.Forms.Button.WndProc(Message& m)
   v System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   v System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   v System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
 
Nahoru Odpovědět 4.5.2014 22:20
Avatar
Gramli
Redaktor
Avatar
Odpovídá na enes.vint
Gramli:

Podle té vyjímky to nenajde ten soubor.

ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = "notepad.EXE";
        startInfo.Arguments = f;
        Process.Start(startInfo);

když použiješ tento zdroják a dáš start(Debug), tak ten "notedpad.EXE" musi byt ve slozce Debug. Zkus ten tvuj exe soubor dát do složky debug a použít tu moji část kódu.

Editováno 4.5.2014 22:37
Nahoru Odpovědět 4.5.2014 22:35
Kdo to říká ten to je...
Avatar
enes.vint
Člen
Avatar
Odpovídá na Gramli
enes.vint:

O to nejde - pokud soubor neni ve slozce, jde spustit jednoduchym Process.Start("a­plikace.exe");. Jde o to, ze potrebuji spoustet tento soubor ze slozky a Process.Start("sloz­ka/aplikace.e­xe") nefunguje. Zaroven to nesmi byt uplna cesta k souboru (C:/users/uzi­vatel...), jelikoz se bude s aplikaci hybat z pocitace do pocitace.

 
Nahoru Odpovědět 4.5.2014 22:39
Avatar
Gramli
Redaktor
Avatar
Odpovídá na enes.vint
Gramli:

Tak přidej k tomu tvému spouštění:

aplikace.FileName = "aplikace.exe";

Já si tu vyjímku špatně přečetl :D Nemáš uveden název souboru.

Nahoru Odpovědět 4.5.2014 22:46
Kdo to říká ten to je...
Avatar
Gramli
Redaktor
Avatar
Gramli:

jinak složku ve ktré je exáč můžeš zjistit

string path = Environment.CurrentDirectory();
Nahoru Odpovědět 4.5.2014 22:48
Kdo to říká ten to je...
Avatar
Odpovídá na Gramli
Luboš Běhounek (Satik):

To nemusí být vždy pravda, i když většinou to fungovat bude.

Tohle bude fungovat vždy:

Path.GetDirectoryName(Application.ExecutablePath)
Nahoru Odpovědět  +2 4.5.2014 23:00
:)
Avatar
enes.vint
Člen
Avatar
enes.vint:

Funguje jako zazrak, dekuju.

 
Nahoru Odpovědět 4.5.2014 23:06
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.