Il nostro client (un'app winforms) include un browser di file. Mi piacerebbe che l'utente fosse in grado di aprire il file selezionato usando il gestore predefinito della shell. Come lo faccio? Ho letto che dovrei usare l'API Win32 piuttosto che il registro, ma preferirei una soluzione che riguardasse solo .NET.Come posso aprire un file usando il gestore predefinito della shell?
risposta
EDIT: più recente, la risposta più semplice.
Si può infatti utilizzare solo Process.Start(filename)
. Questo è specificato nella docs for Process.Start
:
Avvio di un processo specificando il nome del file è simile a digitare le informazioni nella finestra di dialogo Esegui di menu Start di Windows. Pertanto, il nome del file non deve rappresentare un file eseguibile. Può essere di qualsiasi tipo di file per il quale l'estensione ha stato associato a un'applicazione installata nel sistema. Per esempio il nome del file può avere una .txt estensione se si è associato il testo file con un editor, come Blocco note, oppure può avere un .doc se avete file associated.doc con uno strumento di elaborazione testi , ad esempio Microsoft Word. Analogamente, nello stesso modo in cui la finestra di dialogo Esegui può accettare un nome file eseguibile con o senza l'estensione .exe, l'estensione .exe è facoltativa nel parametro fileName. Ad esempio, è possibile impostare il parametro fileName su "Notepad.exe" o "Blocco note".
EDIT: originale, risposta complicata:
Se si utilizza Process.Start
con il file come il "eseguibile" e si specifica UseShellExecute = true
sarà solo lavorare. Ad esempio:
using System;
using System.Diagnostics;
class Test
{
static void Main()
{
ProcessStartInfo psi = new ProcessStartInfo("test.txt");
psi.UseShellExecute = true;
Process.Start(psi);
}
}
Che apre test.txt in Blocco note.
Infatti, UseShellExecute=true
è l'impostazione predefinita, ma poiché è assolutamente necessario, mi piace specificarlo esplicitamente per renderlo più chiaro per il lettore.
non è sicuro se il suo ok
System.Diagnostics.Process.Start(filePath);
System.Diagnostics.Process fornisce il wrapper nativo .NET attorno a shell32.ShellExecute.
Vedere PInvoke.Net per una discussione di entrambe le API e documenti MSDN su MSDN.
- 1. Applescript: come aprire un file con il programma predefinito?
- 2. Come aprire un file con il programma associato predefinito
- 3. Come aprire il file HTML usando Java?
- 4. aprire un file con il programma predefinito in node-webkit
- 5. Cifra un file usando lo script della shell bash
- 6. Come posso aprire una shell in una finestra Vim?
- 7. Come posso aprire file usando percorsi relativi in Go?
- 8. Come posso rendere rails_footnote aprire file usando Sublime Text 2?
- 9. Come posso aprire più file usando "with open" in Python?
- 10. Come fare un file eseguibile nodo di shell, usando dattiloscritto
- 11. Come aprire file apk
- 12. Come posso aprire un file remoto su HTTP con Emacs?
- 13. gestore errori RxJava predefinito
- 14. Aprire l'editor di testo predefinito in bash?
- 15. Come posso aprire un file HTML nel browser predefinito da un'applicazione Java Swing?
- 16. Come posso eseguire un comando shell usando VBA?
- 17. Come aprire un file usando l'istruzione open con
- 18. Come posso reindirizzare il registratore ad un wxPython textCtrl usando un gestore di registrazione personalizzato?
- 19. Come posso modificare il timeout predefinito usando KIF?
- 20. Come aprire un file sul percorso relativo usando T4?
- 21. Come aprire un file in java
- 22. Come posso aprire un file Unicode con Perl?
- 23. Come rendere un gestore code predefinito in un cluster
- 24. Django admin search: come sovrascrivere il gestore predefinito?
- 25. Come disabilitare il gestore della sicurezza Java?
- 26. Come aprire il file vsdx?
- 27. Aprire il file ReadOnly
- 28. Come posso scaricare un file usando window.fetch?
- 29. Come posso aprire un file HTML locale nel browser Microsoft Edge?
- 30. Come posso modificare il valore predefinito della colonna in PostgreSQL?
'Process.Start (" C: \ temp \ test.xlsx ");' apre un file xlsx *** se ** Excel è installato **. Se non installato, non lo so. – Kiquenet