gpt4 book ai didi

c# - 使用 wpf : click, 拖动、输入、退出的完全鼠标控制仿真

转载 作者:行者123 更新时间:2023-11-30 22:39:55 36 4
gpt4 key购买 nike

我正在开展一个项目,我需要使用操纵杆 (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 适用于鼠标移动,但我不确定如何设置鼠标拖动。有什么指点吗?

最佳答案

请参阅此处有关 SO 的相关文章:

Injecting Mouse Input in WPF Applications

Simulate Mouse/Keyboard Input In WPF

Move the mouse in wpf

编辑:关于特定的“拖动”需求,这里是关于包含鼠标模拟方法的 MouseController 实用程序代码的另一个链接(来自此处的 NUnitForms 项目:http://nunitforms.sourceforge.net/):

http://nunitforms.svn.sourceforge.net/viewvc/nunitforms/trunk/nunitforms/source/NUnitForms/MouseController.cs?view=markup

它有一个拖动方法。你可以测试这是否有效。我知道,它是专门为 WPF 设计的,但值得一试。另外,如果它只是关于鼠标移动,如果您需要引用 Winforms 程序集,我认为没有问题。

关于c# - 使用 wpf : click, 拖动、输入、退出的完全鼠标控制仿真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5475726/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com