¡Problema clave en vb6!

keybd_event es un proceso API para simular acciones del teclado, es decir, solo puede simular acciones del teclado en la ventana actualmente activada. Si desea enviar información del teclado a una ventana inactiva, solo puede usar otra API. A continuación se muestra mi El programa simula la ejecución de un programa de calculadora, simula la generación de caracteres en el cuadro EDITAR de la calculadora y simula todo el proceso de pulsación de teclas de 5+7=12

Crea un nuevo formulario. agregue un comando y un cuadro de texto y pegue el siguiente código

Función de declaración privada FindWindow Lib "user32" Alias ​​​​"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Función de declaración privada GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) Mientras

Función de declaración privada SendMessage Lib "user32" Alias ​​​​"SendMessageA" (ByVal hwnd As Long , ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long

Función de declaración privada PostMessage Lib "user32" Alias ​​​​"PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Función de declaración privada ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Función de declaración privada SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Const privada WM_SETTEXT = &HC

Const privada WM_KEYUP = &H101

Const privada WM_KEYDOWN = &H100

Const privada SW_SHOWNORMAL = 1

Subcomando privado1_Click()

Estático i como entero

Atenuar hwn mientras

Atenuar twn siempre

Si i = 0 entonces 'Ejecutar calculadora

Text1.Text = "Ejecutar calculadora"

hwn = FindWindow(vbNullString, " Calculator") 'El nombre de la ventana de búsqueda es 'Calculator' handle

Si hwn = 0 Entonces

Shell "calc.exe"

De lo contrario

p>

ShowWindow hwn, SW_SHOWNORMAL 'Activar ventana

SetForegroundWindow hwn

Fin si

Fin si

Si i = 1 Luego 'Envía el texto '5ZqweSC' al cuadro de texto de la calculadora'

Text1.Text = "Envía el texto '5ZqweSC' al cuadro de texto de la calculadora"

hwn = FindWindow(vbNullString , "Calcular dispositivo")

twn = GetDlgItem(hwn, 403)

SendMessage twn, WM_SETTEXT, 0, "5ZqweSC"

End If

Si i = 2 Entonces 'La Calculadora simula la tecla Esc

Text1.Text = "La Calculadora simula la tecla Esc"

hwn = FindWindow(vbNullString, "Calculator")

PostMessage hwn, WM_KEYDOWN, vbKeyEscape, 0

End If

Si i = 3 Then 'Calculadora simula la clave 5

Text1. Text = "Calculadora simulada clave 5"

hwn = FindWindow(vbNullString, "Calculator")

PostMessage hwn, WM_KEYDOWN, vbKey5, 0

End If

Si i = 4 Entonces 'Teclas de simulación de calculadora+

Text1.Text = "Teclas de simulación de calculadora+"

hwn = FindWindow(vbNullString, "Calculadora")

PostMessage hwn, WM_KEYDOWN, vbKeyAdd, 0

Finalizar si

Si i = 5 Entonces 'La calculadora simula la tecla 7

Texto1.Texto = "Clave de simulación de calculadora 7"

hwn = FindWindow(vbNullString, "Calculator")

PostMessage hwn, WM_KEYDOWN, vbKey7, 0

End If

Si i = 6 Entonces 'La calculadora simula la tecla Intro

Text1.Text = "La calculadora simula la tecla Intro"

hwn = FindWindow(vbNullString, "Calculadora")

PostMessage hwn, WM_KEYDOWN, vbKeyReturn, 0

Fin si

i = i

+ 1

Si i = 7 Entonces i = 0

Fin Sub