Ocultar el botón de la barra de tareas de otra aplicación

Me gustaría poder ocultar la ventana de otra aplicación de la barra de tareas, sin ocultar la ventana misma. Específicamente, quiero tener varios navegadores web diferentes en ejecución, visibles, disponibles en la lista Alt + Tab, pero sin ocupar espacio en la barra de tareas.

(Si alguien tiene curiosidad por qué: he escrito una aplicación de tablero que usa las API DwmRegisterThumbnail de Vista para mostrar vistas previas en vivo de varias ventanas a la vez, una especie de "imagen en imagen", si lo desea. En ese momento, también tiene barra de tareas botones para esas ventanas parece redundante.)

Soy consciente de que cambiar el estilo de la otra ventana para incluirWS_EX_TOOLWINDOW lo ocultará de la barra de tareas, e intenté esto primero. Pero, como se esperaba, tuvo algunos efectos secundarios que no quería: la barra de título se acortó (no todo es malo, supongo) y los botones de minimizar y maximizar desaparecieron (no es bueno). También tuve que ocultar y volver a mostrar la ventana para que la barra de tareas reconociera el cambio, lo que provocó que se repintaran los artefactos cuando lo hice en las ventanas de IE.

Mi siguiente pensamiento fue que, dado que las ventanas con propietarios están ocultas de la barra de tareas de forma predeterminada, tal vez podría cambiar las otras ventanas para que sean mías. Pero MSDN esbastante clar que "[a] después de crear una ventana propia, una aplicación no puede transferir la propiedad de la ventana a otra ventana".

Encontréesta pregunt que está redactado de manera similar a la mía, pero se trata específicamente de ventanas de su propio proceso, donde tiene control total sobre la propiedad de la ventana.

¿Alguien sabe de alguna otra forma de ocultar un botón de la barra de tareas que funcione para Windows desde otro proceso?

Actualizar Tormod me puso en el camino correcto con ITaskbarList: funciona muy bien. La página pinvoke.net tenía algunos errores (GUID incorrecto, métodos declarados alfabéticamente en lugar de en orden de interfaz), pero lo edité, hice correcciones y también agregué un ejemplo de cómo crear una instancia de ITaskbarList a través de su coclass.

Actualización 2: Si usa DeleteTab para ocultar el botón de la barra de tareas de una ventana y luego la convierte en la ventana activa (por ejemplo, a través deSetForegroundWindow o Alt + Tab), reaparecerá el botón de la barra de tareas. Para mantener oculto el botón de la barra de tareas, tuve que agregar un temporizador y seguir llamando a DeleteTab. Siempre y cuando no le importe que el botón de la barra de tareas vuelva a aparecer brevemente cada vez que se enfoque la ventana, esto funciona bien.

Respuestas a la pregunta(2)

Su respuesta a la pregunta