Отправка щелчка мыши на кнопку на панели задач с помощью C # - PullRequest
7 голосов
/ 20 августа 2008

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

Ответы [ 4 ]

4 голосов
/ 21 августа 2008

Ознакомьтесь с разделом «Как украсть фокус на 2K / XP» на http://www.codeproject.com/KB/dialog/dlgboxtricks.aspx,, поскольку это именно то, что вам нужно. Я бы не пошел по маршруту панели задач, так как панель задач могла быть скрыта или просто отсутствовать.

2 голосов
/ 20 августа 2008

Это возможно. Но это очень схематично. Ваше приложение может также порвать со следующей версией Windows, поскольку оно недокументировано. Вам нужно найти дескриптор окна панели задач, затем найти дескриптор окна дочернего окна, представляющего кнопку, а затем отправить ему сообщение WM_MOUSEDOWN (я думаю).

Вот немного о том, как найти дескриптор окна панели задач:

http://www.codeproject.com/

FWIW, ограничения на BringWindowToTop / SetForeground существуют, потому что раздражает, когда окно крадет фокус. Это может не иметь значения, если вы работаете в корпоративной среде. Просто имейте это в виду. :)

1 голос
/ 20 августа 2008

Если честно, у меня никогда не было проблем с выводом окна на передний план в XP / Vista / 2003/2000.

Вам необходимо убедиться, что вы делаете следующее:

  1. Проверьте, если IsIconic (свернуто)
  2. Если # 1 приводит к истине, то вызов ShowWindow прохождения SW_RESTORE
  3. Затем вызовите SetForegroundWindow

У меня никогда не было проблем, которые я мог бы решить сделать с этими шагами.

1 голос
/ 20 августа 2008

Я использовал это в программе, где мне нужно было моделировать щелчки и движения мыши;

Глобальная библиотека мыши и клавиатуры

...