WindowProc内でキー入力を無視するのであれば 引数のmessageがWM_CHARの場合に対処するようにしてみましょう
コード:
Function LimitedEditProc(hWnd As HWND, message As DWORD, wParam As WPARAM, lParam As LPARAM) As DWORD
Dim LimitChar As String
'OK LimitChar=" !#$&()*+,/<=>?@[\]^_`{|}~"+Chr$(&H22)
'NG LimitChar=" !#$%&'()*+,/<=>?@[\]^_`{|}~"+Chr$(&H22)
LimitChar=" !#$&()*+,/<=>?@[\]^_`{|}~"+Chr$(&H22)
if message = WM_CHAR then
If InStr(1, LimitChar, Chr$(wParam As Byte)) Then
LimitedEditProc=0
Exit Function
End If
End If
LimitedEditProc=CallWindowProc(DefEditProc , hWnd, message, wParam, lParam)
End Function