winapi获取鼠标指向当前元素

这篇具有很好参考价值的文章主要介绍了winapi获取鼠标指向当前元素。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        最近接到这么个需求,要求获取 windows 下鼠标当前位置的所在应用。代码如下:

int main()
{
	POINT point;
	Sleep(1000);
	GetCursorPos(&point);    //获取鼠标当前坐标
	HWND h = WindowFromPoint(point);    //根据坐标获取所在窗口句柄

	printf("handle: %d\n", (int)h);
	printf("x=%d, y=%d\n", point.x, point.y);

	printf("window text: ");
	char s[400] = {0};
	boolean res = GetWindowText(h, s, 400);    //根据窗口句柄获取窗口标题
	for (int i = 0; i < 400; i++) {
		printf("%c", s[i]);
	}

	return 0;
}

        如代码中注释,主要就是用到 GetCursorPos()WindowFromPoint() 和 GetWindowText() 三个方法。编译、执行。当鼠标放在当前 vscode 窗口时:

winapi获取鼠标指向当前元素

        控制台 window text 一行显示的也是当前应用程序,没问题。当鼠标放到桌面任务栏时: 

winapi获取鼠标指向当前元素

        显示乱码了,这时需要修改项目属性,将字符集改成多字节字符集:

winapi获取鼠标指向当前元素

         修改后再重新编译执行:

winapi获取鼠标指向当前元素

        可见编码已正常输出。其实还可以将鼠标放到其他位置查看打印效果如何,此处就不再尝试了。

        到此基本就解决了获取鼠标指向当前应用的问题。此外由于前阵子接触了 jna 包,想着在 java 中试试看能否正常调用获取呢?而且 c 程序中还是存在些问题的,如字符数组 s 定义的长度是 400,理论上会造成一定空间的浪费的,如果利用 java 中的动态可变字符串类型,就可以避免这个问题了。

        但是在尝试写 java 代码过程中,jna 包中目前并没有 WindowFromPoint() 方法的定义。不过已经有小伙伴恰好在昨天提出来了,详情可点击链接:https://github.com/java-native-access/jna/issues/1463。其实也是可以自己实现添加的哈,此处就不多做操作啦!

        以上,欢迎交流~文章来源地址https://www.toymoban.com/news/detail-497592.html

到了这里,关于winapi获取鼠标指向当前元素的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【PyAutoGUI操作指南】02 鼠标控制功能+获取当前坐标+鼠标事件+鼠标滚动查询

    X坐标从左侧的0开始,向右增加,Y坐标从顶部的0开始,向下递增。 左上角的像素位于坐标0,0。如果屏幕分辨率为1920 x 1080,则右下角的像素将为1919,1079(因为坐标从0开始,而不是1)。 3.1.1 输出屏幕分辨率大小与鼠标光标位置 3.1.2 判断位置是否在屏幕内 3.2.1 moveTo()将鼠标

    2024年02月09日
    浏览(34)
  • unity,如何让当前物体获取鼠标位置,转向鼠标在屏幕中的位置?

    unity,如何让当前物体获取鼠标位置,转向鼠标在屏幕中的位置?

    2024年02月12日
    浏览(32)
  • JavaScript基础(27)_内联样式的获取和修改、获取元素当前显示的样式

    内联样式的获取和修改 获取元素的内联样式: 修改元素的内联样式: 注意: 1、如果CSS的样式名中含有-,这种名称在JS中是不合法的,会被认为是运算符-,因此,需要将这种样式名修改为 驼峰命名法 ,去掉-,然后将-后的字母 大写 。 2、内联样式有较高的优先级,所以通

    2024年01月18日
    浏览(38)
  • winapi模拟鼠标按住左键拖动

            继前文《windows下通过uiAutomation技术获取ui元素》介绍获取ui元素信息后,还需要对信息进行修改,但是 uiAutomation 技术并未提供可修改的 api ,只能另辟他径看看了。         以 camera raw 为例,已知的是可将鼠标放在指定区域位置,然后按下左键并左右拖动,也

    2024年02月16日
    浏览(29)
  • WPF 通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸转换过来

    本文将告诉大家如何在 WPF 或者其他 Win32 应用里面,在收到鼠标消息时,通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸消息提升而来 大家都知道,在不开启 WM_Pointer 的情况下,无论是走 WM_Touch 或者是 RealTimeStylus 等方式,默认下触摸都会提升为鼠标消息从而更

    2024年04月25日
    浏览(24)
  • C语言:指向数组的指针和指向数组首元素的指针

    相关阅读 C语言 https://blog.csdn.net/weixin_45791458/category_12423166.html?spm=1001.2014.3001.5482         指向数组的指针和指向数组首元素的指针常常被混淆,或者笼统地被称为数组指针,但它们之间是有差别的,本文就将对此进行讨论。         下面的代码首先创建了一个数组,然后创

    2024年02月02日
    浏览(40)
  • 不要轻易定义指向std::vector中的元素的指针

    类应该是被封装的,类的用户通过接口使用类提供的功能,而不必关心类的内部如何实现。然而,C++标准库容器 std::vector 的实现渗透到了接口中来。对于以下代码: 我们初始化了一个有3个int元素的vector,定义了一个int 指针p,指向v[1] , 打印 *p 以及v[1] 的值。 然后向 v 中pu

    2024年02月05日
    浏览(30)
  • git 查看当前分支最近一次提交的commit SHA

    获取当前分支最近一次commit SHA (长度为 40个 16进制数字的字符)命令如下: git rev-parse HEAD    获取简写(短) commit SHA git rev-parse --short HEAD  

    2024年02月10日
    浏览(36)
  • C/C++每日一练(20230515) 区间和的个数、BST最近公共祖先、最接近元素

    目录 1. 区间和的个数  🌟🌟🌟 2. 二叉搜索树的最近公共祖先  🌟 3. 找最接近元素  🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给你一个整数数组  nums  以及两个整数  lower  和  upper  。求数组中,值

    2024年02月04日
    浏览(31)
  • Thinkphp获取项目最近更改变动的所有文件

    导读: 企业级的网站项目都是要不断优化迭代更新的,做为一名后端程序员,在编写更新模块时,如何能快速获取最近修改的文件,然后打包压缩成更新补丁呢?我们先来看一下最终效果图:  步骤: 一、在extend扩展目录创建一个名为 ChangesFile.php 的文件,代码如下: 二、

    2023年04月26日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包