Windows开发:鼠标操作

2023-05-16

本文为作者原创,转载请注明出处

一般情况下,Windows平台下可以使用mouse_event函数实现鼠标操作
我们这里使用更新后的SendInput函数

bool MouseEventpos(InputData data)
{
	INPUT MouseData = { 0 };
	MouseData.type = INPUT_MOUSE;
	MOUSEINPUT &MouseInput = MouseData.mi;
	MouseInput.time = NULL;
	MouseInput.dwExtraInfo = NULL;
	if (true)//绝对值或相对值
	{
		MouseInput.dwFlags |= MOUSEEVENTF_ABSOLUTE;
		MouseInput.dx = ((x * 1.0f) / (m_width * 1.0f)) * 65535;
		MouseInput.dy = ((y * 1.0f) / (m_height * 1.0f)) * 65535;
	}
	else
	{
			//TODO:相对值
	}
	//下面是根据函数传入参数进行判断
	if (data.input_data() == MOUSE_WHEEL)
	{
		MouseInput.dwFlags |= MOUSEEVENTF_WHEEL;
		MouseInput.mouseData = data.value();
	}
	else
	{
		switch (data.inputstate())
		{
		case DEFAULT:
		{
			MouseInput.dwFlags |= MOUSEEVENTF_MOVE;
			break;
		}
		case STATE_DOWN:
		{
			if ((int)BUTTON_LEFT == data.input_data())
			{
				MouseInput.dwFlags |= MOUSEEVENTF_LEFTDOWN;
			}
			else if ((int)BUTTON_MIDDLE == data.input_data())
			{
				MouseInput.dwFlags |= MOUSEEVENTF_MIDDLEDOWN;
			}
			else if ((int)BUTTON_RIGHT == data.input_data())
			{
				MouseInput.dwFlags |= MOUSEEVENTF_RIGHTDOWN;
			}
			break;
		}
		case STATE_UP:
		{
			if ((int)BUTTON_LEFT == data.input_data())
			{
				MouseInput.dwFlags |= MOUSEEVENTF_LEFTUP;
			}
			else if ((int)BUTTON_MIDDLE == data.input_data())
			{
				MouseInput.dwFlags |= MOUSEEVENTF_MIDDLEUP;
			}
			else if ((int)BUTTON_RIGHT == data.input_data())
			{
				MouseInput.dwFlags |= MOUSEEVENTF_RIGHTUP;
			}
			break;
		}
		default:
			break;
		}
	}
	//可以一次性发多个,SendInput第一个参数是发送的结构体个数,第二个是数组指针,详见MSDN
	SendInput(1, &MouseData, sizeof(MouseData));
	return true;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows开发:鼠标操作 的相关文章

  • 如何在没有驱动的情况下从USB读取数据?

    我们正在创建带有 GPS 接收器和 PC 的小型系统 我们想测试我的 GPS 接收器 我们不想一开始就找司机 首先我想测试我的电路是否工作 GPS IC 已设置为输出 NMEA 语句 我们想要一个只从 USB 端口读取数据并将其打印在屏幕上
  • 有没有办法使用 win API 获取 HRESULT 值的字符串表示形式?

    win API 中是否有函数可用于提取 HRESULT 值的字符串表示形式 问题是 MSDN 中并未记录所有返回值 例如执行默认应用程序域 http msdn microsoft com en us library ms164411 asp
  • robocopy 脚本:系统资源不足

    我有一个之前可以运行的脚本 一个机器人复制脚本 备份服务器坏了 新的服务器丢失了一些配置 但我不是 Windows 用户 脚本如下 C Windows system32 Robocopy F Equipos NASSERVERBACKUP
  • 如何使用Windows批处理命令删除“无扩展名的文件”的所有内容

    我想删除以 FIlE 为扩展名的文件的内容 即没有扩展名 我知道如何删除文本文件的内容 但不知道如何删除以 文件 为扩展名的文件 我会感谢你的努力 提前致谢 Use Del 在批处理文件中删除没有扩展名的文件 use Dir A D 列出所
  • 使用 Python 将 Excel 中的图表导出为图像

    我一直在尝试将 Excel 中的图表导出为 Python 中的图像文件 JPG 或 ING 我正在查看 WIn32com 这是我到目前为止所拥有的 import win32com client as win32 excel win32 ge
  • 获取已创建进程的进程句柄 Windows

    我需要获取运行程序时刚刚创建的所有进程的句柄或 PID 到目前为止 我已经使用了这段代码 每次创建进程时都会告诉我 问题是我只获取有关创建的进程的信息 但没有有关进程本身的任何信息 https msdn microsoft com en u
  • 避免 Inno Setup 中的“无法展开 shell 文件夹常量 userdocs”错误

    我将一些示例文档安装到 Windows 上标准 我的文档 文件夹的 PerfectTablePlan 子文件夹中 这对于 99 以上的用户来说效果很好 但是 如果用户没有 我的文档 文件夹 我会收到许多以下形式的丑陋错误消息 内部错误 无法
  • 在 Jenkins 中执行批处理文件

    我有一个简单的批处理文件 我想要从 Jenkins 调用 运行 执行该文件 Jenkins 中有同样的插件吗 如何从 Jenkins 执行批处理文件 如果有相同的教程或文档 无需为此添加新插件 在Jenkins 选择您的工作名称并转到配置部
  • 在 Windows 上将 Mercurial (hg) 存储库转换为 Git (7)

    我现在真的很沮丧 我有一个现有的 hg 存储库 其中有几个月的编码历史 我想将其放入私有 Github 存储库中 以便我可以从那里对其进行处理 不幸的是我使用的是 Windows 我似乎找不到any转换我实际上可以正常工作的存储库的方法 实
  • Python 无法在 git bash 命令行中工作

    Python 不会在 git bash Windows 中运行 当我在命令行中输入 python 时 它会将我带到一个空行 而不会像在 Powershell 中一样显示它已输入 python 2 7 10 它没有给我错误消息 但 pytho
  • 导入错误:无法导入名称线程

    这是我第一次学习Python 我继续尝试线程这篇博文 http www saltycrane com blog 2008 09 simplistic python thread example 问题是它似乎已经过时了 import time
  • 如何更改选项卡控件的名称

    我在 C WinForms 应用程序中使用选项卡控件 我想更改选项卡的标题 默认情况下它们是 tabPage1 tabPage2 等 一种无需代码即可实现的懒惰方法 选择选项卡控件 Go to properties use F4 to do
  • 在OpenCV中将YUV转换为BGR或RGB

    我有一个电视采集卡 其输入内容为 YUV 格式 我在这里看到了与此问题类似的其他帖子 并尝试尝试所述的所有可能的方法 但它们都没有提供清晰的图像 目前最好的结果是 OpenCVcvCvtColor scr dst CV YUV2BGR 函数
  • Windows 上的 Openssl 错误 0x02001005 和 0x2006D002?

    我正在尝试使用 openssl 将 cer 证书转换为 p12 证书 这是我正在使用的命令 C OpenSSL Win32 bin gt openssl x509 inform der in developer identity cer o
  • 移动/调整窗口大小时闪烁

    我开发了一个显示 jpeg 图像的应用程序 它可以显示 4 个图像 屏幕的每个象限各一个 为此 它使用了 4 个窗口 窗口没有边框 框架 也没有标题栏 当加载新图像时 窗口大小会根据新图像进行调整 然后显示该图像 尤其是当窗户做得较大时 经
  • 检测计算机何时解锁 Windows

    我用过这个优秀的方法 https stackoverflow com questions 20733441 lock windows workstation using python 20733443锁定 Windows 计算机 那部分工作
  • Qt(在 Windows 上)将权限级别设置为“requireAdministrator”

    我正在使用 Qt Creator 并努力制作 exe文件默认以管理员身份运行 在线阅读所有解决方案我试图将这一行放入我的 pro file QMAKE LFLAGS MANIFESTUAC level requireAdministrato
  • 如何在Windows上分离“Git bash”中启动的“git gui”?

    例如 我开始 git bash 我导航到某个目录 I start git gui 我关闭控制台窗口或按 Ctrl C Git gui 的窗口消失了 即使我用过git gui disown 即使当我按 Ctrl C 时它不在前台 如何正确分离
  • 设置 Form.KeyPreview = true 的缺点?

    我想知道 Form KeyPreview 属性实际上有什么用处 它为什么存在以及将其设置为 true 会带来什么 风险 我想它一定有some负面影响 否则它根本不应该存在 或者至少默认情况下是正确的 EDIT 我很清楚what确实如此 我问
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any

随机推荐