Я работаю над автоматизированной библиотекой тестирования и хочу имитировать ввод с клавиатуры и мыши с помощью SendInput Win32 API. Этот API позволяет выдвинуть несколько элементов ввода за один вызов API. Существует множество других примеров и аналогичных библиотек, использующих SendInput. Многие из них передают одну операцию ввода для каждого вызова API. Есть ли какое-либо преимущество для пакетных входов или использования одного входа для каждого вызова SendInput? Документация, кажется, не предлагает руководство, или, возможно, я неправильно ее читаю.
Нет никакой реальной пользы для одной техники по сравнению с другой, о которой я знаю. В любом случае обычная потенциальная проблема с SendInput заключается в том, что фокус ввода может изменяться между отправкой ввода и получением ввода целевым приложением. Классическим примером является модальное диалоговое окно, появляющееся асинхронно, чтобы предупредить пользователя о некоторой проблеме, и в итоге он крадет фокус и впитывает оставшийся ввод, который должен был пойти в другое место. В этом сценарии нет разницы между выполнением последовательной серии SendInputs и одного SendInput.
(Я почти уверен, что внутренне SendInput просто перебирает входные данные, передаваемые ему …)
Других решений пока нет …