2012-11-13 17 views
5

Ho creato file MP3 sul mio computer da associare al mio lettore multimediale. Quindi quando faccio doppio clic su un file MP3 nell'explorer, ovviamente il lettore multimediale si attiva e lo riproduce.Nuova istanza di un'applicazione

Il mio problema posso evitare più istanze spuntando, ma come posso trasferire il percorso del file della nuova istanza per l'istanza che sto usando già

Quello che voglio che accada: I fai doppio clic su un brano, ... e sto ascoltandolo Io faccio doppio clic su un altro brano e il brano corrente dovrebbe interrompersi e la nuova canzone dovrebbe iniziare la riproduzione, senza far apparire una nuova istanza dell'applicazione.

Uso Mutex per verificare se esiste già un'istanza in esecuzione. Per ottenere il percorso del file, utilizzo Environment.GetCommandLineArgs()

Tutto ciò di cui ho bisogno è passare il percorso del file all'istanza corrente. Come posso fare questo??

risposta

3

In sostanza dovrai crearlo nella tua applicazione.

Quando un utente fa clic su una seconda canzone, è necessario disporre in qualche modo dell'istanza corrente per eliminare l'istanza precedente dell'applicazione o inviarla un messaggio.

Questi sembrano un po 'sporchi per me.

Penso che un approccio pulito sarebbe quello di scrivere un piccolo app_booter.exe associato ai file multimediali. Quando si fa clic su un file multimediale, viene avviato questo _app_booter_ che:

  1. Cerca un'istanza in esecuzione dell'applicazione.
  2. Invia dati ad esso per interrompere il brano corrente e riprodurlo.
  3. Se l'app non è in esecuzione, la avvia solo con il brano sulla riga di comando.

per inviare i tuoi dati dell'applicazione da quest'altra exe si potrebbe dare un'occhiata a IPC: Interprocess communication for Windows in C# (.NET 2.0)

penso che l'approccio WM_COPYDATA accennato nel post di cui sopra, o di un socket TCP sarebbe sufficiente dal momento che i dati sono al piuttosto semplice, solo un percorso di file e forse un comando.

Penso che mantenere due ex separati sia più semplice e più semplice della creazione dell'app per parlare con l'istanza precedente.

2

penso che siete alla ricerca di questo http://wpfinstanceawareapp.codeplex.com/

fornisce la funzionalità per una singola applicazione esempio che può passare gli argomenti della riga di comando alla prima istanza.

0

Nel tuo Main dopo aver controllato il tuo mutex, prendi la canzone dagli argomenti e attiva un evento Play(FileInfo filename) per riprodurre la canzone. Il tuo modulo dovrebbe gestire questo evento (o meglio una classe controller)

Problemi correlati