Come posso ottenere l'elenco di cartelle aperte, enumerarle e minimizzare ogni cartella a livello di codice?Come minimizzare a livello di programmazione le cartelle di finestre aperte
A volte alcune cartelle aperte rubano lo stato attivo dallo strumento quando si passa da un modulo dell'applicazione a un altro. Prevenire questo è di alta priorità per il nostro cliente. I clienti sono persone ipovedenti, quindi accedono alla macchina solo tramite screen reader. Minimizzare altre finestre (cartelle) non è affatto un problema, anzi un requisito.
ho provato questo:
foreach (Process p in Process.GetProcessesByName("explorer"))
{
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
}
Come previsto ha fatto nulla di buono.
Aggiornamento:
Dalle risposte qui, ho provato questo:
delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam);
[DllImport("user32.dll")]
static extern bool EnumThreadWindows(int dwThreadId, EnumThreadDelegate lpfn, IntPtr lParam);
static IEnumerable<IntPtr> EnumerateProcessWindowHandles(int processID)
{
List<IntPtr> handles = new List<IntPtr>();
EnumThreadDelegate addWindowHandle = delegate(IntPtr hWnd, IntPtr param)
{
handles.Add(hWnd);
return true;
};
foreach (ProcessThread thread in Process.GetProcessById(processID).Threads)
EnumThreadWindows(thread.Id, addWindowHandle, IntPtr.Zero);
return handles;
}
const int SW_MINIMIZED = 6;
[DllImport("user32.dll")]
static extern int ShowWindow(IntPtr hWnd, int nCmdShow);
private void button1_Click(object sender, EventArgs e)
{
foreach (IntPtr handle in EnumerateProcessWindowHandles(Process.GetProcessesByName("explorer")[0].Id))
ShowWindow(handle, SW_MINIMIZED);
}
Questo crea un sacco di finestre explorer invisibili ad essere improvvisamente elencati nel taksbar dal nulla. Sono poco abituato a gestire le API di Windows, quindi il codice stesso sarà di grande aiuto.
È necessario inviare un messaggio alla finestra, questo deve essere fatto a livello di API di Windows. – Arjang
@Arjang posso vedere qualche codice da qualche parte? – nawfal
Se avessi il codice, sarebbe stata una risposta, non un commento. Volevo solo essere di aiuto in una ricerca di google migliore. – Arjang