5

我将如何制作一个不断向上移动鼠标的小程序?


对于那些想知道的人来说,这是一个很小的一次性东西。我在玩星球大战原力释放。在控制台版本中,您将向上握住右摇杆。在 PC 上的错误控制台端口中,您正在使用鼠标。也许你能理解我的沮丧。

4

3 回答 3

18

This is a problem for mechanical programming, not CSharp.

  • You need to plug in a second mouse, and get a cheap variable speed corded drill.
  • Put a sanding drum on the drill, wrap it with striped paper, and set it to the lowest speed.
  • Then put a bracket on the non-rotating body of the drill that will hold the mouse with its sensor close to the spinning striped paper.
  • Ensure the mouse is facing the right way to simulate an up movement.

To execute the program, flip the power switch on the power strip the drill is plugged into.

Edit: if you want more portable code, use a cordless drill. Batteries not included.

于 2009-12-22T23:00:19.133 回答
16

SetCursorPos将在非托管代码中执行此操作。我不确定是否有 .NET 方法可以做到这一点,但您始终可以使用 com interop。它在 User32.dll 中

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

一个小谷歌将其生成为.net 的 SetCursorPos 等效项

System.Windows.Form.Cursor.Position
于 2009-12-22T22:38:33.903 回答
3

我不知道这个游戏,但在内部,windows 会发出鼠标移动的消息。这些通过SendMessage()API 调用发送到应用程序。在 C# 中,您要么必须直接使用相同的 Win32 API,要么可能通过创建/发送事件?不确定如何将事件发送到另一个正在运行的应用程序。

C# 中定义的 SendMessage() Win32 API 调用如下所示:

[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
              );
于 2009-12-22T22:32:33.900 回答