Я работаю над собственным программным обеспечением для управления мышью на моем компьютере с использованием C # и kinect SDK.Я действительно хочу попробовать использовать его, чтобы играть в такую игру, как Red Alert, или что-то вроде RTS, или даже просто для общей навигации.
Проблема, которую я обнаружил, заключается в том, что при использовании программы с другиммыши, например, при красном оповещении или при переходе на виртуальную машину, где интеграция с мышью не поддерживается, программа не будет воспринимать вызовы, которые программа C # делает с вызовами System.Windows.Forms.Cursor, не говоря уже о вызовах mouse_event,Я новичок в области взаимодействия с Windows, и что здесь происходит, может кто-нибудь объяснить / представить решение?
- ОБНОВЛЕНИЕ-- В качестве обновления, я все еще не совсем уверен, что происходит, но япохоже, что нашли обходной путь для красного оповещения, в частности;
Поскольку красное оповещение - довольно слабая графическая программа, тривиально запустить его на виртуальной машине специально для меня, рабочей станции vmware с клиентом XP.Если вы используете код mouse_event, он работает хорошо, ОДНАКО, то, с чем я боролся, находило правильный код, представляющий движение мыши.Казалось бы, флаг MOVE перемещает мышь относительно, чего я не хотел, а абсолютный тег вообще не двигал мышь.Фактически, ИЛИ из них производит абсолютное движение на экране, поэтому мой код для движения мыши и эмуляции щелчка в итоге выглядел так:
mouse_event((int)0x00000002, cursor.X, cursor.Y, 0, 0);
для нажатия и
mouse_event((int)(0x00000001 | 0x00008000), x, y, 0 0);
для движения мыши, где x и y - новые координаты из 65535 (абсолютный диапазон).Это идеально?Неа.Но это работает на данный момент.Я думаю, что это как-то связано с тем, как windows игнорирует определенные программы при запуске ra, возможно из-за режима совместимости?У меня нет другой игры для тестирования, но я опубликую результаты в режиме несовместимости в будущем.
(Это не позволило бы мне опубликовать ответ в течение еще двух часов, и я должен спать, чтобы успеть на рейс утром!)