Username
Password

Programmazione

Supporto per Linguaggi di Programmazione
Rispondi Invia Nuova Discussione 
Wednesday, 6 June 2012, 09:38
zagocero27
 Enrico Z.
 Utente Interessato
 
L'avatar di  zagocero27
 
 Messaggi: 60
Lightbulb

C#: controllo file e apertura di un altro se inesistente


Come posso impostare il costruttore in modo da aprire un file se un'altro file non esiste?

Ad esempio: voglio fare un menù con una lista di programmi (lettore multimediale, browser web, posta elettronica,....) dove imposto nel primo esempio che apre di default wmplayer.exe e se non c'è apre vlc.exe e se non esiste nemmeno vlc chiede all'utente che programma aprire


AIUTO
    Rispondi Citando Rispondi
Wednesday, 6 June 2012, 10:02
Neles
 Davide P.
 Militante
 
L'avatar di  Neles
 
 Località: Genoa
 Età: 45
 Messaggi: 3,577

Se sai il path puoi fare qualcosa del tipo:

Codice:
if ( File.Exists(@"C:\Program Files (x86)\Windows Media Player\wmplayer.exe") ) { // apri WMPlayer } else if ( File.Exists(@"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe") ) { // apri VLC } else { // chiedi all'utente }

Se non vuoi cablare nel codice la cartella dei programmi puoi usare la variabile System.Environment.GetFolderPath(System.Environmen t.SpecialFolder.ProgramFiles).

HTH
__________________
There is no dark side of the Moon really... matter of fact it's all dark.

Chuck Norris non bestemmia, è Dio che compie una metamorfosi per accontentarlo
    Rispondi Citando Rispondi
Commenti a questo messaggio
  zagocero27: Grazie, molto utile
  SkidArh+: Grazie, molto utile
Wednesday, 6 June 2012, 11:50
zagocero27
 Enrico Z.
 Utente Interessato
 
L'avatar di  zagocero27
 
 Messaggi: 60

Grazie mille!!!!
    Rispondi Citando Rispondi
Wednesday, 6 June 2012, 12:22
zagocero27
 Enrico Z.
 Utente Interessato
 
L'avatar di  zagocero27
 
 Messaggi: 60

OOPSS!
Mi sono appena accorto che apre tutti i programmi inseriti non uno solo
:::
    Rispondi Citando Rispondi
Wednesday, 6 June 2012, 12:48
Neles
 Davide P.
 Militante
 
L'avatar di  Neles
 
 Località: Genoa
 Età: 45
 Messaggi: 3,577

Quote:
Originariamente inviato da zagocero27
Mi sono appena accorto che apre tutti i programmi inseriti non uno solo
Strano: vista la struttura "if ... else if ... else" ogni volta dovrebbe entrare solo in un uno dei tre casi.
__________________
There is no dark side of the Moon really... matter of fact it's all dark.

Chuck Norris non bestemmia, è Dio che compie una metamorfosi per accontentarlo
    Rispondi Citando Rispondi
Wednesday, 6 June 2012, 15:07
zagocero27
 Enrico Z.
 Utente Interessato
 
L'avatar di  zagocero27
 
 Messaggi: 60

Ho un problema con il seguente codice:
Codice:
if (File.Exists(@"%USERPROFILE%\Impostazioni locali\Dati applicazioni\Google\Chrome\Application\chrome.exe")) { System.Diagnostics.Process.Start("chrome.exe"); } else if (File.Exists(@"C:\Programmi\Mozilla Firefox\firefox.exe")) { System.Diagnostics.Process.Start("firefox.exe"); } else if (File.Exists(@"C:\Programmi\Internet Explorer\iexplore.exe")) { System.Diagnostics.Process.Start("iexplore.exe"); }
Pur essendo installato Google Chrome, mi avvia solo IExplorer.

RIAIUTO
    Rispondi Citando Rispondi
Wednesday, 6 June 2012, 15:16
RomeoKnight
 Militante
 
L'avatar di  RomeoKnight
 
 Messaggi: 4,968

Devi imparare a debuggare, altrimenti non ne uscirai mai vivo (non puoi capire dov'è l'errore).
Puoi fare in tanti modi, aggiungendo dei controlli specifici che 'rispondano' come

Debug.WriteLine("sono passato da qua ");

Ti accorgerai se entra all'interno del primo if o se lo salta (anche se è evidente che lo salta in questo caso).
Però non sai cosa è per lui @"%USERPROFILE%\Impostazioni locali\Dati applicazioni\Google\Chrome\Application\chrome.exe
quindi puoi uscire in debug questa scritta per verificare manualmete dove va a cercare il file (vedrai che lo cerca dove non è).
__________________
Hic erant dracones
    Rispondi Citando Rispondi
Commenti a questo messaggio
  Neles: Sono d'accordo
Wednesday, 6 June 2012, 15:25
zagocero27
 Enrico Z.
 Utente Interessato
 
L'avatar di  zagocero27
 
 Messaggi: 60

Quote:
Devi imparare a debuggare
E' un annetto che programmo

Secondo me non riconosce "%USERPROFILE%" ma nel debug non mi da niente di irregolare.
    Rispondi Citando Rispondi
Wednesday, 6 June 2012, 16:38
gillesvilleneuve
 GillesVilleneuve
 Utente Appassionato
 
L'avatar di  gillesvilleneuve
 
 Messaggi: 1,446

Debagga riga per riga capisci tutto meglio!
    Rispondi Citando Rispondi
Thursday, 7 June 2012, 08:14
zagocero27
 Enrico Z.
 Utente Interessato
 
L'avatar di  zagocero27
 
 Messaggi: 60

Quote:
Originariamente inviato da gillesvilleneuve
Debagga riga per riga capisci tutto meglio!

Non ci capisco più nulla!!
Ho ripetuto tutti i debug possibili e immaginabili e mi ritrovo sempre allo stesso punto: ho Google Chrome e non me lo avvia.
Ho utilizzato il programma "Esegui" e Windows Explorer me lo trova: non capisco perché Visual C# 2010 non me lo deve trovare
    Rispondi Citando Rispondi
Thursday, 7 June 2012, 08:19
RomeoKnight
 Militante
 
L'avatar di  RomeoKnight
 
 Messaggi: 4,968

Ma dal debug, cosa ti riporta essere @"%USERPROFILE%\Impostazioni locali\Dati applicazioni\Google\Chrome\Application\chrome.exe" ?
Vai nella stessa cartella indicata dal debug (attenzione a tutto il path), poi verifica se li dentro c'è chrome.exe.
Ho visto che per sapere se un programma è installato (E dove è installato) si deve leggere il registro, nella sezione uninstall.
In questo modo non ipotizzerai più nulla e avrai più certezze, anche perchè non è detto che una persona installi il programma dove suggerito.
__________________
Hic erant dracones
    Rispondi Citando Rispondi
Commenti a questo messaggio
  zagocero27: Guarda su!!
  SatRider: Sono d'accordo
  : Sono d'accordo
Thursday, 7 June 2012, 09:04
zagocero27
 Enrico Z.
 Utente Interessato
 
L'avatar di  zagocero27
 
 Messaggi: 60

Bene, io non trovo la sezione Uninstall sul regedit.exe; il debug non mi da niente di errato; Google Chrome lo sto usando per scrivere su questa discussione (non è una versione portable).
Dunque come cavolo dovrei fare?!?!?!?!?!?!?!?!?!?!?
    Rispondi Citando Rispondi
Thursday, 7 June 2012, 09:23
RomeoKnight
 Militante
 
L'avatar di  RomeoKnight
 
 Messaggi: 4,968

Ti consiglio di approfondire cosa sia effettivamente il debug di un codice, in quanto il debug non riporta mai errori, ma solo le informazioni che gli sono state richieste.

nel tuo caso dovresti inserire almeno questo riga di codice (non programmo sotto windows) e vedere cosa riporta.
Debug.WriteLine(@"%USERPROFILE%\Impostazioni locali\Dati applicazioni\Google\Chrome\Application\chrome.exe");

Dai anche un'occhiata a questo snippet.
__________________
Hic erant dracones
    Rispondi Citando Rispondi
Thursday, 7 June 2012, 09:47
zagocero27
 Enrico Z.
 Utente Interessato
 
L'avatar di  zagocero27
 
 Messaggi: 60

Riporta meno del nulla!
    Rispondi Citando Rispondi
Thursday, 7 June 2012, 09:51
zagocero27
 Enrico Z.
 Utente Interessato
 
L'avatar di  zagocero27
 
 Messaggi: 60

N.B.: Ho messo %USERPROFILE% per compatibilità con altri sistemi operativi e altri utenti
L'ho usato su WIN 95, 98, 2000 e 7 sempre con un Visual C#
    Rispondi Citando Rispondi
Rispondi Invia Nuova Discussione


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 visitatori)
 

Thread già visto da:
C0m4nch3, SilBerg, SkidArh+, RomeoKnight, SanK, foul64, Clipboard, Duilio, Carson, palin, lentz, SatRider, Foxes, ale82x, Neles, Attilio, zagocero27
Strumenti Discussione Cerca in questa Discussione
Cerca in questa Discussione:

Ricerca Avanzata
Modalità Visualizzazione

top Regole di scrittura
Tu non puoi inserire messaggi
Tu non puoi rispondere ai messaggi
Tu non puoi inviare allegati
Tu non puoi modificare i tuoi messaggi

codice vB è Attivo
Smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Attivo

Se hai problemi, contattaci


Visite Totali Posts: 81.269.418
Tutti gli Orari sono GMT +1. Attualmente sono le 08:20.

iGroup Black
Powered by vBulletin Versione 3.5.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Traduzione italiana a cura di: Enzo-Staff-VbulletinItalia.it
 
2000, 2012 © Visiva Group