2010-09-21 10 views
5

En primer lugar, sé que hay una pregunta similarmente formulada en SO, pero no se ha respondido correctamente, y la mayor parte de la discusión estar haciendo eso ".Cómo mover de forma programable la barra de tareas de Windows (tomar dos)

Así que comencemos por lo básico. Por qué esto es necesario

Trabajo en una empresa que distribuyó unas pocas docenas de netbooks de tabletas a nuestros trabajadores. Como usted sabe, las netbooks tienen una resolución comparativamente menor, y la pantalla de bienes raíces es muy, muy importante.

Cuando rotamos los netbooks en modo tableta, los usamos para escribir, y el modo de retrato es mucho más cómodo para eso. El hecho es que cuando se gira la pantalla, la barra de tareas permanece en el mismo borde relativo que en el paisaje. Si estaba en la parte inferior, permanece en la parte inferior en el retrato. Pero como ya lo usamos en el borde izquierdo del paisaje, terminamos con la barra de tareas ocupando un porcentaje muy notable de la pantalla disponible.

Ya tengo la estructura establecida para escuchar los eventos de cambios de resolución, y está funcionando correctamente, pero todas las muestras que he visto con respecto a pasar mensajes a la ventana de la barra de tareas no pueden moverla. Es como si lo ignoraran por la fuerza.

¿Hay alguna manera de lograr esto? Actualmente estoy usando C#, pero ese no es un requisito definitivo, puedo lograr fácilmente la conversión de C++ o vb, y p/invocaciones no son de miedo.

El sistema operativo es Windows 7.

[Editar: He intentado ya SHAppBarMessage, con SETPOS, no funciona en Windows 7. He tratado MoveWindow y SetWindowPos pinvokes, también no funcionan en Windows 7 en la barra de tareas. Para otras ventanas funciona bien. Y estoy seguro de que tengo el control correcto, porque si uso ShowWindow Pinvoke para ocultarlo, realmente se esconde, aunque no puedo recuperar el espacio no utilizado para nada más. Estos métodos funcionaba en XP, es por eso que es tan frustrante.]

Gracias mucho por su tiempo, Joao Correia

+0

lo siento por la descarada/bache, pero todavía estoy perplejo por esto. Incluso estoy considerando un enfoque diferente. Oculto totalmente la barra de tareas después de detectar la rotación, y la vuelvo a mostrar cuando gire hacia atrás. PERO. Aunque puedo ocultar la barra de tareas y el botón de inicio "orbe", no puedo reclamar el espacio para el área del escritorio. Siempre cuenta la barra de tareas como presente y no permite que las ventanas se maximicen en el espacio. –

+0

Hola, solo quería que sepas que se puede hacer, publiqué una solución por lotes y vbscript, así que C# también debe ser posible, mira http://stackoverflow.com/questions/12435503/change-windows-7- taskbar-location-automatically-based-on-screen-shape-or-on-dock/14370485 # 14370485 – peter

Respuesta

0

Ha intentado FindWindow() con Shell_TrayWnd como la clase, y luego usar SetWindowPos para mejorar la ventana?

No estoy seguro de cómo Windows tomaría esto sin embargo.

También hay API específica que ver con el AppBar (lo que es la barra de tareas), echa un vistazo a:

http://bytes.com/topic/c-sharp/answers/247701-moving-windows-takbar

+1

Sí, he intentado FindWindow y el argumento que sugiere, eso es lo que el sistema ignora. Si lo uso en cualquier otra ventana, funciona. La barra de tareas lo ignora. En cuanto al enlace sugerido, he intentado con ese código exacto. Funciona en XP, pero falla en 7, de ahí mi necesidad de esta pregunta. –

+0

Ahh ya veo, eso es interesante. – Lloyd

Cuestiones relacionadas