我正在开发一个项目,我需要使用操纵杆(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适用于鼠标移动,但我不确定如何操纵鼠标。有什么指针吗?
答案 0 :(得分:3)
请参阅此处的相关文章:
Injecting Mouse Input in WPF Applications
Simulate Mouse/Keyboard Input In WPF
编辑:关于特定的“拖动”需求,这里是另一个链接(来自NUnitForms项目:http://nunitforms.sourceforge.net/)关于包含鼠标模拟方法的MouseController实用程序代码:
它有一个Drag方法。您可以测试这是否有效。我知道,它专为WPF设计,但值得一试。另外,如果它只是关于鼠标移动,如果你需要引用Winforms组件,我没有看到问题。
答案 1 :(得分:0)
Benjamin,我用你的代码生成鼠标点击。我玩了内容,发现设置“dwFlags = 0x3”鼠标左键单击并按住:)