Domanda

Quando nascondere la barra delle applicazioni su Vista e Windows 7 il pulsante Start (noto anche come Start Orb) non ottiene nascosto. Sono stato alla ricerca di una soluzione a questo e ho trovato uno, ma sembra più complessa di quanto necessario. Questo articolo CodeProject descrive (e contiene il codice per) una soluzione in cui si enumerano tutti i bambini finestre di tutte le discussioni nel processo che contiene il menu di avvio.

Qualcuno ha trovato una soluzione più semplice?

Solo per riferimento. Il codice per nascondere la barra delle applicazioni (senza nascondere l'Orb) è la seguente. In primo luogo fare le importazioni e le dichiarazioni Win32 necessarie.

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string className, string windowText);

[DllImport("user32.dll")]
private static extern int ShowWindow(IntPtr hwnd, int command);


private const int SW_HIDE = 0;
private const int SW_SHOW = 1;

Poi, in un metodo da qualche parte, li chiamano con gli argomenti giusti

IntPtr hwndTaskBar = FindWindow("Shell_TrayWnd", "");
ShowWindow(this.hwndTaskBar, SW_HIDE);
È stato utile?

Soluzione

Sono stato in grado di mettere insieme una soluzione che non richiedesse tutta l'enumerazione filo. Qui ci sono le parti pertinenti.

Se si dichiara FindWindowEx come segue

[DllImport("user32.dll")]
private static extern IntPtr FindWindowEx(
       IntPtr parentHwnd,
       IntPtr childAfterHwnd,
       IntPtr className,
       string windowText);

È quindi possibile accedere alla maniglia della finestra per lo Start Orb in questo modo:

IntPtr hwndOrb = FindWindowEx(IntPtr.Zero, IntPtr.Zero, (IntPtr)0xC017, null);

e disattivare il pulsante Start Orb in questo modo:

ShowWindow(hwndOrb, SW_HIDE);

La chiave di questo metodo è che usiamo il tipo IntPtr per la variabile className invece di una stringa nella funzione FindWindowEx. Ciò permette di utilizzare la porzione di questa funzione che riceve un tipo ATOM piuttosto che un string. Sono stato in grado di discernere che il ATOM particolare da utilizzare è a 0xC017 da questo post: Hide Vista Start Orb

Spero che questo versione semplificata aiuta alcune persone.

UPDATE: Ho creato questa nuova Codice progetto Pagina per documentare questo processo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top