Я работаю над проектом, в котором мне нужно использовать джойстик (DirectInput) для управления указателем мыши внутри приложения wpf.Мне нужно иметь возможность нажимать / отпускать кнопку мыши, а также, возможно, перетаскивать по экрану.Предпочтительно это должно фактически управлять мышью, позволяя использовать джойстик для управления другими приложениями.У меня все разобрались на стороне DirectInput, но у меня проблемы с взаимодействием перетаскивания мышью.
Вот как я делаю нажатие левой кнопки вниз:
[DllImport("user32.dll", SetLastError = true)]
static extern uint SendInput(uint nInputs, ref Input pInputs, int cbSize);
...
var aInput = new Input {
type = 0x0,
mouse = new MouseInput {
dwFlags = 0x6,
dwExtraInfo = 0,
mouseData = 0,
time = 0
}
};
SendInput(1, ref aInput, 28);
где Input и MouseInput следующие:
[StructLayout(LayoutKind.Explicit)]
public struct Input {
[FieldOffset(0)]
public int type; // 4
[FieldOffset(4)]
public MouseInput mouse; // 24
}
[StructLayout(LayoutKind.Explicit)]
public struct MouseInput {
[FieldOffset(0)]
public int dx; // 4
[FieldOffset(4)]
public int dy; // 4
[FieldOffset(8)]
public int mouseData; // 4
[FieldOffset(12)]
public int dwFlags; // 4
[FieldOffset(16)]
public int time; // 4
[FieldOffset(20)]
public int dwExtraInfo; // 4
};
Этот метод работает для левой / правой кнопки мыши вниз, а System.Windows.Forms.Cursor.Position хорошо работает для перемещения мыши, но яне уверен, как получить перетаскивание мышью.Есть указатели?