Estoy tratando de mostrar la barra de herramientas de direcciones desde la barra de tareas de Windows en mi propio WinForm. Puedo obtener el CLSID de la barra de direcciones ({01E04581-4EEE-11d0-BFE9-00AA005B4383}
) y puedo obtener una referencia de IDeskBand
. ¿Pero entonces, qué?Host IDeskBand en un formulario de Windows
Guid bandCLSID = new Guid("{01E04581-4EEE-11d0-BFE9-00AA005B4383}");
Type bandType = Type.GetTypeFromCLSID(bandCLSID);
IDeskBand deskband = (IDeskBand)Activator.CreateInstance(bandType);
he tratado de alojamiento en un AxHost
, pero la barra de herramientas de dirección no es un control ActiveX. He intentado llamar
(deskband as IOleObjectWithSite).SetSite(various interfaces);
o
(deskband as IDockingWindow).ShowDW(true);
, así como varias otras interfaces y sus métodos, pero nada que hago parece llegar a ninguna parte. Me encantaría si realmente pudiera ver esa barra de herramientas aparecer en cualquier lugar. Pero parece que no puedo cerrar la brecha entre tener la referencia IDeskBand
y conectarla a mi Windows Form.
¿Alguien ha intentado esto antes, y ha llegado más lejos que yo?
¿Puede proporcionar más información sobre qué funcionalidad necesita de AddressBarbar DeskBand? Esta interfaz quedó obsoleta a partir de Windows 7, por lo que es posible que no sea compatible en futuras versiones de Windows. –
Quiero poder poner la Address deskband, y otras deskbands como Links o incluso personalizadas, en mi WinForm, y hacer que aparezcan como lo hacen en la barra de tareas. – deanis
Así que tal vez no es un 'IDeskBand' que quiero implementar. Estoy bastante seguro de que las barras de herramientas de Direcciones y Enlaces son objetos COM de DeskBand, por lo que hice el salto a 'IDeskBand'. Entonces, lo que realmente intento hacer es consultar el objeto COM objetivo, lo cual puedo hacer para obtener el Guid correspondiente, la instancia, lo cual hago con 'Activator.CreateInstance'. Donde las cosas se me están cayendo es cuando trato de dar el salto al hosting del objeto COM en mi WinForm. – deanis