Листинг 2. Имитация нажатия клавиши
клавиатуры
Option Explicit
Public Const KEYEVENTF_EXTENDEDKEY = &H1
Public Const KEYEVENTF_KEYUP = &H2
Declare Sub keybd_event Lib "user32" _
    (ByVal bVk As Byte, ByVal bScan As Byte, _
    ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanA"_
    (ByVal cChar As Byte) As Integer
Declare Function CharToOem Lib "user32" Alias "CharToOemA"_
    (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Declare Function OemKeyScan Lib "user32" _
    (ByVal wOemChar As Integer) As Long
Public Sub SendMyKey(ByVal c$)
'
' Посылка одиночного ASCI-символа для имитации
' нажатия клавиши клавиатуры
    Dim vk%, scan%, oemchar$
        ' Получаем значение виртуального кода
        ' клавиши для данного символа
    vk% = VkKeyScan(Asc(c$)) And &HFF
    oemchar$ = " " ' буфер на два символа
    ' получение OEM-символа
    CharToOem Left$(c$, 1), oemchar$
        ' получение scan-кода для этой клавиши
    scan% = OemKeyScan(Asc(oemchar$)) And &HFF
        ' Нажатие клавиши
    keybd_event vk%, scan%, 0, 0
        ' Отжатие клавиши
    keybd_event vk%, scan%, KEYEVENTF_KEYUP, 0
End Sub