Vorrei scrivere l'applicazione C# che cambierà tra alcune applicazioni in esecuzione. Dovrebbe fare l'esatta funzionalità come Alt + Tab in Windows. Io uso la funzione SetForegroundWindow()
dall'API di Windows, ma non funziona bene se l'applicazione è ridotta a icona sulla barra delle applicazioni di Windows. Così ho aggiunto la funzione ShowWindow()
, ma c'è un problema che non sono in grado di mostrare la finestra nella dimensione originale impostata dall'utente.Passare l'applicazione in C# come task manager
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
Esempio: ingrandisco la finestra, quindi la minimizzo nella barra delle applicazioni. Quando chiamo:
ShowWindow(processWindowHandle, ShowWindowCmd.SW_NORMAL);
WindowsApi.SetForegroundWindow(processWindowHandle);
La finestra non è ingrandita. Ho provato a giocare con il parametro ShowWindowCmd.SW_NORMAL
ma con lo stesso risultato.
hai provato SW_RESTORE? – David
Sì, ho provato SW_RESTORE. L'applicazione che è stata massimizzata e quindi ridotta al minimo viene quindi visualizzata NON massimizzata (come previsto). Viene mostrato come finestra la cui dimensione è inferiore alla dimensione massima dello schermo. –
Non voglio massimizzare la finestra ogni volta. Voglio mostrare la finestra nello stesso stato che era prima che nascondessi la finestra con un'altra o prima di averla minimizzata nella barra delle applicazioni ... –