Эмуляция мыши в другой программе

Я работаю над своим собственным программным обеспечением для управления мышью на моем компьютере, используя C # и kinect SDK. Я действительно хочу попробовать использовать его, чтобы поиграть в такую ​​игру, как Red Alert, или какую-нибудь стратегию в реальном времени, или даже просто для общей навигации.

Проблема, которую я обнаружил, заключается в том, что при использовании программы с другой мышью, например при использовании красного предупреждения или при входе в виртуальную машину, где интеграция с мышью не поддерживается, программа не принимает вызовы, поступающие от C #. программа выполняет вызовы System.Windows.Forms.Cursor, не говоря уже о вызовах mouse_event. Я новичок в взаимодействии с окнами, и что здесь происходит, может ли кто-нибудь объяснить / предложить решение?

- ОБНОВЛЕНИЕ-- Что касается обновления, я все еще не совсем уверен, что происходит, но, похоже, я нашел обходной путь для красного предупреждения, в частности;

Поскольку красное предупреждение - это довольно низкая графическая программа, запускать ее в виртуальная машина специально для меня, рабочая станция 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, может быть, из-за режима совместимости? У меня нет другой игры, чтобы протестировать ее прямо сейчас, но я опубликую результаты с режимом несовместимости в будущем.

  • Пит

(Это не позволило мне отправить ответ еще два часа, и мне нужно спать, чтобы успеть на рейс утром!)

6
задан Pete.Mertz 1 January 2012 в 04:36
поделиться