SendInput 鼠标点击不起作用
开发环境:WPF 、 Windows 11系统 、Visual Studio 2022 (管理员启动)
想实现一个功能:通过WPF调用user32,模拟鼠标点击,目前通过SetCursorPos和mouse_event函数已经可以实现,鼠标会移动到对应坐标不太友好,想用SendInput实现静默点击。
遇到的问题:SendInput实现静默点击不起作用
public class MouseSimulator
{
// 鼠标事件类型
[Flags]
public enum MouseEventFlags
{
LeftDown = 0x0002,
LeftUp = 0x0004,
MiddleDown = 0x0020,
MiddleUp = 0x0040,
RightDown = 0x0008,
RightUp = 0x0010,
Wheel = 0x0800,
XDown = 0x0080,
XUp = 0x0100
}
// 定义鼠标输入结构体
[StructLayout(LayoutKind.Sequential)]
public struct MOUSEINPUT
{
public int dx;
public int dy;
public int mouseData;
public MouseEventFlags dwFlags;
public int time;
public IntPtr dwExtraInfo;
}
// 定义输入结构体
[StructLayout(LayoutKind.Explicit)]
public struct INPUT
{
[FieldOffset(0)]
public int type;
[FieldOffset(4)]
public MOUSEINPUT mi;
}
// 导入SendInput函数
[DllImport("user32.dll", SetLastError = true)]
static extern uint SendInput(uint nInputs, [MarshalAs(UnmanagedType.LPArray)] INPUT[] pInputs, int cbSize);
// 鼠标模拟单击方法
public static void SimulateMouseClick(int x, int y)
{
// 设置鼠标坐标
MOUSEINPUT mouseInput = new MOUSEINPUT
{
dx = x,
dy = y
};
// 设置鼠标点击事件
mouseInput.dwFlags = MouseEventFlags.LeftDown;
INPUT inputDown = new INPUT
{
type = 0,
mi = mouseInput
};
mouseInput.dwFlags = MouseEventFlags.LeftUp;
INPUT inputUp = new INPUT
{
type = 0,
mi = mouseInput
};
// 模拟鼠标点击事件
INPUT[] inputs = new INPUT[] { inputDown, inputUp };
SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(INPUT)));
}
}
相关推荐
delphi10.1通过SendInput模拟鼠标移动点击的示例
delphi10.1通过SendInput模拟鼠标移动点击的示例,给初学者的
使用Sendinput函数模拟鼠标键盘操作
文章目录1.程序说明2.分析3.SendInput 1.程序说明 vs2008编译 代码在gayhub,链接 主要是使用SendInput函数,所以要好好看参数说明,建议MSDN走一波 2.分析 以鼠标为例,按左键,可以分成2个步骤: 1.鼠标左键按下 2.鼠标左键弹起 所以,模拟一个按键的动作,需要input2个事件,一般是key_down,key_up 怎么模拟组合键呢?比如说ct...
C# SendInput 实现模拟鼠标操作
本文是我学习C#模拟鼠标操作的实践心得。想实现一个模拟鼠标在屏幕上的Flash区域内逐行单击操作,来一一收获金币。c#中没有提供相关的方法,但是Win API中有,通过一番查找试验,使用SendInput方法实现。此过程中,学会了如何在C#中调用WINDOWS API,如何使用SendInput,像素坐标和绝对坐标之间的转换等。积累经验就是看帮助一定要看英文的,中文的总是少些东西,多些别扭。调试的时候,对于不熟悉的东西,先不要急于做进程序里,先用小例子一点一点地试。例如先试验怎么单击一个点,成功再
C# SendInput 模拟鼠标操作的实现方法
C# SendInput 模拟鼠标操作的实现方法,需要的朋友可以参考一下
c#实现鼠标在指定的坐标点击屏幕
vs2010环境,采用c#实现了,鼠标自动在屏幕某个坐标上进行点击操作。


