Возможно, самый простой способ - использовать BlockInput () , который блокирует ввод данных с помощью мыши и клавиатуры по всему рабочему столу: это полезно, если вы хотите заблокировать пользователя только на короткий период времени .
В качестве альтернативы, если вы просто хотите заблокировать ввод от достижения определенного exe-файла, используйте SetWindowsHookEx (WH_KEYBOARD_LL, ...) - для MSDN вы можете вернуть -1 из hookproc, чтобы заставить быть проигнорированным:
Если nCode больше или равно нулю, [...] Если процедура подключения обработала сообщение, она может вернуть ненулевое значение, чтобы система не могла передать сообщение остальной части цепи подключения или процедуре целевого окна.
Одна приятная особенность хуков WH_KEYBOARD_LL в том, что им не требуется отдельная DLL, вы можете делать все в своем собственном EXE. Но используйте его только против идентификатора потока приложения Excel; если у вас есть HWND приложения, используйте GetWindowThreadID (), чтобы получить это.