PDA

Visualizza la versione completa : [C++] Associare un'applicazione ad un tipo di file e gestire apertura del file stesso


frarugi87
15-01-2007, 15:36
Come è possibile far aprire dei file a un programma con Apri con?
Mi spiego: ho fatto un programma che apre dei file di tipo testo e li legge. Per aprirli ho impostato la open dialog in modo opportuno e funziona. Ma se prendo uno di quei file e, dopo averlo trascinato sopra il programma (già in formato .exe) con il tasto destro del mouse, clicco su "Apri con" non mi succede niente. Più che altro questo mi serviva per associare quei file al programma...

MItaly
15-01-2007, 16:13
"Apri con..." è sempre una finestra molto lenta ad aprirsi, e finisce sempre in secondo piano. In ogni caso il modo corretto per impostare le associazioni dei file è da Risorse del computer->Strumenti->Opzioni cartella...->Tipi di file.

frarugi87
15-01-2007, 16:23
No, quello lo sapevo già. Mi serviva sapere come si fa a fargli aprire un file associato. Perchè anche associandoli così il programma si avvia ma non carica il file lanciato. Come si fa a fargli aprire il file in automatico?

MItaly
15-01-2007, 16:24
Ovviamente devi fargli controllare i parametri passati sulla riga di comando... :madai!?:

frarugi87
15-01-2007, 16:25
E come si fa?

MItaly
15-01-2007, 16:37
Il nome del file da aprire ti viene passato di default come primo parametro sulla linea di comando; ora a seconda del tipo di main che hai nel tuo programma (main o WinMain) devi controllare un parametro diverso che viene passato alla tua applicazione (argv[1] per main, lpCmdLine per WinMain).

frarugi87
15-01-2007, 17:07
Ok, funziona. Dato che non sapevo come usare la IpCmdLine (sono ancora alle prime armi con il C) ho trovato la funzione GetCommandLine() che funziona. Grazie mille :smack:

MItaly
15-01-2007, 17:10
Guarda che lpCmdLine ti restituisce la stessa cosa di GetCommandLine()...

frarugi87
15-01-2007, 17:21
Però non sapevo come metterlo nel codice :D

Ho provato con "edt_Chiave->Text = IpCmdLine", con "edt_Chiave->Text = IpCmdLine()" o, dato che ho letto che è un parametro di WinMain, anche con "edt_Chiave->Text = WinMain->IpCmdLine". Invece, dato che GetCommandLine() è una funzione, mi è bastato scrivere "edt_Chiave->Text = GetCommandLine()" et voilà...

Lo so, non so molto, però lavoro con il C da 4mesi...

MItaly
15-01-2007, 17:22
Essendo un parametro non ci devi mettere le parentesi dopo... e soprattutto non è IpCmdLine, ma lpCmdLine (la prima lettera è una L minuscola, non una I maiuscola).

Loading