首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用c#获取外部应用程序窗口的鼠标指针下的对象/元素/控件?

在C#中,可以使用Windows API函数来获取外部应用程序窗口的鼠标指针下的对象/元素/控件。以下是一个示例代码:

代码语言:csharp
复制
using System;
using System.Runtime.InteropServices;

public class ExternalApp
{
    // 导入Windows API函数
    [DllImport("user32.dll")]
    private static extern IntPtr WindowFromPoint(Point point);

    [DllImport("user32.dll")]
    private static extern int GetWindowText(IntPtr hWnd, System.Text.StringBuilder text, int count);

    [DllImport("user32.dll")]
    private static extern int GetClassName(IntPtr hWnd, System.Text.StringBuilder text, int count);

    [DllImport("user32.dll")]
    private static extern IntPtr GetParent(IntPtr hWnd);

    [DllImport("user32.dll")]
    private static extern bool ScreenToClient(IntPtr hWnd, ref Point point);

    // 定义Point结构体
    [StructLayout(LayoutKind.Sequential)]
    public struct Point
    {
        public int X;
        public int Y;
    }

    // 获取鼠标指针下的对象/元素/控件
    public static void GetObjectUnderMouse()
    {
        // 获取鼠标当前位置
        Point mousePoint;
        GetCursorPos(out mousePoint);

        // 获取鼠标所在窗口的句柄
        IntPtr hWnd = WindowFromPoint(mousePoint);

        // 将窗口坐标转换为客户区坐标
        ScreenToClient(hWnd, ref mousePoint);

        // 获取窗口的标题和类名
        StringBuilder windowText = new StringBuilder(256);
        GetWindowText(hWnd, windowText, windowText.Capacity);
        StringBuilder className = new StringBuilder(256);
        GetClassName(hWnd, className, className.Capacity);

        // 获取父窗口的句柄
        IntPtr parentHwnd = GetParent(hWnd);

        // 输出结果
        Console.WriteLine("鼠标下的对象/元素/控件信息:");
        Console.WriteLine("窗口标题: " + windowText.ToString());
        Console.WriteLine("窗口类名: " + className.ToString());
        Console.WriteLine("父窗口句柄: " + parentHwnd.ToString());
    }

    // 获取鼠标当前位置
    [DllImport("user32.dll")]
    private static extern bool GetCursorPos(out Point lpPoint);
}

这段代码使用了WindowFromPoint函数来获取鼠标指针下的窗口句柄,然后使用GetWindowTextGetClassName函数来获取窗口的标题和类名。同时,使用GetParent函数获取父窗口的句柄。最后,将获取到的信息输出到控制台。

请注意,这段代码只能获取到外部应用程序窗口的基本信息,无法获取到窗口内部的具体对象/元素/控件。如果需要进一步操作窗口内部的对象/元素/控件,可能需要使用其他的技术或工具。

腾讯云相关产品和产品介绍链接地址:

请注意,以上只是腾讯云的一些相关产品,其他云计算品牌商也提供类似的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C# SplitContainer 控件详细用法

鼠标指针悬停在该拆分条上时,指针将相应地改变形状以显示该拆分条是可移动。...使用 SplitContainer 控件,可以创建复合用户界面(通常,在一个面板中选择决定了在另一个面板中显示哪些对象)。这种排列对于显示和浏览信息非常有用。...2.如何:定义拆分窗口大小调整和定位行为 用户可以轻松调整 SplitContainer 控件面板大小并对其执行各种操作。...C# this.Load += new System.EventHandler(this.Form1_Load); 3.如何:水平拆分窗口水平拆分窗口 在程序中,将 SplitContainer...该过程重点是在窗体上排列 SplitContainer 和其他控件,而不是添加功能以使得应用程序类似于 Microsoft Outlook。

2.7K30

c#实战教程_ps初学者入门视频

 增加安全:C#语言不支持指针,一切对内存访问都必须通过对象引用变量来实现,只允许访问内存中允许访问部分,这就防止病毒程序使用非法指针访问私有成员。也避免指针误操作产生错误。...引用参数 有时在方法中,需要修改或得到方法外部变量值,C语言用向方法传递实参指针来达到目的,C#语言用引用参数。...选中工具箱窗口中Windows窗体类型Button条目,然后在标题为Forms.cs[设计]窗口Form1窗体中按鼠标左键,拖动鼠标画出放置Button控件位置,抬起鼠标左键,就将Button...数据库本身,按一定结构组织在一起相关数据。数据库应用程序,它是针对某一具体数据库应用编制程序,用来获取,显示和更新数据库存储数据,方便用户使用。这里讲就是如何编写数据库应用程序。...(3) 先选中[Toolbox]窗口中[Web窗体]类型[Label]条目,然后在设计窗体中按鼠标左键并拖动鼠标,画出一个Label控件。该控件用来显示一行文本。

15.5K10

VC++编写ActiveX控件

,里面涉及一个响应用PLC采集信息问题(PLC用串口和工控机相连接),然后思考如何C#写串口通讯程序,结果师兄在一旁直接用VC++写了一个“*.ocx控件”,并在自己电脑上进行了测试,完工后就把生成...指此控件使用时,外部程序看到属性名称,仅在外部引用时被使用。 Type:属性类型。除了基本整形等数据类型外,还有很多复杂高级数据类型。 Variable name:变量名称。...将控件工具条上新增加OCX控件拖入到应用程序窗口中。...可以直接拖动这个控件到C#.NET应用程序窗口上去了,然后就像使用普通控件那样使用控件了。     ...比如,本文中ActiveX控件自定义事件中,是通过鼠标移动来触发,那么在应用程序中,只要鼠标移动到控件上,那么就会触发此自定义事件,并获取当前鼠标位置橫坐标。 4.

3.4K30

dotnet 从入门到放弃 500 篇文章合集

获取指定文件 win10 uwp 获取按钮鼠标左键按 win10 uwp 获取文件夹出错 win10 uwp 获得元素绝对坐标 win10 uwp 获得缩略图 win10 uwp 萤火虫效果 win10...-标题栏 win10-uwp-用广告赚钱 win10-uwp-绘图–line-控件使用 win10-uwp-获得slider鼠标放开值 win10-uwp-获得焦点改变 win10-uwp-访问解决方案文件...WPF 使用封装 SharpDx 控件 WPF 修改按钮按颜色 WPF 写系统日志 WPF 判断调用方法堆栈 wpf 单例 WPF 只允许打开一个实例 WPF 可获得焦点属性 WPF 在 Alt...+Tab 隐藏窗口 WPF 好看矢量图标 wpf 如何使用 Magick.NET 播放 gif 图片 WPF 如何在 WriteableBitmap 写文字 WPF 如何应用程序调试启动 WPF 如何在绑定失败异常...UTF8 博客 图论 Warshall 和Floyd 矩阵传递闭包 在 windows 安装 Jekyll 域名 大文件存储和备份 如何使用 C# 爬虫获得专栏博客更新排行 如何使用 Q# 如何使用

10.4K20

SplitContainer(拆分条控件)

鼠标指针悬停在该拆分条上时,指针将相应地改变形状以显示该拆分条是可移动。...使用 SplitContainer 控件,可以创建复合用户界面(通常,在一个面板中选择决定了在另一个面板中显示哪些对象)。这种排列对于显示和浏览信息非常有用。...2.如何:定义拆分窗口大小调整和定位行为 用户可以轻松调整 SplitContainer 控件面板大小并对其执行各种操作。但是,有时您可能要以编程方式控制拆分器放置位置以及可以移动程度。...C# this.Load += new System.EventHandler(this.Form1_Load); 3.如何:水平拆分窗口水平拆分窗口 在程序中,将 SplitContainer 控件...该过程重点是在窗体上排列 SplitContainer 和其他控件,而不是添加功能以使得应用程序类似于 Microsoft Outlook。

2.1K20

# 如何使用 ArcGIS Engine10.2 + C# VS2012 开发环境,实现鹰眼功能。

它还可以让我们通过拖动或者缩放鹰眼地图上矩形框,来改变主地图视图范围,实现同步更新。在本文中,我将介绍如何C#语言和ArcGIS Engine控件和类库,实现一个简单鹰眼地图功能。...编写一个获取颜色方法,用来根据RGB值创建一个颜色对象。...表示如果按鼠标左键,并且指针落在鹰眼地图矩形框中,就标记为可移动,并记录点击坐标,用于后续拖动操作。...如果鼠标移动到矩形框中,并且没有按右键,就将鼠标指针换成小手,表示可以拖动矩形框。如果鼠标移动到矩形框中,并且按下了右键,就将鼠标指针换成默认样式,表示不能拖动矩形框。...CopyToPageLayout 方法用于将主地图地图对象复制到页面布局控件地图对象,实现两个地图对象同步。它使用了一个 IObjectCopy 接口,用于复制和覆盖对象

1.8K10

C#学习笔记—— 常用控件说明及其属性、事件

16、HScrollBar 控件和 VScrollBar控件使用 滚动条(ScrollBar)是大部分Windows应用程序中都具有的控件,是 Windows界面的 一种常见元素,通常分为水平滚动条...C#项目刚建立时只有一个名为Form1窗体,要建立多窗体应用程序应首先为项目添加窗体,添加窗体方法如下。...(1)MouseEnter事件:在鼠标指针进入控件时发生。 (2)MouseMove事件:在鼠标指针移到控件上时发生。...(3)MouseHover事件:当鼠标指针悬停在控件上时将发生该事件。 (4)MouseDown事件:当鼠标指针位于控件上并按鼠标键时将发生该事件。...该事件事件处理程序接收一个MouseEventArgs类型参数 (6)MouseUp 事件:当鼠标指针控件上并释放鼠标键时将发生该事件。

9.5K20

【运维开发】windows自动化脚本语言autoit

DllStructGetPtr 返回 数据结构(struct) 或者 数据结构(struct)一个元素指针....GUIGetCursorInfo 获取(相对于 GUI 窗口)鼠标位置. GUIGetMsg 捕获窗口消息. GUIGetStyle 返回一个 GUI 窗口使用样式....GUISetBkColor 为GUI窗口设置背景颜色. GUISetCoord 为下一个控件设置绝对坐标. GUISetCursor 设置(鼠标经过窗口鼠标指针....MouseDown 在当前位置产生一个鼠标(按键)事件. MouseGetCursor 返回当前鼠标指针光标的ID. MouseGetPos 获取当前鼠标的坐标位置....鼠标指针坐标位置 鼠标指针所指象素颜色值 鼠标经过 控件(Control)相关信息 通过上述信息可以进行对控件进行操作,比如下面这个界面的输入框: ?

2.6K10

【愚公系列】2023年11月 WPF控件专题 WindowFormsHost控件详解

欢迎 点赞✍评论⭐收藏前言WPF控件是Windows Presentation Foundation(WPF)中基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。...自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化用户界面元素。自定义控件可以根据需求提供更多功能和自定义化选项,以及更好用户体验。...WindowFormsHost控件工作原理是将WinForms控件作为其子元素添加到WPF逻辑树中。在运行时,WinForms控件被呈现在WPF窗口中。...3.具体案例WindowFormsHost控件用于在WPF窗口中嵌入WinForms控件,可以方便地在WPF应用程序使用WinForms控件。...以下是一个简单案例,展示如何在WPF窗口中嵌入WinForms控件,以及在WinForms控件使用WPF控件。在Visual Studio中创建一个WPF应用程序

50741

再议Windows消息与WinForm事件

所有的外部事件,如键盘输入、鼠标移动、按动鼠标都由用户所触发;然后OS接收到对应“消息”;然后送入消息队列中;接下来,启动应用程序工作引擎通过轮询等方式遍历获取,然后按照消息类型逐个分发(Dispatch...处理消息 一般来说,使用WinForm技术进行开发,绝大部分情况,我们都在做上述流程最后一件事情:给各种控件注册事件。毕竟,WinForm真的为我们封装了绝大部分事件了。...实际上整个过程应该如下: 当我们按鼠标左键后,消息形成并送往应用程序消息队列中,然后被Application类从应用程序消息队列中取出,然后分发到相应窗体。...窗体使用MouseClick事件中函数指针调用已经添加响应函数。所以C#事件字段实质上是一个函数指针列表,用来维护一些消息到达时响应函数地址。...Message类实例,所有的消息在被获取后,正常情况都会被封装为Message对象,然后由Application工作引擎调用对用Form.WndProc传入该Messsage,由于Form子类重写了该方法

18810

使用C#开发数据库应用程序

鼠标双击事件,当用户双击窗体时发生 MouseMove 鼠标移动事件,当鼠标移过窗体时发生 KeyDown 键盘按事件,在首次按某个键时发生 KeyUp 键盘释放事件,在释放键时发生 例如...5-1:排列窗体上控件 a.对齐 (1)选择你要对齐控件 (2)在VS菜单中,选择“格式”-“对齐” b.使用Anchor (1)选择要锚定控件 (2)在"属性"窗口中,单击Anchor...5-2:创建多文档界面应用程序(MDI) a.为什么使用MDI 比如:记事本 如果想在一个窗口中打开多个文件,就要使用MDI(多文档界面)应用程序。...b.什么是MDI 比如:在Microsoft Excel中,我们可以同时打开多个Excel文档,而不需要新开一个Excel窗口,这种应用程序我们称为MDI(多文档界面); c.如何创建MDI (1...,将菜单控件MdiWindowListItem属性设为"窗口"菜单项(tsmiWindows)】 5-3:使用WinForms高级控件 a.使用工具条控件和状态条控件 工具条和状态条主要属性

5.8K30

引脚数据提示编辑代码并继续调试(C#,VB,C ++)编辑XAML代码并继续调试调试难以重现问题配置数据以显示在调试器中更改执行流程跟踪范围外对象C#,Visual Basic)查看函数返回值

对于C ++代码,您可以使用Natvis可视化工具执行相同操作。 更改执行流程 在调试器停在一行代码上情况使用鼠标抓住左侧黄色箭头指针。将黄色箭头指针移到代码执行路径中其他点。...跟踪范围外对象C#,Visual Basic) 使用诸如“监视”窗口之类调试器窗口可以轻松查看变量。但是,当变量在“监视”窗口中超出范围时,您可能会注意到它是灰色。...更加熟悉调试器如何附加到您应用程序C#,C ++,Visual Basic,F#) 要附加到正在运行应用程序,调试器将加载与要调试应用程序完全相同内部版本生成符号(.pdb)文件。...在某些情况,对符号文件一些了解可能会有所帮助。您可以使用“模块”窗口检查Visual Studio如何加载符号文件。 在调试时,通过选择“调试”>“ Windows”>“模块”,打开“模块”窗口。...在大多数情况,调试器会自动查找用户代码符号文件,但是如果您要进入(或调试).NET代码,系统代码或第三方库代码,则需要采取额外步骤来获取正确符号文件。

4.5K41

windows 桌面GUI自动化-1. pywinauto 环境准备

前言 Pywinauto 是基于 Python 开发,用于自动化测试脚本模块,主要操作于 Windows 标准图形界面。它可以允许你很容易发送鼠标、键盘动作给 Windows 对话框和控件。...,我们需确定使用哪种可访问性技术(backend)用于应用程序。...可以借助于GUI对象检查工具来确定程序到底适用于那种backend。如果使用 inspect uia模式,可见控件和属性更多的话,backend可选uia,反之,backend可选win32。...它可以单独复制出来,放在桌面使用。 “ 检查” 窗口包含几个主要部分: 标题栏。显示“ 检查 ”窗口句柄 (HWND) 。 菜单栏。提供对检查功能访问权限。 工具 栏。提供对检查功能访问权限。...将 UI 元素分层结构呈现为可用于在元素之间导航树视图控件。 数据视图。显示所选 UI 元素所有公开辅助功能属性。 菜单栏中可用命令也在工具栏中提供。

67230

答案:Excel VBA编程问答33题,继续……

3.是非题:KeyDown事件过程可以使用KeyCode参数判断用户输入是4还是$。 错误。Keycode参数仅标识密钥,你必须使用Shift参数来确定是否按Shift键。...将控件TabStop属性设置为False。 8.如何命名事件过程? 通过使用对象名称、下划线和事件名称。...将鼠标指针悬停在变量名称上。 22.是非题:监视窗口值在程序运行时会不断更新。 错误。监视值仅在程序进入中断模式时才更新。 23.VBA如何将bugs报告给程序员? 不会。...通过在Property Let过程中放置代码来检查新属性值,并仅在正确情况下接受它。 30.如何在代码中引用对象属性? 通过使用标准ObjectName.PropertyName语法。...仅应从类内部而不是类外部代码调用方法。 33.在销毁对象之前触发了什么事件? Terminate事件。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

4.2K20

javascript坐标:event.x、event.clientX、event.offsetX、event.screenX 用法

clientX 设置或获取鼠标指针位置相对于窗口客户区域 x 坐标,其中客户区域不包括窗口自身控件和滚动条。...clientY 设置或获取鼠标指针位置相对于窗口客户区域 y 坐标,其中客户区域不包括窗口自身控件和滚动条。 offsetX 设置或获取鼠标指针位置相对于触发事件对象 x 坐标。...offsetY 设置或获取鼠标指针位置相对于触发事件对象 y 坐标。 screenX 设置或获取获取鼠标指针位置相对于用户屏幕 x 坐标。...screenY 设置或获取鼠标指针位置相对于用户屏幕 y 坐标。 x 设置或获取鼠标指针位置相对于父文档 x 像素坐标。 y 设置或获取鼠标指针位置相对于父文档 y 像素坐标。...onkeyup onkeypress一起使用 如果没有引发事件关键字,则该值为0 offsetX 检索与触发事件对象相关鼠标位置水平坐标 offsetY 检索与触发事件对象相关鼠标位置垂直坐标

1.6K30

Matlab系列之GUI设计基础

菜单设计 菜单几乎包含了应用程序所有的功能,点击界面上方菜单编辑器快捷键,就可打开对应窗口 ?...控件设计 控件描述 本部分对刚刚GUI窗口左边控件进行简单介绍以及使用,从上到,从左往右顺序介绍,如果介绍不太对……,就自行操作吧~很好理解其作用 个人理解 控件名 官方文档 ?...控件属性 了解了这些控件后,就需要再了解下控件属性,才能在设计时候用很顺手,接下来再介绍常规属性,若有特殊属性未进行介绍,就需要自行获取,在窗口输入下方命令,打开控件文档: %本人使用了R2016A...可由用户定义个性化名字 (4)TooltipString - 工具提示文本字符串 用户将鼠标指针悬停在控件上并停留在该位置时,将显示工具提示。...元素 说明 left 父容器内部左边缘与控件外部左边缘之间距离 bottom 父容器内部下边缘与控件外部下边缘之间距离 width 控件左右外部边缘之间距离 height 控件上下外部边缘之间距离

5.8K10

Windows桌面软件开发-Winform桌面客户端开发神器

其中基础部分已经讲解完毕,可以查看:C#入门教程(一)–.Net平台技术介绍、C#语言及开发工具 这算是学习电脑编程第二部分,带领你一起开发电脑桌面应用程序。终于可以摆脱黑框控制台应用程序了。...认识Winform Winform 可以被称作窗体,主要用于制作桌面应用程序(平常使用QQ就是桌面应用程序范畴),里面包含大量丰富控件供开发使用。...对于Winform我们需要知道有个叫做控件东西。 什么是控件? 比如在使用QQ时候,一个图片,一个按钮都是一个控件 在Winform中控件主要显示在工具箱里面: ? 登陆界面控件: ?...直接拖拽工具箱内容到窗体上就可以了,此时你进行微调,拖拽出来图中效果。 如何改变每个空间显示内容? ? 选中需要修改内容控件 ---【鼠标右键】--打开【属性】面板,修改其中Text值。...我对控件名字如下: ? ? 添加登录事件: 直接双击登录按钮即可进入后台点击事件处理代码: 获取用户输入用户名和密码: ? 其实就是在后台根据控件姓名找到他text属性哈。 ?

6.5K10

Hands On GUI Application Development in Go

(例如:手指滑动,鼠标/释放)消息传递,将用户输入信息传递到整个GUI体系树中,并调用相应响应回调函数;开发者可以根据自己需要添加/修改响应回调函数。...被点中,dialog哪个button被点中,并调用buton被点中回调函数,用于作相应处理(一般会进行button状态修改及重绘工作) 界面元素如何创建 所有界面元素都继承自c_wnd类对象对象被实例化时...,也就完成了界面元素创建;但此时界面元素是孤独,与其他界面元素没有形成联系(没有父母,没有兄弟姐妹) 界面元素如何被管理 新创建界面元素纳入管理过程,就是为其添加父母,兄弟姐妹过程。...当需要删掉该界面元素时,使用disconnect();从此该界面元素会断绝所有的父子关系,从树上摘下来,不再响应用户触控操作;但对象本身不会被销毁。典型应用场景:软键盘创建/退出。...< 0.5小时 dialog.cpp 对话框绘制及管理方法 < 0.5小时 ★ gesture.cpp 手势识别方法,包括:鼠标,弹起及滑动 0.5小时 ★ keyboard.cpp 键盘控件绘制及用户点击响应函数

1.1K10

Pc软件开发,aardio学习笔记,持续记录

2.import语句 import语句将一个外部名字空间导入到当前名字空间,import 语句首先会在当前名字空间查找同名对象是否存在,查找时不会触发名字空间元方法 aardio库有三种: 内核库...this是类内部指向当前创建对象指针,this指针不会因为函数table前缀改变而改变。而owner对象是会根据函数调用时函数名前缀table对象而相应改变。...#,取字符串长度、或table数组元素个数。 @,@操作符表示元表,table元表可以是table自已。例: tab@ = tab; $,包含操作符可以将外部文件链接到当前代码中。 .....例如,单击鼠标、改变窗口尺寸、按下键盘上一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序,这个记录中包含了消息类型以及其他信息。...例如,对于单击鼠标所产生消息来说,这个记录中包含了单击鼠标坐标。 2.process process库提供进程管理函数 ,process是一个类,用于创建进程对象

41530

UI自动化工具,你知道有几个?

但由于控件定位依赖于图像匹配,所以得事先保存好控件截图,然后在操作时自动截取屏幕,利用图像匹配找到控件在屏幕像素位置,再将鼠标自动移至控件处点击。...因此你在测试前要考虑好如何应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望输出数据等 QuickTest针对是GUI应用程序,包括传统Windows应用程序,以越来越流行Web应用...Pywinauto基于Pywin32,其最主要功能为对Windows标准控件一系列动作可编程处理,包括对窗口指定、鼠标或键盘操作、获得控件属性等等。...codeui CodeUI Test是微软自动化测试一个比较好项目,它原理是获取到Windows窗口控件,然后针对控件部分属性进行获取和对比,模拟对控件进行点击、双击、右键点击等事件。...,鼠标移动和窗口/控件组合来实现自动化任务。

9.1K21
领券