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


7

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

5

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


2

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

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

http://www.codeproject.com/

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


1

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

Global Mouse and Keyboard Library


1

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

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

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

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