Para realizar este, mediante código, desde nuestra aplicación usaremos lo siguiente:
- Función Win32 para encontrar la aplicación y asociarle un puntero.
- Función Win32 para activarla y establecer el foco para enviarle la combinación de teclas.
- Envío de la combinación de teclas.
Para realizar esto usamos la función disponible en la librería "USER32.dll" que se muestra el código a continuación:
Declare Auto Function Lib "USER32.DLL" ( _
ByVal lpClassName As String, _
ByVal lpWindowName as String) As IntPtr
Como observamos esta función busca la ventana en función del nombre (texto que aparece en el barra de tareas de windows) y nos devuelve un puntero (dirección de memoria) a dicha ventana.
2.- Activar la ventana
Para enviar la pulsación de teclas y que estas surgan efecto es necesario establecer el foco en esta ventana, para ello usaremos la siguiente función:
Declare Auto Function SetForegroundWindow Lib "USER32.DLL" ( _
ByVal hWnd as IntPtr) as Boolean
A esta función es necesario pasarle como parámetro el puntero de la ventana obtenido con la función anterior.
3.- Envío de las pulsaciones
Para el envío de las pulsaciones usaremos la función "SendKeys". Como ejemplo abriremos la calculadora y le enviaremos una combinación de teclas para realizar la operación: 120*5
Dim wndCalculadora as IntPtr = FindWindow(Nothing,"Calculadora")
If wndCalculadora=IntPtr.Zero Then
Throw New Exception("Debes abrir la calculadora")
End If
SetForegroundWindow(wndCalculadora)
SendKeys.SendWait("120")
SendKeys.SendWait("*")
SendKeys.SendWait("5")
SendKeys.SendWait("=")