Возможно, тут проблема немного в другом. Начиная с WinVista, нельзя так просто "украсть" фокус у приложения. Там надо что бы текущее, активное, приложение разрешило это сделать.
Есть у меня приложение, которое при попытке запуска второй копии активирует первую, а само закрывается. Вот для того, что бы первая копия стала активной необходимо вызвать специальный метод перед тем, как активировать ее (там просто посылвется сообщение первой копии и она сама активируется). Метод этот:
Код:
AllowSetForegroundWindow(DWORD(-1));