Отправка щелчка мыши на кнопку на панели задач с помощью C #

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

20.08.2008 18:22:55
4 ОТВЕТА
РЕШЕНИЕ

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

4
20.08.2008 20:33:53

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

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

http://www.codeproject.com/

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

2
23.01.2013 05:09:55

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

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

1
20.08.2008 18:28:09

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

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

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

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

1
20.08.2008 18:40:18