Я нашел решение для своего собственного вопроса, он все еще подвержен сбоям, если не обрабатывается осторожно, но теперь мое приложение фактически реагирует на комбинации клавиш, которые я хотел, Ctrl + N, Ctrl + O и т. Д.
Ниже приведен мой исправленный код, который работает хорошо, насколько я знаю. Предлагаю, если вы обнаружите в нем какую-либо ошибку, которая приведет к сбою моего приложения.
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Property Get CtrlPressed() As Boolean
CtrlPressed = (GetAsyncKeyState(vbKeyControl) <> 0)
End Property
Private Function IWindowsHook_HookProc(ByVal eType As EHTHookTypeConstants, ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long, bConsume As Boolean) As Long
If wParam = vbKeyN Then
If CtrlPressed Then
LoadFormNewReport 'Method that opens Child Form 'New Report'
End If
bConsume = True
ElseIf wParam = vbKeyS Then
If CtrlPressed Then
SaveNewReport 'Method that saves new Report
End If
bConsume = True
ElseIf wParam = vbKeyF5 Then
If Not CtrlPressed Then
frmSettings.Show 'This form needs to be displayed Modally but if tried so then crashes application along with VB IDE, other short-cuts work fine.
bConsume = True
End If
End If
End Function