Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
CAMBIARE DIRECTORY
giovedì 08 dicembre 2005 - 00.20
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
snupy71
Profilo
| Newbie
12
messaggi | Data Invio:
gio 8 dic 2005 - 00:20
AIUTOOOOOOOOOOOOO!!!
Devo lanciare un eseguibile esterno alla mia applicazione per questo ho fatto:
System.Diagnostics.Process.Start("d:\\miapath\\mio.exe")
Però l'exe deve essere eseguito dalla directory d:\miapath. Ho provato allora la cosa più semplice, per essere sicura che funzionasse: lanciare un .bat in cui ho cambio la directory e lancio il mio.exe. Funziona. Però così non mi piace perchè si apre la schifosissima finestra del prompt. Allora ho cercato qualcosa che mi permettesse di cambiare la directory prima di fare System.Diagnostics.Process.Start("d:\\miapath\\mio.exe"). Non ho trovato niente.
Se non mi dite niente voi.... non so più a che santo votarmi!!!!
Grazie 1000
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
gio 8 dic 2005 - 07:25
Prova con:
Environment.CurrentDirectory = mydirectory;
oppure con
System.IO.Directory.SetCurrentDirectory(mydirectory);
snupy71
Profilo
| Newbie
12
messaggi | Data Invio:
gio 8 dic 2005 - 11:30
FUNZIONAAAAAAAAAAAAA!!!!
Grazie Cteniza, SEI UN MITO!!! Soprattutto per la velocità della risposta!!
Ma mi è venuto un dubbio: facendo così
System.IO.Directory.SetCurrentDirectory("d:\\miapath");
System.Diagnostics.Process.Start("d:\\miapath\\mio.exe");
funziona tutto, mi si apre correttamente l'altro applicativo e rimane aperto anche il mio. Ma facendo il comando che mi hai suggerito il mio applicativo non ha problemi vero ? O dopo aver lanciato l'altro devo risettare la directory corrente.
Esempio: se la mia applicazione fosse sotto d:\snupy\bin dovrei fare:
System.IO.Directory.SetCurrentDirectory("d:\\miapath");
System.Diagnostics.Process.Start("d:\\miapath\\mio.exe");
System.IO.Directory.SetCurrentDirectory("d:\\snupy\\bin");
Grazie 1000 ancora.
Roberta
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
gio 8 dic 2005 - 11:35
Naturalmente cambiando la current directory dopo potresti avere bisogno di resettarla.
Niente di particolare basta semplicemente salvarsi la current directory prima di cambiarla e ripristinarla dopo.
snupy71
Profilo
| Newbie
12
messaggi | Data Invio:
gio 8 dic 2005 - 11:46
Ma sei velocissimo!!!!! Grazieeeeee!!!
Senti posso sfruttarti ancora per l'ultima cosa... giuro che è l'ultima... :-)))))
Invece di lasciare aperto il mio applicativo vorrei chiuderlo brutalmente mi sai aiutare anche qui?
Magari la domanda ti sembrerà strano ma il mio appiclativo è stato generato con un case... e io sto intervenendo direttamente nel codice. Putroppo non ho molte nozioni di programmazione... per ora....
Grazie ancora
Roberta
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
gio 8 dic 2005 - 11:51
Beh, dopo l'esecuzione puoi mettere una istruzione che chiuda il programma in modo naturale come:
this.Close() oppure return (dipende tutto dal punto dove sei posizionato quando vuoi chiudere).
papini.sascha
Profilo
| Newbie
19
messaggi | Data Invio:
gio 8 dic 2005 - 18:34
Hummm io avevo il tuo solito problema ... ovvero dovevo far aprire internet explorer e non sapevo come fare ... ma io ho fatto in questo modo
Public Function apriBrowser(ByVal url As String) As Integer
Dim targetDir As String
targetDir = String.Format("C:\Programmi\Internet Explorer")
processo = New Process
processo.StartInfo.WorkingDirectory = targetDir
processo.StartInfo.FileName = "iexplore.exe"
processo.StartInfo.Arguments = String.Format(url)
processo.StartInfo.CreateNoWindow = False
processo.Start()
End Function
e poi per chiudere l'applicazione in modo critico perchè non usare
Application.Exit()
meglio di questo non c'è niente !! in quanto se hai aperto x form ti chiude tutto ^^
ciao Sascha
snupy71
Profilo
| Newbie
12
messaggi | Data Invio:
gio 8 dic 2005 - 19:59
Grazie anche a te Sascha, facendo un mix tra quello che mi hai detto tu e quello che mi ha detto Cteniza sono riuscita a fare quello che volevo, ma siccome alla perfezione non c'è mai fine volevo ancora un aiutino....
Riepliogo: la mia applicazione è sotto d:\snupy\bin e l'altra è sotto d:\altrapath quindi ho fatto:
System.IO.Directory.SetCurrentDirectory("d:\\altrapath");
System.Diagnostics.Process.Start("d:\\altrapath\\altro.exe");
System.IO.Directory.SetCurrentDirectory("d:\\snupy\\bin");
Application.Exit() ;
Però tra la chiusura del mio exe e l'apertura dell'altro exe passando alcuni secondi, così l'utente si accorge dello stacco. Ho provato a mettere una pausa di 5 secondi prima di fare Application.Exit() così pensavo apparisse la videata dell'altro exe e poi si chiudesse la mia. Ma non funziona: mi sono accorta che aspetta che passino questi 5 secondi prima di lanciare altro.exe . Che devo fare?
Grazie 1000 anzi .... 3000 a questo punto
Roberta
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
gio 8 dic 2005 - 20:12
Credo che in questo link tu possa trovare alcuni spunti.
http://www.akadia.com/services/dotnet_process_handling.html
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !