Chciałbym napisać aplikację C#, która przełączy się między niektórymi uruchomionymi aplikacjami. Powinien wykonywać dokładnie takie funkcje, jak Alt + Tab w oknach. Używam funkcji SetForegroundWindow()
z Windows API, ale nie działa dobrze, jeśli aplikacja jest zminimalizowana na pasku zadań systemu Windows. Dodałem więc funkcję ShowWindow()
, ale jest jeden problem, że nie można wyświetlić okna w oryginalnym rozmiarze ustawionym przez użytkownika.Przełączanie aplikacji w menedżerze zadań podobnym do C#
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
Przykład: Maksymalizuję okno, a następnie minimalizuję go na pasku zadań. Gdy zadzwonię:
ShowWindow(processWindowHandle, ShowWindowCmd.SW_NORMAL);
WindowsApi.SetForegroundWindow(processWindowHandle);
Okno nie jest zmaksymalizowane. Próbowałem grać z parametrem ShowWindowCmd.SW_NORMAL
, ale z tym samym wynikiem.
próbowałeś SW_RESTORE? – David
Tak, próbowałem SW_RESTORE. Aplikacja, która została zminimalizowana, a następnie zminimalizowana, jest wyświetlana jako NIE zmaksymalizowana (zgodnie z oczekiwaniami). Jest wyświetlane jako okno, którego rozmiar jest mniejszy niż maksymalny rozmiar ekranu. –
Nie chcę maksymalizować okna za każdym razem. Chcę pokazać okno w tym samym stanie, w którym chowałem okno innym lub zanim zminimalizowałem je na pasku zadań ... –