无法让 SendInput() 工作

2024-03-10

我有点绝望了我已经尝试了几个小时了,但就是无法得到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(使用前将#替换为@)

无法让 SendInput() 工作 的相关文章

随机推荐

  • 如何在gemspec文件中指定依赖gem的路径?

    我创建了一个 gem X 但它没有发布 现在我正在创建另一个 gem 它将添加 gem X 作为依赖项 如下所示 s add dependency X 在 gemspec 文件中 由于 gem X 不在 ruby gem 或 git 或 r
  • 如果用户正在键入,则延迟 KeyUp 操作 (C#)

    我有一个当用户在搜索框中键入内容时被调用的函数 我想在实际执行该函数之前等待用户完成输入 我知道如何在 JavaScript 中通过超时轻松完成此操作 但是我如何在 C 中做同样的事情呢 另外 在假设用户完成输入之前我应该 等待多长时间 1
  • 如何排除 Sbt 中的传递依赖(在程序集插件的上下文中)?

    我有两个 Sbt 项目 我的共享空间 and 我的服务 我的共享空间 与依赖关系 libraryDependencies Seq nz ac waikato cms weka attributeSelectionSearchMethods
  • 无法将嵌套应用程序中的自定义 Django 模型指定为 AUTH_USER_MODEL

    我无法指定自定义AUTH USER MODEL如果该模型位于nested应用 这是一些项目结构 project settings py my parent app init py apps py my child app init py a
  • JUnit:如何避免测试实用程序类中的“无可运行方法”

    我已经从JUnit3 8切换到JUnit4 4 我使用 ant 运行测试 所有测试都成功运行 但测试实用程序类失败并出现 无可运行方法 错误 我使用的模式是在测试文件夹下包含名为 Test 的所有类 我知道运行程序找不到任何用 Test 属
  • Scrapy、privoxy 和 Tor:SocketError:[Errno 61] 连接被拒绝

    我将 Scrapy 与 Privoxy 和 Tor 一起使用 这是我之前的问题Scrapy 与 Privoxy 和 Tor 如何更新 IP https stackoverflow com questions 45009940 scrapy
  • 在 Android 上查找圆上的点

    一切看起来都那么简单明了 直到我必须真正对其进行编程 我有什么 我上传了一张图片以更好地解释它 我有一个圈子 我知道 它是半径 中心点坐标 每个按钮的初始坐标 红色圆圈 我希望能够在将灰色圆形图像旋转 10 度时计算红色按钮的新坐标 x1y
  • winform中如何只验证数字?

    如何在不使用按键选项的情况下验证数字 为什么不是Char IsNumber or IsDigit在职的 或者我应该使用正则表达式进行验证 private bool ValidateContact if Char IsNumber textB
  • Java:将浮点二进制转换为浮点十进制

    我想转换表示 IEEE754 双精度数尾数部分的字符串 找不到Java中是否有这样的转换方法 以避免手动添加1 1 2 1 4 1 8等 010000001100101000011111000000000000000000000000000
  • htaccess 清理 URL 的最佳方法是什么?

    我正在为我的网站开发干净的网址 我注意到您在互联网上找到的内容几乎都是将您的干净网址重写为您的服务器可以使用的网址 所以像这样 www domain com profile username gt www domain com profil
  • 用于分析 .Net 应用程序内存转储的工具

    有人可以推荐一个好的吗free除了 Adplus windbg sos 之外 还有用于分析 Net 内存转储的工具吗 你可以尝试一下调试诊断1 1 http blogs msdn com tess archive 2008 05 21 de
  • 是什么导致 Python 错误“bad escape \C”?

    我刚刚编写了一个函数 它将查看文本文件并计算文本文件中 True 和 False 的所有实例 这是我的文件 ATOM 43 CA LYS A 5 14 038 15 691 37 608 1 00 15 15 C True ATOM 52
  • Raft算法:term什么时候会增加?

    Raft将时间划分为任意长度的术语 如图5所示 术语用连续的整数编号 每个任期以一次选举开始 其中一名或多名候选人试图成为领导者 如第 5 2 节所述 如果候选人赢得选举 那么他将在剩余任期内担任领导者 在某些情况下 选举会导致投票分散 在
  • 为什么从搅拌机导出到 Unity 时我的 (FBX) 网格体有孔?

    我现在正在学习雕刻我的角色 当我将 FBX 文件从 Blender 导出到 Unity 时 网格物体的脸上有一个巨大的洞 我该如何预防 解决这个问题 它在 mixamo 中工作得很好 在此输入图像描述 https i stack imgur
  • C++11 中字符串文字的 Unicode 编码

    继一个相关问题 https stackoverflow com questions 6794590 how does file encoding affect c11 string literals 我想问一下C 11中新的字符和字符串文字
  • NUnit 插件与 Resharper 5

    最新的 Resharper v5 版本基于本机 NUnit 代码并允许 NUnit 插件 我有一个 NUnit 插件 可以在 NUnit GUI 中正常工作 但无法使其与 Resharper 一起工作 根据 R 指示 我已将插件库放入 Re
  • 如何使用 PHP/MySQLi 将 NULL 放入 MySQL 整数列?

    我通过 URL 将值传递到 PHP 页面 并在 MySQLi 查询中使用它们 问题在于 对于整数列 空字符串会转换为零 而实际上它需要为 NULL 如何使用 PHP MySQLi 从 URL 中传递的参数获取 NULL 到整数列中 更新 下
  • 不推荐在 build.gradle 中“启用”Android 数据绑定

    in build gradle file dataBinding enabled true enabled已弃用 找不到任何有关它的文档 任何人有任何想法如何解决它 尝试将其替换为 buildFeatures dataBinding tru
  • 获取多个 Pandas DataFrame 的平均值

    我正在生成许多具有相同形状的数据框 并且我想将它们相互比较 我希望能够获得数据帧的平均值和中位数 Source 0 Source 1 Source 2 Source 3 cluster 0 0 001182 0 184535 0 81423
  • 无法让 SendInput() 工作

    我有点绝望了我已经尝试了几个小时了 但就是无法得到SendInput 上班 说实话 我什至无法得到它的认可 它总是说 Error 1 The type or namespace name INPUT could not be found a