Я не могу дать вам реализацию с ног на голову, но загляну во что-то, называемое «межпроцессное взаимодействие» (обычно с использованием COM, если вы работаете в Windows). Что вы можете сделать, так это то, что когда ваша программа запускается, проверьте другие копии самой себя, если она найдет одну, то она сообщит той, какой файл вы хотели открыть, а затем закроется.
Я нашел для вас реализацию:
http://www.flounder.com/nomultiples.htm