Ciao
L'approccio che hai usato non è forse uno dei migliori. Infatti quando chiami MaximizeExeByName, se ci sono due processi attivi rischi di portare in rilievo l'applicazione che successivamente viene chiusa, rendendo inutile la chiamata. Ti consiglio invece di usare un altro approccio, quello dei Mutex. Trovi un esempio qui:
http://www.p2pforum.it/forum/showthread.php?t=165986
Per portare in rilievo la finestra principale poi non ti conviene usare la proprietà MainWindowHandle, perchè il processo potrebbe non avere una MainWindow associata. Per ottenere la finestra che ti serve usa FindWindow passando Nothing come primo argomento e il titolo della finestra come secondo:
Private Declare Unicode Function FindWindowW Lib "user32" _
(ByVal className As String, ByVal windowTitle As String) As IntPtr
Edit: Il codice del link non è del tutto corretto, controllate l'ultimo post per il codice giusto
Luca