我有点绝望。我已经试了好几个小时了,但我就是不能让SendInput()工作。老实说,我连它都认不出来。它总是说:
Error 1 The type or namespace name 'INPUT' could not be found (are you missing a using directive or an assembly reference?)我只是找不出该用哪个图书馆。关于包含什么内容,我几乎没有任何信息,我所能找到的只是C++,或者在我尝试using时根本不存在。请帮帮忙!
我在试着让我的程序做个口交.这是代码,它是我找到并试图开始工作的许多版本之一。在这个版本中,程序也找不到INPUT和SendInputEventType
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace autoPlayer
{
class Win32
{
enum SystemMetric
{
SM_CXSCREEN = 0,
SM_CYSCREEN = 1,
}
[DllImport("user32.dll")]
static extern int GetSystemMetrics(SystemMetric smIndex);
int CalculateAbsoluteCoordinateX(int x)
{
return (x * 65536) / GetSystemMetrics(SystemMetric.SM_CXSCREEN);
}
int CalculateAbsoluteCoordinateY(int y)
{
return (y * 65536) / GetSystemMetrics(SystemMetric.SM_CYSCREEN);
}
public static void ClickLeftMouseButton(int x, int y)
{
INPUT mouseInput = new INPUT();
mouseInput.type = SendInputEventType.InputMouse;
mouseInput.mkhi.mi.dx = CalculateAbsoluteCoordinateX(x);
mouseInput.mkhi.mi.dy = CalculateAbsoluteCoordinateY(y);
mouseInput.mkhi.mi.mouseData = 0;
mouseInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_MOVE | MouseEventFlags.MOUSEEVENTF_ABSOLUTE;
SendInput(1, ref mouseInput, Marshal.SizeOf(new INPUT()));
mouseInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTDOWN;
SendInput(1, ref mouseInput, Marshal.SizeOf(new INPUT()));
mouseInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTUP;
SendInput(1, ref mouseInput, Marshal.SizeOf(new INPUT()));
}
}
}如果有人能帮忙,我会很高兴的!
发布于 2015-02-03 22:22:06
您缺少了INPUT结构。如果你这么想的话,它不是来自System.Windows.Input (由于using而猜测)。
您可以找到必要的C#和VB.NET结构这里。
您的SendInputEventType实际上只是一个枚举或一个具有常量的类。PInvoke也有这个定义。。
internal enum INPUT_TYPE : uint
{
INPUT_MOUSE = 0,
INPUT_KEYBOARD = 1,
INPUT_HARDWARE = 2
}您可以更新代码以使用此名称,也可以将此枚举重命名以与代码匹配。由你决定。
下面是一个很好的答案,其中有一个用定义的结构实现SendInput的示例:如何编程鼠标移动,点击,右击和按键等在winform和wpf?
发布于 2015-02-03 22:19:05
你不需要这样的东西吗
[DllImport("user32.dll")]
internal static extern uint SendInput (uint nInputs,
[MarshalAs(UnmanagedType.LPArray), In] INPUT[] pInputs,
int cbSize);https://stackoverflow.com/questions/28309687
复制相似问题