2008-08-20 11 views
7

W aplikacji, nad którą obecnie pracuję, wymagane jest przeniesienie okna zewnętrznej aplikacji na pierwszy plan. Wywoływanie wywołań Win32 API, takich jak BringWindowToTop i SetForeground, nie działa przez cały czas. Wynika to z pewnych ograniczeń w systemie Windows XP. Zamiast tego chciałbym wysłać symulację kliknięcia myszą przycisku okna na pasku zadań, który - mam nadzieję - przeniesie okno na pierwszy plan. Czy ktoś wie, jak to jest możliwe?Wysyłanie kliknięcia myszą do przycisku na pasku zadań przy użyciu C#

Odpowiedz

2

Jest to możliwe. Ale jest bardzo szkicowy. Twoja aplikacja może również zepsuć się z następną wersją systemu Windows, ponieważ jest nieudokumentowana. Musisz znaleźć uchwyt okna na pasku zadań, a następnie znaleźć uchwyt okna okna potomnego reprezentującego przycisk, a następnie wysłać komunikat WM_MOUSEDOWN (chyba).

Oto trochę na znalezieniu uchwyt okna z paska zadań:

http://www.codeproject.com/

FWIW, ograniczenia BringWindowToTop/SetForeground są tam, bo to irytujące, gdy okno kradnie skupić. To nie musi mieć znaczenia, jeśli pracujesz w środowisku korporacyjnym. Po prostu miej to na uwadze. :)

1

Szczerze mówiąc nigdy nie miałem problemu przynosząc okno na pierwszym planie na XP/Vista/2003/2000.

Musisz upewnić się, wykonaj następujące czynności:

  1. Sprawdź, czy IsIconic (zminimalizowane)
  2. Jeżeli nr 1 powoduje prawdziwe następnie wywołać ShowWindow przechodząc SW_RESTORE
  3. Następnie zadzwonić SetForegroundWindow

Nigdy nie miałem problemów, o których mógłbym myśleć, wykonując te czynności.

Powiązane problemy