Любой другой метод для имитации ввода пользовательской мыши, кроме WinAPI? - PullRequest
3 голосов
/ 18 января 2011

Я знаю, что по этой теме было несколько вопросов, но те, которые я хотел бы задать, более конкретны:

Существует ли какой-либо другой метод имитации движения мыши, кроме как бросать вызовы WinAPI повсюду? Если да, то хорошо ли это по сравнению с упаковкой этих вызовов в моем собственном классе?

Для записи: под «движением мыши» я подразумеваю все нажатия и изменение положения, желательно, но не обязательно, с видимой анимацией перемещения курсора между позициями.

Ответы [ 2 ]

1 голос
/ 18 января 2011

Вернувшись в программирование DOS, я динамически перехватил прерывание, которое нельзя сделать аналогичным образом в защищенном режиме, но я вполне уверен, что DirectInput также имеет где-то некоторые функции, которые могут отличаться от способа Win32

Существуют альтернативные библиотеки для обработки ввода, которые, как я думаю, есть в SDL и, возможно, GLFW, но может быть трудно добавить их в проект для обработки мыши.

Исправление: SDL использует DirectInput для окон.Я не знаю, насколько приятнее вы найдете .NET, чем win32, но есть и другой способ.Я был уверен, что у меня есть закладка где-то в библиотеке, которая идеально подходит = / где это ...

.NET, неплохо, если вы уже используете .NET, особенно: MSDN ReferenceСтраница

Что касается щелчка для этого решения, просто отправьте сообщение в основной цикл или там, где вы уже обнаруживаете щелчки, вместо установки щелчка мыши.Хотя я уверен, что есть другие библиотеки с этой функцией.

ОБНОВЛЕНИЕ: Проверьте http://wiki.osdev.org/Mouse_Input для получения некоторой информации о более прямом использовании и написании драйвера,Это и, как выясняется, использование INT 33h также возможно под Windows (и другими более дружественными для разработчиков ОС) с некоторыми усилиями!

0 голосов
/ 18 января 2011

Если вы можете жить только с имитацией нажатия на различные элементы управления, попробуйте вручную вызвать событие Click элемента управления или, для кнопок, вы можете использовать Control.PerformClick () .

...