В приложении, над которым я сейчас работаю, требуется вывести на передний план окно внешнего приложения. Выполнение вызовов API Win32, таких как BringWindowToTop и SetForeground window, не всегда работает. Это связано с некоторыми ограничениями в Windows XP. Вместо этого я хотел бы отправить имитацию щелчка мышью по кнопке окна на панели задач, которая, как я надеюсь, выведет окно на передний план. Кто-нибудь знает, как такое возможно?





Это возможно. Но это крайне схематично. Ваше приложение также может выйти из строя со следующей версией Windows, поскольку оно недокументировано. Что вам нужно сделать, так это найти дескриптор окна на панели задач, затем найти дескриптор дочернего окна, представляющего кнопку, затем отправить ему сообщение WM_MOUSEDOWN (я думаю).
Вот немного о том, как найти дескриптор окна на панели задач:
FWIW, ограничения на BringWindowToTop / SetForeground существуют, потому что это раздражает, когда окно крадет фокус. Это может не иметь значения, если вы работаете в корпоративной среде. Просто имейте это в виду. :)
Я использовал это в программе, где мне нужно было моделировать щелчки и движения мыши;
Честно говоря, у меня никогда не было проблем с выводом окна на передний план в XP / Vista / 2003/2000.
Вам необходимо сделать следующее:
У меня никогда не было проблем, которые я мог бы придумать, сделав это с помощью этих шагов.
Посмотрите раздел «Как украсть фокус на 2K / XP» на http://www.codeproject.com/KB/dialog/dlgboxtricks.aspx, так как это именно то, что вам нужно. Я бы не пошел по маршруту панели задач, так как панель задач может быть скрыта или просто отсутствовать.