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
Aprire un file con il programma associato
mercoledì 29 giugno 2005 - 10.15
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
mer 29 giu 2005 - 10:15
Ciao a tutti,
devo gestire l'apertura di un allegato e-mail. Ammettendo di averne l'elenco in una lista, ho pensato di usare l'evento doppio click per aprirlo. In che modo posso visualizzarlo con il programma ad esso associato? ( per es. in un'istanza di Adobe reader per un pdf, di excel per un xls, etc. )
Grazie!
Salo
Andy
Profilo
| Senior Member
487
messaggi | Data Invio:
mer 29 giu 2005 - 10:46
Ciao..io creerei una tabella, con 2 campi, 1 per l'estensione file (allegato) e 1 con il percorso esatto del programma da utilizzare.
Quando hai un allegato in mail, vai nella tabella, cerchi l'estensione nel campo1, e leggi il campo2 con nome programma associato.
Poi lanci il processo:
Process.Start(<Percorso letto nel campo>, <allegato da aprire>)
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
mer 29 giu 2005 - 11:29
Riciao,
quello che vorrei fare è sfruttare le funzionalità del sistema.
Non so se sia effettivamente possibile usarle, ma il sistema è già in grado di riconoscere se un file è associato ad un programma o meno e io vorrei accedere a questa informazione.
Mi spiego meglio con un esempio: nel mio pc a casa, ho winamp, real player, wmp e divx player, ma ho associato i file .avi a winamp. Se io clicco su un file.avi dall'esplora risorse, il sistema sa già che deve aprirlo con winamp. Se nessun programma è associato all'estensione ( x es. se creo un file di estensione .kkk ) l'explorer apre una finestra di sistema che mi chiede quale programma voglio usare per aprirlo.
Se fosse possibile riutilizzarle, mi semplificherebbe le cose, xché io non posso sapere quali programmi sono installati nel pc del mio cliente o quale lui associa ai file ( magari preferisce aprire gli avi con real player! )... il tuo consiglio potrebbe cmq essermi utile se non trovo altre soluzioni, xché in pratica dovrei ricreare le funzionalità di sistema che ti dicevo ( il problema, oltre al tempo è anche di solidità! io qualche baco lo metterei di sicuro! ;-) )
Salo
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
mer 29 giu 2005 - 15:30
Ho scoperto come aprire il file con il programma associato dal sistema:
Dim myFile As String = "C:\File.txt"
Dim p As System.Diagnostics.Process
p.Start(myFile)
Solo che se nessun programma è associato genera un eccezione. Qualcuno sa se posso richiamare la finestra di sistema per scegliere il programma con cui aprire un file?
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mer 29 giu 2005 - 16:13
Birbante!
Sono io che ti ho suggerito quella cosa.
Cosa fai? giochi su tavoli diversi?
Se al file indicato non è associato nulla puoi "agire" di riflesso e gestire l'eccezione (try / catch) ed eventualmente far comparire una finestra "apri con".
Certamente che nel tuo programma, salvo lavorare "di fino" non puoi pretendere di ripetere quello che fa il sistema operativo.
Magari puoi andare a vedere nel registro se l'estensione è presente.
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
mer 29 giu 2005 - 17:10
Ciao CTeniza!
Scusa ma non avevo capito che in realtà la risposta di Andy, con una piccola modifica, era ciò che mi serviva e quindi ho chiesto anche da altre parti.
Non voglio certo rubarti i meriti ci mancherebbe! ...Quindi ti ringrazio anche in questa sede!
ma visto che avevo postato anche qui mi sono risposto in modo che se qualcuno guarderà il thread saprà come risolvere il problema senza cercare altrove.
In totale: process.start è in grado di aprire il file con il programma specificato o, se non specificato, con quello associato dal sistema.
Solo una cosa non ho capito: posso richiamare la finestra "Apri Con" di sistema o devo crearne io una con una text per richiedere il programma da lanciare?
Di nuovo
Salo
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mer 29 giu 2005 - 17:21
Questa è la risposta di Marco Bellinaso (vb2themax):
ShowOpenWithDialog - Displaying and opening a file through the "Open with..." dialog
' Display the "Open with..." dialog and open the specified file with the
' selected program
' Example: ShowOpenWithDialog("d:\test.txt")
<System.Runtime.InteropServices.DllImport("shell32")> Shared Function _
ShellExecute(ByVal hwnd As Integer, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Integer) As Integer
End Function
Sub ShowOpenWithDialog(ByVal filename As String)
ShellExecute(0, String.Empty, "RUNDLL32.EXE", "shell32.dll,OpenAs_RunDLL " _
& filename, "", 0)
End Sub
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 !