lunes, 29 de enero de 2007

Visual Basic 6 y Windows Vista

Hace ya un buen tiempo que estoy utilizando Windows Vista pese a todos los inconvenientes que una migración de sistema operativo trae consigo.
Hoy se me ocurrió intentar programar en Visual Basic 6.0, luego de darle permisos de administrador al entorno de desarrollo (para que puede registrar y desregistrar dll's a su gusto), y luego de buscar dlls viejas (como las necesarias para correr aplicaciones VB 5.0); logré compilar la aplicación.
Cuando voy a probar la aplicación me topo con que la tipica rutina de cambiar la tecla tabulación por enter no funcionaba (para facilitar la tarea de la carga masiva de datos).
Investigue un poco y encuentro que el problema esta en la nueva arquitectura de seguridad de windows vista.
En fin la solución consiste en enviar la tecla tab utilizando las APIS de windows, para ello es necesario declarar la api donde corresponda su uso (ya sea privada o publica según el ámbito que deseen) y luego utilizarla, adjunto el código de fuente de la función que envía la tabulación y la llamada a la api.
Espero que les sea útil en esto de migrar aplicaciones a Windows Vista! (este código de API lo pueden encontrar también en un articulo de MSDN por lo que no es pura autoría mía)

Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Const KEYEVENTF_KEYUP = &H2
Const VK_TAB = &H9

Public Sub sendTabKey()

keybd_event VK_TAB, 0, 0, 0
keybd_event VK_TAB, 0, KEYEVENTF_KEYUP, 0
End Sub

3 comentarios:

Martin Boragk dijo...

Rodrigo, estoy tratando de hacer funcionar VB5 en Vista Basic. Con la experiencia que ya tienes, tal vez me puedas ayudar. Quiero instalar Service Pack5, pero previamente pide MDAC 2.5. Consegui MDAC 2.5 SP3. Al ejecutar su archivo de instalacion (mdac_typ.exe) veo que extrae los archivos, pero despues no hace nada ni entrega ningun mensaje. Sospecho que (por lo que tu comentas) que podria haber un problema de permisos con W.Vista, pero no veo donde poder darle permiso a mdac_typ.exe (instalador de MDAC). Gracias de antemano por tu ayuda.

Rodrigo dijo...

Martin, probaste instalar el mdac_typ.exe como administrador? para eso hace clic derecho sobre el archivo .exe y eleji la opcion "ejecutar como administrador" es una opcion con un escudo al lado izquierdo de la misma.
Eso le daria al exe privileguios de administración. Ya lo probaste de esa forma y no funcionó?

Anónimo dijo...

Hola Rodrigo, esto intentando ejecutar un programa (creado con el Visual basic 6.0 y en una version XP) en una maquina con windows vista y me muestra el siguiente error: "component msflxgrd.ocx or one of its dependencies not correctly registered a file is missing or invalid."

Sabes que puede ser?, Me podrías orientar por donde buscar?.
Muchas gracias!.