Я пытаюсь переместить курсор с помощью клавиш со стрелками на клавиатуре.В результате он будет двигаться, но только вверх и влево ... в верхний левый угол экрана.Он не движется вниз, как задумано.
Теперь, если я сделаю свой xSpeed и ySpeed больше 3, он будет работать, но движение вниз и вправо будет медленнее.Если я сделаю скорость 10, то результат будет незаметным, но это слишком быстро для того, для чего мне это нужно.
[DllImport("User32.dll",EntryPoint = "mouse_event",CallingConvention = CallingConvention.Winapi)]
internal static extern void Mouse_Event(int dwFlags,int dx,int dy,int dwData,int dwExtraInfo);
[DllImport("User32.dll",EntryPoint = "GetSystemMetrics",CallingConvention = CallingConvention.Winapi)]
internal static extern int InternalGetSystemMetrics(int value);
private void UpdateLoop()
{
if (_hotKeys.Contains(Keys.Up))
MoveCursor(y: -YSpeed());
if (_hotKeys.Contains(Keys.Down))
MoveCursor(y: YSpeed());
if (_hotKeys.Contains(Keys.Left))
MoveCursor(x: -XSpeed());
if (_hotKeys.Contains(Keys.Right))
MoveCursor(x: XSpeed());
}
private void MoveCursor(int x = 0, int y = 0)
{
int to_x = MousePosition.X + x;
int to_y = MousePosition.Y + y;
int screenWidth = InternalGetSystemMetrics(0);
int screenHeight = InternalGetSystemMetrics(1);
int mic_x = (int)Math.Round(to_x * 65536.0 / screenWidth);
int mic_y = (int)Math.Round(to_y * 65536.0 / screenHeight);
Mouse_Event(0x0001 | 0x8000, mic_x, mic_y, 0, 0);
}
В этом случае XSpeed и YSpeed равны единице.
public int XSpeed()
{
return int.Parse(tb_x.Text);
}
public int YSpeed()
{
return int.Parse(tb_y.Text);
}
Любая помощь будет принята с благодарностью!