我有点绝望了我已经尝试了几个小时了,但就是无法得到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
and 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()));
}
}
}
如果有人能提供帮助,我会很高兴!
你错过了INPUT
结构。它不是来自System.Windows.Input
如果这就是你的想法(猜测是因为using
).
您可以找到必要的 C# 和 VB.NET 结构here http://www.pinvoke.net/default.aspx/Structures/INPUT.html
Your SendInputEventType
实际上只是一个枚举或一个带有常量的类。PInvoke 也定义了这一点 http://pinvoke.net/default.aspx/Structures/INPUT_TYPE.html.
internal enum INPUT_TYPE : uint
{
INPUT_MOUSE = 0,
INPUT_KEYBOARD = 1,
INPUT_HARDWARE = 2
}
您可以更新代码以使用此名称或重命名此枚举以匹配您的代码。由你决定。
这是一个很好的答案,其中有一个实施示例SendInput
定义了这些结构:如何在winform和wpf中以编程方式实现鼠标移动、单击、右键单击和按键等? https://stackoverflow.com/a/5098968/359157
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)