2009-07-22 14 views
8

Al ocultar la barra de tareas en Vista y Windows 7, el botón de inicio (también conocido como orb de inicio) no se oculta. He estado buscando una solución a esto y he encontrado uno, pero parece más complejo de lo necesario. Este CodeProject article describe (y contiene código para) una solución donde enumera todas las ventanas secundarias de todos los subprocesos en el proceso que contiene el menú de inicio.Ocultar Orb de inicio en Vista/Win 7 en C#

¿Alguien ha encontrado una solución más simple?

Solo para referencia. El código para ocultar la barra de tareas (sin ocultar el orbe) es el siguiente. Primero haga las importaciones y declaraciones de Win32 necesarias.

[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; 

Luego, en un método en algún lugar, llamar con los argumentos adecuados

IntPtr hwndTaskBar = FindWindow("Shell_TrayWnd", ""); 
ShowWindow(this.hwndTaskBar, SW_HIDE); 
+0

Creo que esta es una pregunta algo duplicada. Alguien ya ha publicado preguntando cómo ocultar la barra de tareas y la solución dada es tener el formulario.WindowState = FormWindowState.Maximized; form.FormBorderStyle = FormBorderStyle.None; Este combo debería ocultar la barra de tareas bastante bien. No tengo problemas para hacer esto en Win7. No lo probé en Vista. –

+0

Eso no oculta la barra de tareas. Lo cubre. –

+0

Ver http://stackoverflow.com/questions/505167/how-do-i-make-a-winforms-app-go-full-screen –

Respuesta

12

yo era capaz de armar una solución que no requiere toda la enumeración hilo. Aquí están las partes relevantes.

Si se declara FindWindowEx de la siguiente manera

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

A continuación, puede acceder al identificador de ventana para el inicio del orbe de la siguiente manera:

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

y desactivar el inicio del orbe de la siguiente manera:

ShowWindow(hwndOrb, SW_HIDE); 

La clave de este método es que usamos el IntPtr escriba para la variable className en lugar de una cadena en la función FindWindowEx. Esto nos permite usar la parte de esta función que toma el tipo ATOM en lugar de string. Yo era capaz de discernir que lo particular ATOM a utilizar está en 0xC017 de este post: Hide Vista Start Orb

Esperanza esta versión simplificada ayuda a algunas personas.

ACTUALIZACIÓN: Creé este nuevo Code Project Page para documentar este proceso.

Cuestiones relacionadas