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

StackOverflow https://stackoverflow.com/questions/18505

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

http://www.codeproject.com/

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top