Υποθέτω ότι μιλάς για VB.NET και όχι VB6.
Για να φτιάξεις ένα single instance application μπορείς να χρησιμοποιήσεις έναν mutex. Ένα web search με "single instance .net application" θα σου δώσει αρκετά σχετικά links.
Όσο για το να περάσεις στο πρώτο instance της εφαρμογής σου το όνομα του αρχείου που θα ανοίξει, για να αποφύγεις το DDE, που όπως σωστά είπε ο pkefal είναι πεπαλαιωμένο, μπορείς να χρησιμοποιήσεις νεότερες μεθόδους για IPC όπως τα named pipes και τα memory mapped files (όλα unmanaged δυστυχώς).
Πάντως λάβε υπόψη στο θέμα του single instance ότι την εφαρμογή σου μπορεί να την τρέχουν διαφορετικοί users ο καθένας στο session του, οπότε φρόντισε το όνομα του mutex να εξαρτάται από το user name 
Νατάσα Μανουσοπούλου