Я знаю, что это 4-летний поток, но у меня была похожая проблема, и я просто нашел альтернативное решение на тот случай, если кто-нибудь еще наткнется на этот вопрос и не хочет возиться с вызовами Win32. *
Я предполагаю, что самая верхняя форма будет последней активированной. Таким образом, вы можете хранить отдельную коллекцию форм, аналогичную Application.OpenForms, за исключением того, что эта коллекция будет упорядочена после последней активации каждой из них. Всякий раз, когда форма активирована, перемещайте ее к первому элементу коллекции. Всякий раз, когда вы видите клавишу ESC, вы закрываете collection [0] и удаляете его.