我的想法是通过模拟Alt键加小键盘数字键,来输出音标中的特殊字符,但是组合键失败了!
Rem 转移输入焦点的声明
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Rem 窗口置顶的声明
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Rem 模拟按键声明
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Rem 禁止本窗体拥有输入焦点的常数
Private Const HWND_NOTOPMOST = -2
Private Const WS_DISABLED = &H8000000
Private Const GWL_EXSTYLE = (-20)
Private Const GWL_STYLE = (-16)
Rem 窗口置顶的常数
Private Const HWND_TOPMOST = -1
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const SWP_SHOWWINDOW = &H40
Rem 模拟按钮常数
Private Const KEYEVENTF_KEYUP = &H2
Private Sub Command1_Click() '模拟在小键盘上依次分别按 1键 0键 1键 成功了
keybd_event 97, 0, 0, 0
keybd_event 97, 0, KEYEVENTF_KEYUP, 0
keybd_event 96, 0, 0, 0
keybd_event 96, 0, KEYEVENTF_KEYUP, 0
keybd_event 97, 0, 0, 0
keybd_event 97, 0, KEYEVENTF_KEYUP, 0
End Sub
Private Sub Command2_Click() '模拟按Alt键 成功了
keybd_event 18, 0, 0, 0
keybd_event 18, 0, KEYEVENTF_KEYUP, 0
End Sub
Private Sub Command3_Click() '模拟先按下Alt键,再在小键盘上依次分别按 1键 0键 1键 然后松开Alt键 失败了,没能输出字母e
keybd_event 18, 0, 0, 0
keybd_event 97, 0, 0, 0
keybd_event 97, 0, KEYEVENTF_KEYUP, 0
keybd_event 96, 0, 0, 0
keybd_event 96, 0, KEYEVENTF_KEYUP, 0
keybd_event 97, 0, 0, 0
keybd_event 97, 0, KEYEVENTF_KEYUP, 0
keybd_event 18, 0, KEYEVENTF_KEYUP, 0
End Sub
Private Sub Form_Load()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE '窗体置顶
SetWindowLong Me.hwnd, GWL_EXSTYLE, GetWindowLong(Me.hwnd, GWL_EXSTYLE) Or WS_DISABLED '转移焦点
End Sub
2023年08月28日 06点08分
4