#c #windows
Вопрос:
Как проверить, находится ли система Windows в состоянии приема ввода с помощью языка c?
Например:
- если курсор находится на рабочем столе, получите «false»
- если курсор находится в заголовке блокнота, получите «false», но в клиентской области получите «true»
- если курсор находится в окне редактирования текста, получите «true»
- если курсор находится в области игрового поля, получите «false», но в области игрового чата получите «true».
- …
Если он обнаруживает определенное окно, мы можем попытаться захватить IME-сообщение этого окна.
Но если это происходит в неопределенной системной среде (не знаю, какие окна открыты), как определить?
Комментарии:
1. Какую проблему вы пытаетесь решить?
2. Вы можете проверить, сфокусирована ли ваша программа, прослушав
WM_SETFOCUS
ее в wndproc. Если вы хотите проверить, фокусируется ли какая- либо программа в каком-либо подокне, которое принимает ввод, что ж, это очень сложный и слишком широкий вопрос для этого сайта.3. @IInspectable Я хочу смоделировать работу с клавиатурой. Например, если мне сейчас нужно работать с окном, если окно можно открыть, я могу отправить символ » A «с помощью postMessage(дескриптор, WM_CHAR, «A», 0), в противном случае он не может быть открыт, я могу отправить операцию, которую » A » нажимает с помощью postMessage(Дескриптор, WM_KEYDOWN, «A», 0). Я могу ввести «A-Z, a-z, !@#$%^amp;*()_ » с WM_CHAR, но может вводить только «a-z» с помощью WM_KEYDOWN. Пока я могу проверить, находится ли система (или окно) в допустимом состоянии, я могу обрабатывать ее по-другому
4. @Lundin em, я хочу проверить любую активную в данный момент программу системы
5. Система всегда будет находиться в состоянии, в котором она принимает входные данные. Проблема, о которой вы спросили, не имеет решения. Проблема, которую вы пытаетесь решить, заключается в автоматизации пользовательского интерфейса.