tu avvi...
lettore.exe FILE1.MP3
e riproduci "FILE1.MP3", preso dalla linea di comando,
intanto ti crei un mutex (lo fa gia di suo VB con App.PrevInstance).
ora qualcun altro vuole avviare...
lettore.exe FILE2.MID
tu, a questo punto, verifichi se il mutex (CreateMutex e GetLastError) gia' è stato creato (insomma se c'e' gia' un'istanza del tuo programma)
se SI, allora, questa nuova istanza la chiudi, ma prima di fare cio' passi/invii al programma che si è aperto per primo un messaggio WM_COPYDATA (con SendMessage) nel quale specifichi la linea del comando, che lui dovra' elaborare.
per trovare l'handle della finestra del programmma precendente, serviti della api "FindWindow"
ovviamente il lettore deve rispondere e gestire il messaggio WM_COPYDATA