Имитация движения мыши (C #) - PullRequest
3 голосов
/ 23 декабря 2009

Как бы я сделал маленькую программу, которая будет двигать мышь вверх?


Для тех, кто хотел бы знать, это крошечная вещь одноразового использования. Я играю в Star Wars The Force Unleashed. В консольных версиях вы держите правую ручку вверх. В консольном порту bad на компьютере вы используете мышь. Может быть, вы можете понять мое разочарование.

Ответы [ 4 ]

15 голосов
/ 23 декабря 2009

Это проблема для механического программирования, а не для CSharp.

  • Вам нужно подключить вторую мышь, и получить дешевый проводной переменной скорости сверлить.
  • Положите шлифовальный барабан на сверлить, обернуть его полосатой бумагой, и установите его на самую низкую скорость.
  • Затем поставьте кронштейн на невращающиеся тело тренировки, которая будет держать мышь с ее сенсором близко к спиннинг полосатая бумага.
  • Убедитесь, что мышь направлена ​​в правильном направлении имитировать движение вверх.

Чтобы выполнить программу, нажмите выключатель питания на удлинителе, к которому подключено сверло.

Редактировать: если вы хотите больше переносимого кода, используйте беспроводную дрель. Аккумуляторы не включены.

9 голосов
/ 23 декабря 2009

SetCursorPos сделает это в неуправляемом коде. Я не уверен, есть ли метод .NET, чтобы сделать то же самое, но вы всегда можете использовать com interop. Это в User32.dll

[DllImport("user32.dll")]
static extern bool SetCursorPos(int X, int Y);

маленький гугл производит это как SetCursorPos эквивалент для .net

System.Windows.Form.Cursor.Position
3 голосов
/ 23 декабря 2009

Я не знаю игру, но внутренне Windows посылает сообщения для перемещения мыши. Они отправляются вызовом API SendMessage() приложению. В C # вам придется либо использовать тот же Win32 API напрямую, либо, возможно, создать / отправить событие? Не уверен, как отправить событие в другое работающее приложение.

Вызов Win32 API SendMessage (), определенный в C #, будет выглядеть так:

[DllImport("user32.dll")]
        public static extern int SendMessage(
              int hWnd,     // handle to destination window
              uint Msg,     // message
              long wParam,  // first message parameter
              long lParam   // second message parameter
              );
2 голосов
/ 23 декабря 2009

Вы пробовали использовать контроллер или джойстик?

http://www.merconnet.com/product_info.php?products_id=44

...