22 noviembre, 2017

Programando Arrastrar Y Soltar Entre Aplicaciones En Windows Vista

Hace ya varios meses, casi desde que Microsoft publicó uno de los primeros BETAS de Windows Vista tuve uno de mis primeros dolores de cabeza probando ciertos snippets de código bastante simples: Arrastrar y Soltar (Drag & Drop). Resulta que la funcionalidad de arrastrar y soltar funcionaba muy bien entre controles de la misma aplicación pero no así desde o hacia otras aplicaciones.

En Windows Vista este comportamiento es por diseño y no algún tipo de BUG. Lo que sucede es que para que Visual Studio 2005/2008 ejecute correctamente en Windows Vista es necesario ejecutarlo “como Administrador” esto hace que la instancia de Visual Studio ejecute en un nivel con previlegios de seguridad más altos del de una cuenta común. Al hacer esto Windows Vista bloquea muchos canales o procesos de comunicación entre las aplicaciones que ejecutan a diferentes niveles de seguridad … entre ellos la capacidad de arrastrar y soltar entre procesos.

Notarán que si ejecutan su aplicación de forma independiente haciendo clic en el archivo exe la funcionalidad de arrastrar y soltar entre aplicaciones funciona correctamente. Entonces ¿Cómo depuro mi código en este escenario?, muy simple … hay dos opciones:

  1. Ejecuten Visual Studio sin los previlegios de la cuenta Administrador, esto trae problemas de compatibilidad de Visual Studio con Windows Vista. Si están ejecutando la versión 2005 les va a ser muy dificil trabajar si escogen esta opción, la versión 2008 trabaja mucho mejor en Windows Vista sin los previlegios de Administrador pero aun así no es un escenario ideal para el día a día de un programador.
  2. Ejecuten las otras aplicaciones “como Administrador”, un poco más trabajoso por tener que levantar desde un notepad hasta el outllok con la cuenta “Administrador”, pero esto permite la funcionalidad de arrastrar y soltar entre las aplicaciones bajo Windows Vista y sin sacrificar compatibilidad entre Visual Studio y WIndows Vista. Personalmente recomiendo esta opción.

Speak Your Mind

*