Zauważyłem, że funkcja setforegroundwindow może być bardzo niestabilna - bez względu na to, jak to zrobisz.Okno przełącznika automatyzacji interfejsu użytkownika
Zauważyłem, że używanie UIAutomation, gdzie to możliwe, wydaje się poprawiać.
Na przykład:
Pierwsze WindowPattern i używając coś jak:
windowPattern.SetWindowVisualState(WindowVisualState.Normal);
windowPattern.SetWindowVisualState(WindowVisualState.Maximized);
Teraz moje pytania to:
Skąd mam wiedzieć, czy mam zrobić to maksymalne lub normalne. Menedżer zadań i smok w naturalny sposób wydają się wiedzieć, jak to zrobić. Jeśli był wcześniej zmaksymalizowany, a następnie zminimalizowany, chciałbym zmaksymalizować okno, kiedy się do niego przełączę. Jeśli wcześniej nie był zmaksymalizowany, chciałbym uczynić go "Normalnym".
Wszelkie pomysły?
Jest to nieco przydatne, ale chciałbym wiedzieć, co przekazać w jak visualState do wykorzystania. Załóżmy, że robię aplikację do przełączania zadań. Mam hwnd, a następnie AutomationElement dla okna, które jest obecnie zminimalizowane na pasku zadań. Nie wiem, jak znaleźć, jeśli okno było wcześniej w stanie zmaksymalizowanym lub normalnym. Więc nie wiedziałbym, czy powinienem przekazać tę funkcję "Normal" lub "Maximized". – Derek
@Derek Mam zaktualizowaną odpowiedź i myślę, że robi to, czego szukasz lepiej. Zrobiłem kilka bardzo podstawowych testów i wydawało mi się, że działają tak samo, jak "Przełącz na" działał w Menedżerze zadań. – Gray