View Full Version : [C#] Aiuto - come associare file ad applicazione windows forms??
tomino87
17-07-2010, 00:16
Ciao a tutti, ho un'applicazione che legge/apre/visualizza dei file di testo (e fa qualche altra cosa...). Funziona tutto bene, ma c'è un piccolo neo: vorrei che fosse possibile associare l' applicazione a un'estensione di file, come si fa con tutti gli altri programmi windows.... ovvero vorrei fare in modo che cliccando su un file di testo, mi si apra il file all'interno dell'applicazione.
Ad intuizione mi viene da pensare che forse c'è un modo per indicare all' applicazione che essa può avere un parametro di ingresso (ad esempio il path del file) e poi fare il resto una volta avviata... solo che non ho idea di come questo possa essere fatto!!
Ho cercato su google, ma niente.... purtroppo non so nemmeno "cosa" cercare, non è facile sintetizzare la domanda :D Non so nemmeno se sono riuscito a spiegarmi correttamente qui!
Qualche anima pia riesce ad illuminarmi sull'argomento?
Grazie mille in anticipo..
Mindflyer
17-07-2010, 00:38
Spero che ti siano utili, in breve mi sembra di aver capito che non esistano funzioni apposite ma devi modificare delle chiavi di registro ;)
http://stackoverflow.com/questions/69761/how-to-associate-a-file-extension-to-the-current-executable-in-c
http://stackoverflow.com/questions/222561/filetype-association-with-application-c
tomino87
17-07-2010, 00:51
Grazie mille, mi butto subito nella lettura :)
tomino87
17-07-2010, 01:00
ok, alla fine credo di aver capito come fare l' associazione, ma il mio problema non era veramente questo: il mio problema consiste più nella seconda parte della questione: se ad esempio la mia applicazione ha l' entry point nel sorgente Program.cs, nel main come faccio a dirgli
"guarda che ti è stato specificato di aprire un file, preleva il percorso e aprilo!"...? :)
Questo è il mio vero problema.... non ho idea di come windows dica all' applicazione che vorrebbe aprire tramite di essa un file... e catturare quindi questa richiesta una volta dentro all'applicazione....
Spero di essermi spiegato meglio questa volta.. :)
lock cmpxchg8b %ebx
17-07-2010, 01:09
"guarda che ti è stato specificato di aprire un file, preleva il percorso e aprilo!"...? :)
Se lo esegui in questo modo
Eseguibile.exe filediinput.boh
allora
static void Main(string[] args)
{
}
sarà un array con 1 elemento (filediinput.boh)
Dai un occhiata a msdn (http://msdn.microsoft.com/en-us/library/cb20e19t.aspx).
tomino87
17-07-2010, 12:54
Se lo esegui in questo modo
Eseguibile.exe filediinput.boh
allora
static void Main(string[] args)
{
}
sarà un array con 1 elemento (filediinput.boh)
Dai un occhiata a msdn (http://msdn.microsoft.com/en-us/library/cb20e19t.aspx).
So già come passare parametri di ingresso in quel modo... ma da quello che so, quel modo è adatto alle console applications, non alle forms applications.
Inoltre, nel caso che ho prospettato io, non sarei io a passare personalmente il parametro di ingresso all' applicazione, quindi mi chiedevo se windows lo fa in quel modo oppure se quando tenta di aprire un file con un'applicazione utilizza un altro metodo per fornirgli il parametro di ingresso...
Inizio ad avere il forte dubbio che la mia domanda non sia stata compresa... :doh:
tomino87
17-07-2010, 13:15
Ho provato a fare un paio di prove utilizzando il metodo statico GetCommandLineArgs() della classe Environment, visualizzando tutti gli elementi contenuti nell' array che restituiva il metodo all' avvio dell' applicazione, nei due casi:
- avvio normale dell' applicazione;
- avvio dell' applicazione da click del file associato ad essa.
Nel primo caso l' array di parametri contiene un solo argomento, ovvero il path completo (incluso il nome) dell' eseguibile dell' applicazione.
Nel secondo caso l' array contiene 2 parametri, il path dell' eseguibile per primo e il path del file come secondo argomento.
Mistero risolto: Windows passa all' applicazione il path del file allo stesso modo di come lo faremmo noi manualmente da linea di comando.
In effetti non mi aspettavo che la soluzione fosse così semplice!! :eek:
Grazie in ogni caso per le risposte ;)
Ciao.
lock cmpxchg8b %ebx
17-07-2010, 13:58
So già come passare parametri di ingresso in quel modo... ma da quello che so, quel modo è adatto alle console applications, non alle forms applications.
Se tu avessi letto il link che ti ho postato avresti visto che funziona benissimo anche con le applicazioni Windows Forms.
Inoltre, nel caso che ho prospettato io, non sarei io a passare personalmente il parametro di ingresso all' applicazione, quindi mi chiedevo se windows lo fa in quel modo oppure se quando tenta di aprire un file con un'applicazione utilizza un altro metodo per fornirgli il parametro di ingresso...
Se tu avessi letto i link che ti ha postato Mindflyer avresti visto che i percorsi nel registro vengono salvati in questo modo:
@="\"C:\\Program Files\\EmEditor\\EMEDITOR.EXE\" \"%1\""
Quel %1 viene sostituito con il file che hai cliccato, ed è un normalissimo parametro di ingresso.
Inizio ad avere il forte dubbio che la mia domanda non sia stata compresa... :doh:
Ti consiglio di leggere quello che posta e linka la gente prima di fare queste affermazioni.
tomino87
17-07-2010, 19:00
Se tu avessi letto il link che ti ho postato avresti visto che funziona benissimo anche con le applicazioni Windows Forms.
Se tu avessi letto i link che ti ha postato Mindflyer avresti visto che i percorsi nel registro vengono salvati in questo modo:
@="\"C:\\Program Files\\EmEditor\\EMEDITOR.EXE\" \"%1\""
Quel %1 viene sostituito con il file che hai cliccato, ed è un normalissimo parametro di ingresso.
Ti consiglio di leggere quello che posta e linka la gente prima di fare queste affermazioni.
Hai sicuramente ragione.
Solo un appunto: non c'è bisogno di alzare i toni, io ero molto calmo in quello che lo dicevo, e non ho dato dello stupido a nessuno - e seppur velatamente, tu l'hai appena fatto con me.
Si è trattato semplicemente di un'incomprensione: capita tra persone umane.
ciao
lock cmpxchg8b %ebx
17-07-2010, 19:19
Hai sicuramente ragione.
Solo un appunto: non c'è bisogno di alzare i toni, io ero molto calmo in quello che lo dicevo, e non ho dato dello stupido a nessuno - e seppur velatamente, tu l'hai appena fatto con me.
Si è trattato semplicemente di un'incomprensione: capita tra persone umane.
ciao
Hai ragione, non ce n'è bisogno.
Però la prossima volta dai un occhiata ai link. ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.