在C#中,SendInput方法用于模拟用户输入,如键盘按键和鼠标事件。它可以用来自动化测试、模拟用户操作等场景。
下面是一个SendInput方法的示例代码:
using System;
using System.Runtime.InteropServices;
public class InputSimulator
{
[DllImport("user32.dll", SetLastError = true)]
private static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize);
[StructLayout(LayoutKind.Sequential)]
public struct INPUT
{
public uint type;
public InputUnion u;
}
[StructLayout(LayoutKind.Explicit)]
public struct InputUnion
{
[FieldOffset(0)]
public MOUSEINPUT mi;
[FieldOffset(0)]
public KEYBDINPUT ki;
}
public struct MOUSEINPUT
{
public int dx;
public int dy;
public uint mouseData;
public uint dwFlags;
public uint time;
public IntPtr dwExtraInfo;
}
public struct KEYBDINPUT
{
public ushort wVk;
public ushort wScan;
public uint dwFlags;
public uint time;
public IntPtr dwExtraInfo;
}
public static void SendKey(ushort key)
{
INPUT[] inputs = new INPUT[1];
inputs[0].type = 1; // Input is a keyboard event
inputs[0].u.ki.wVk = key;
inputs[0].u.ki.dwFlags = 0; // Key press
SendInput(1, inputs, Marshal.SizeOf(inputs[0]));
}
}
使用以上代码,你可以调用InputSimulator类的SendKey方法来模拟按下指定的键盘按键。例如,若要模拟按下A键,可以这样调用:
InputSimulator.SendKey(0x41);
上述示例仅演示了如何模拟键盘事件,你也可以根据需要,扩展代码以支持鼠标事件等其他功能。