Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - associare file ad un programma
Forum - C/C++ - associare file ad un programma

Avatar
genni_96 (Normal User)
Pro


Messaggi: 108
Iscritto: 04/06/2010

Segnala al moderatore
Postato alle 19:58
Venerdì, 11/06/2010
Ciao sapete come associare i file con una certa estensione ad un mio programma??
Mi spiego meglio:

ho scritto un programma con le API Window che modifica i file txt, simile al blocco notes di window. Il programma funziona benissimo, i file possono essere aperti da un menu in cui c'è la voce Apri. Il problema e che vorrei associare i file txt al mio programma in modo che quando ci clicco sopra vengono aperti direttamente con il mio programma invece del blocco notes di Windows.
Sapreste aiutarmi??

Ultima modifica effettuata da genni_96 il 11/06/2010 alle 19:59
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 20:40
Venerdì, 11/06/2010


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
genni_96 (Normal User)
Pro


Messaggi: 108
Iscritto: 04/06/2010

Segnala al moderatore
Postato alle 20:55
Venerdì, 11/06/2010
Grazie, ma io non intendevo questo.
Il mio programma legge un file se arriva il messaggio WM_COMMAND con l'IDD del comando apri che si trova nel menu. Quando lo apro facendo doppio click sul file txt (dopo averlo associato) il programma parte normalmente senza leggere il file.
avrei bisogno di una funzione o (se c'è) un messagio che viene mandato al programma quando apro un file txt per leggere quel file.
Non so se sono stato chiaro, se non mi sono espresso bene potete chiedere.

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 21:11
Venerdì, 11/06/2010

guarda che non funziona così, oppure non ho capito.

quando il tuo programma è associato ad una estensione (ad esempio .txt), e viene aperto un file di quel tipo, il sistema operativo richiama l'eseguibile associato con una riga di comando contenente il/i file(s) su cui è stato fatto partire:

programma.exe file.txt [file2.txt] ...

per aggiungere programmaticamente un'associazione di estensione devi guardarti le chiavi di registro coinvolte (trovi valanghe di materiale su internet)

invece se vuoi aggiungere un'associazione non da codice devi seguire la guida che ti ho linkato.


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
genni_96 (Normal User)
Pro


Messaggi: 108
Iscritto: 04/06/2010

Segnala al moderatore
Postato alle 21:28
Venerdì, 11/06/2010
Ho seguito la tua guida(anche se lo sapevo gia), ma quando apro un file associato al mio prgramma non viene letto automaticamente, come se aprissi normalmente il programma.
Faccio un esempio di come avrei intenzione di risolvere(se possibile)
Codice sorgente - presumibilmente C/C++

  1. LRESULT CALLBACK WProc(HWND hwnd,UINT msg,WPARAm w,LPARAM l)
  2. {
  3.           switch(msg)
  4.           {
  5.                   case WM_COMMAND:
  6.                   if(LOWORD(w)==ID_APRI) //ID del comando apri nel menu
  7.                   {
  8.                        //Apre il file e mostra il contenuto
  9.                   }
  10.                   break;
  11.  
  12.                   //questo è il codice da aggiungere
  13.                   case //messagio che arriva quando viene fatto doppio click sul file
  14.                        //associato (se esiste)
  15.  
  16.                        //Apre il file e mostra il contenuto
  17.                    
  18.                   break;
  19.                 }
  20. }



Ultima modifica effettuata da genni_96 il 11/06/2010 alle 21:29
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 21:37
Venerdì, 11/06/2010

non credo che tu possa farlo in quel modo... ne sono quasi certo a meno di un workaround spaziale.

il sistema con cui si fa questa cosa consiste nel leggere i parametri che vengono passati a riga di comando, ovvero parsando il parametro pCmdLine della WinMain:

Codice sorgente - presumibilmente C/C++

  1. int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow);




Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
genni_96 (Normal User)
Pro


Messaggi: 108
Iscritto: 04/06/2010

Segnala al moderatore
Postato alle 21:40
Venerdì, 11/06/2010
Come faccio a capire qual'è il file aperto leggendo il parametro pCmdLine??

PM Quote
Avatar
genni_96 (Normal User)
Pro


Messaggi: 108
Iscritto: 04/06/2010

Segnala al moderatore
Postato alle 21:43
Venerdì, 11/06/2010
Grazie,ho capito come fare, il parametro cmdLine contiene il path del file quando lo apro.
Grazie!

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 21:52
Venerdì, 11/06/2010
Testo quotato

Postato originariamente da genni_96:

Grazie,ho capito come fare, il parametro cmdLine contiene il path del file quando lo apro.
Grazie!



magia!

sono contento che hai risolto :k:


Ingegnere Informatico
https://ldlagency.it
PM Quote