Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo utilizar WinIO para escribir en VB?

¿Cómo utilizar WinIO para escribir en VB?

El controlador se instala primero usando la función interna InitializeWinIo y luego puede usar GetPortVal para leer el puerto o SetPortVal para escribir el puerto. Bien, vayamos a la emulación de teclado a nivel de controlador.

Primero, copie los tres archivos winio a la carpeta del programa, luego cree un nuevo proyecto con VB, agregue un módulo y agregue la siguiente declaración de función winio en el módulo:

Declare Function MapPhysToLin Lib "WinIo. dll " (ByVal PhysAddr As Long, ByVal PhysSize As Long, ByRef PhysMemHandle) As Long

Declarar la función UnmapPhysicalMemory Lib "WinIo.dll" (ByVal PhysMemHandle, ByVal LinAddr) como booleana

Declarar Función GetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByRef PhysVal As Long) como booleana

Declarar la función SetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysVal As Long) como booleana

Declarar la función GetPortVal Lib "WinIo.dll" (ByVal PortAddr como entero, ByRef PortVal mientras, ByVal bSize como byte) como booleano

Declarar la función SetPortVal Lib "WinIo.dll" " (ByVal PortAddr como SetPortVal Lib "WinIo.dll" (ByVal PortAddr como entero, ByVal PortVal mientras, ByVal bSize como byte) como booleano

Declarar función InicializarWinIo Lib "WinIo.dll" () como booleano

Declarar la función ShutdownWinIo Lib "WinIo.dll" () como booleano

Declarar la función InstallWinIoDriver Lib "WinIo.dll" (ByVal DriverPath como cadena, modo ByVal como entero) como booleano

Declarar la función RemoveWinIoDriver Lib "WinIo.dll" () como booleana

' ----------------------- ------------ -Lo anterior es la declaración de la función WINIO------------------------------ -- -----------

Declarar función MapVirtualKey Lib "user32" Alias ​​​​"MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long

' ---------------------------------- Lo anterior es la declaración de función API WIN32---- ----- ---------------------------- ---

----

Agregue este proceso nuevamente:

Sub KBCWait4IBE() 'Espera a que el buffer del teclado esté vacío

Dim dwVal As Long

Hacer

GetPortVal &H64, dwVal, 1

'Esta línea significa leer un byte del puerto &H64 y poner los datos leídos en Ingrese la variable dwVal

'El uso de la función GetPortVal es el número de puerto GetPortVal, la variable para guardar los datos leídos y la longitud de los datos leídos

Loop While (dwVal And & H2)

End Sub

Lo anterior es un procedimiento almacenado escrito de acuerdo con la especificación KBC, que espera un período de tiempo antes de escribir datos en el puerto del teclado, que se utilizará más adelante.

Luego agregue el siguiente procedimiento almacenado para simular operaciones clave:

Public Const KBC_KEY_CMD = &H64 'Puerto de comando de teclado'

Public Const KBC_KEY_DATA = &H60 ' Puerto de datos del teclado'

Sub MyKeyDown(ByVal vKeyCoad As Long)

'Esto se usa para simular una pulsación de tecla, con el parámetro vKeyCoad pasado como código virtual para la tecla

Atenuar btScancode siempre

btScancode = MapVirtualKey( vKeyCoad, 0)

KBCWait4IBE 'Debe esperar a que el búfer del teclado esté vacío antes de enviar datos

SetPortVal KBC_KEY_CMD, & HD2, 1 'Enviar comando de escritura del teclado

'La función SetPortVal se utiliza para escribir datos en el puerto. Su uso es el siguiente Número de puerto SetPortVal, datos a escribir, datos. por escribir Longitud de datos

KBCWait4IBE

SetPortVal KBC_KEY_DATA, btScancode, 1 'Escribir información clave, claves

End Sub

Sub MyKeyUp ( ByVal vKeyCoad As Long)

'Esto se usa para simular la liberación de una clave, el parámetro vKeyCoad pasará el código virtual de la clave

Dim btScancode As Long

btScancode = MapVirtualKey(vKeyCoad, 0)

KBCWait4IBE 'Esperar a que el buffer del teclado esté vacío

SetPortVal KBC_KEY_CMD, & HD2, 1 'Enviar comando de escritura del teclado

KBCWait4IBE

SetPortVal KBC_KEY_DATA, (btScancode Or &H80), 1 'Escribe la información clave y libera la clave

End Sub

Después de definir el proceso anterior, puedes Úselo para simular la entrada del teclado.

Agregue un control de temporizador en el módulo de formulario y luego agregue el siguiente código:

Private Sub Form_Load()

If InitializeWinIo = False Then

'Use InitializeWinIo The La función carga el controlador y devuelve verdadero si tiene éxito; de lo contrario, devuelve falso

MsgBox "¡Falló la carga del controlador!"

Descargarme

Finalizar si

Temporizador1.Interval = 3000

Temporizador1.Enabled = Verdadero