Primeiro, verifique se você tem um bom motivo para fazer isso. As pessoas esperam que os aplicativos funcionem como você descreve em sua postagem. Mesmo que você pessoalmente não goste.
Mas, para responder à sua pergunta, uma das maneiras mais fáceis de fazer isso é criar um arquivo (por exemplo, no diretório de configuração) na inicialização, que você remove quando o aplicativo é encerrado. Antes de iniciar o aplicativo, você deve verificar seu código se outra instância já estiver ativa e, em caso afirmativo, sair diretamente. Se você também quiser focar o aplicativo ativo, precisará de uma maneira de fazer a comunicação entre processos. Por exemplo, via um soquete. Consulte o link para obter mais informações.