UI Automation不会为UIA\u LegacyIAccessibleValuePropertyId属性引发PropertyChangedEvent。
我正在开发一个 UI 自动化 (Windows/Win32) CLIENT 应用程序来监控 Edit Control 值的变化. 解决方案 嗨,桑杰, LegacyIAccessible 属性通常不会触发事件. 该模式的存在是为了让喜欢查看旧属性的 MSAA 客户继续查看它们,但如果我们为它们触发事件,它们实际上总是与其他一些事件. 我很好奇您在哪里看到旧版 Value 而不是 Value.Value - 它们通常是一致的,尽管您还应该注意 UIA_RangeValueValuePropertyId 的变化以用于数值型propviders. 谢谢, 迈克尔
824 2022-07-19
编程技术问答社区
使用反射在automationelement上实例化模式
嗨,我正在尝试使用反射对给定的自动化元素执行指定的操作,例如,用户提供了该元素以及他们希望对其执行的操作.例如.AutomationAgent.excute(“开始会议按钮"、“InvokePattern"). 部分 (a) 动态查找自动化元素很容易,我只是先使用提供的条件进行查找. Part (b) 0 创建正确的模式并调用它有点困难.我正在尝试使用 c# 反射来实例化模式类(例如 InvokePattern)并在自动化元素上分配/调用它,但我无法弄清楚我! 由于某种原因,我无法实例化模式类(createInstance 表示未定义构造函数)并且没有构造函数. 任何帮助将不胜感激. 谢谢. 解决方案 嗨,罗比, 我不能说我曾经通过反射使用过这些类,但我可以解释构造函数问题. 您实际上并没有自己构造 InvokePattern. 相反,你打电话GetCurrentPattern 在 AutomationElement
116 2022-07-19
编程技术问答社区
我第一次使用UI自动化——我需要从新的WinForm应用程序中访问正在运行的WinForm应用程序中的按钮控件
我正在使用 C# 开发一个 WinForms 应用程序,它完全依赖于 完全依赖于现有 WinForms 应用程序中的一些 Button 和 Label 控件. 文档、文章和支持非常缺乏,我的问题很难得到答案.但是我为这个框架创建了一个专门的论坛是一件好事,所以希望你能帮助我提供任何控件的示例代码我会弄清楚如何使用其余的控件来完成. 提示:我已经找到了这些控件,并且可以通过 managedspy 进行更改和读取.我也在使用 VS2010 .NET 4.0 解决方案 嗨,IKashef, 我们的团队博客附有相当多的示例代码: http://blogs.msdn.com/b/winuiautomation/ Bug,你能澄清一下你的问题是什么吗? 谢谢, 迈克尔
78 2022-07-19
编程技术问答社区
选择
大家好, 我创建了一个带有标准 .NET 列表框的小型测试应用程序,它包含 4 个项目. 我实现了 'selectedindexchanged' 事件,以便它显示哪个项目被选中. 当我手动选择时,它会显示被选择的 itemindex. 但是当我通过 UISpy (SelectionItemPattern) 选择时,它会选择项目,但它不会触发事件?所以没有触发任何事件,我没有看到选择了哪个项目? 关于如何解决这个问题的任何想法?它也不能通过代码工作,尽管它确实正确选择了项目本身. 谢谢, Nick 解决方案 你检查过“SelectionPattern and SelectionItemPattern Sample"了吗?在 http://msdn2.microsoft.com/en-us/library/aa972140.aspx?从您的描述看来,这个样本可能与您遇到的问题有关.
170 2022-07-19
编程技术问答社区
为动态创建的控件自动生成唯一的AutomationId
你好, 我自动为每个静态创建的控件分配一个唯一的自动化 ID(使用 MsBuild UID 功能). 但是,我的应用程序会在创建一些控件的地方动态生成 xaml 代码.我想在生成的 xaml 代码中自动生成并分配一个唯一的 AutomationId 给每个动态创建的控件. 我们如何通过代码生成唯一的 AutomationId ? Josh 解决方案 嗨,乔什, 我相信“名字"在 XAML 中设置的属性(通过标记或在 C# 中的运行时)始终作为 UIA AutomationId 属性公开.作为测试,我刚刚创建了一个新的 XAML 应用程序,并将 Inspect SDK 工具指向它.下图显示了一个 AutomationId“testAppButton1",这是我在 XAML 中指定的名称.UIA“名称"显示的属性实际上来自按钮的内容.(这是您所期望的,因为控件的 UIA Name 属性通常是控件上直观显示的文本.) 鉴于您正在动态创建控件,我只是尝
330 2022-07-19
编程技术问答社区
编码UI测试和更改窗口标题
我有一个 WPF 应用程序,我正在尝试对其进行编码 ui 测试(使用 vs 2010 Ultimate). 现在,我注意到当我使用记录器时,设置的属性之一是 this.mUIWhateverTitleBar.WindowTitles.Add(":"); (应用程序的窗口标题格式为: 这明显吗?如果记录 ui 测试的用户以外的其他人尝试执行测试,这将是一个问题.除了手动更改 .designer.cs 文件中的所有内容(这听起来像是次优解决方案...) 依赖可视化工具 - http://www.codeplex.com/dependencyvisualizer 解决方案 嗨 默认情况下,WindowTitle 不是 Codeduitest 查找的.它要查找的是 TopLevelWindow Name 属性.其他用户使用时测试是否失败?如果是,您可以将 Name
116 2022-07-19
编程技术问答社区
需要样本代码
嗨, 我是 C# 自动化的新手.之前在 QTP 工作过.谁能给我一个基本的示例代码或解决方案,我可以从那里开始学习使用 UIA 或 MSAA 开发框架. 谢谢, AutoNewBEE 解决方案 我们正在 Visual Studio 2010 中引入编码 UI 测试. http://channel9.msdn.com/shows/10-4/10-4-Episode-18-Functional-UI-Testing/ 为您提供快速介绍. MSDN也有一些关于我们的自动化测试解决方案的优秀指南文章 - http://msdn.microsoft.com/en-us/library/dd380755(VS.100).aspx 一些有相关信息的博客. http://blogs.msdn.com/amit_chatterjee/archive/2009/03/14/coded-ui-test.aspx http://blogs.msdn.com/mathew_an
218 2022-07-19
编程技术问答社区
问题:��指定的元素已经是另一个元素的逻辑子元素。首先断开连接。��
注意:我已经尝试过使用六月和七月的 CTP 位. 背景:发生此问题时,两个 XAML 窗口之间的成功拖放操作结束. 来源是一个包含 Button 控件的树视图(可能是另一种控件对象,但我认为这对这个问题并不重要).即拖放到作为 Canvas 的第二个 xaml 窗口. 我尝试了以下代码片段: _SelectedElement = (UIElement)e.Source; this.RemoveLogicalChild(_SelectedElement); DragDrop.DoDragDrop(_SelectedElement, _SelectedElement, DragDropEffects.All); -AND- _SelectedElement = (UIElement)e.Source; this.RemoveLogicalChild(_SelectedElement); ContentPresenter oContentPresen
414 2022-07-19
编程技术问答社区
windows 8块alt-tab模拟
Windows 7 好的 // 模拟 Alt+Tab 键击 keybd_event(VK_MENU,0xb8,0 , 0);//Alt Press keybd_event(VK_TAB,0x8f,0 , 0);// 制表符按下 keybd_event(VK_TAB,0x8f, KEYEVENTF_KEYUP,0);// 标签释放 keybd_event(VK_MENU,0xb8,KEYEVENTF_KEYUP,0);// Alt 释放 在 Windows 8 上使用相同的方法失败. 尝试以访客、管理员和“高级管理员"身份尝试. 其他组合键(特别是 win 键)也失败了……不仅仅是 alt-tab. 有人已经解决了这个问题吗? 解决方案 尝试在清单文件中设置uiAccess=true
132 2022-07-19
编程技术问答社区
指定的元素已经是另一个元素的逻辑子元素。首先断开连接。
您好,我在向堆栈面板添加控件时收到以下错误消息 如何断开元素? 解决方案 您好,您可能希望将此问题定向到 WPF 论坛,而不是这个无障碍相关论坛.但是你能通过 LogicalTreeHelper.GetParent() 找到控件的父控件,然后调用它的 Remove() 来提供你需要断开连接的控件吗?
206 2022-07-19
编程技术问答社区
如何在UI自动化中选择Excel范围。
嗨 我们的项目有要求,我们需要对以下场景进行自动化测试, 1.兰芝Excel 2.点击 Excel 插件(安装我们的 excel 插件 VSTO 后作为选项卡出现) 3.打开一些excel数据并选择一些范围(例如:Sheet1:A1到F6). 4.选择范围并右键单击某个按钮. 我们还需要验证是否选择了范围. 这是否可以使用 UI 自动化实现.它的需求非常迫切. 任何帮助或示例代码都会有很大帮助. 谢谢, 香卡. 解决方案 嗨,Shankar, Excel 不支持 UI 自动化,因此您无法使用 UI 自动化执行此操作. 但是,Excel 对象模型确实支持执行您所描述的操作. http://msdn.microsoft.com/en-us/library/wss56bz7(VS.80).aspx 我认为您可以使用 Excel OM 完成所有这些任务.
186 2022-07-19
编程技术问答社区
我只想在Visual Studio 2010代码编辑器中跟踪光标。
你好. 希望有人能指出我正确的方向. 我的视力非常有限,使用 AI Squared 的 Zoomtext 进行放大和屏幕阅读. 自 VS2003 以来,我一直是 Visual Studio 开发人员.然而,Zoomtext 在 VS2010 上运行得不是很好,因为新的基于 WPF 的代码编辑器.我的团队正在从 VS2008 切换到 VS2010,我需要尽快找到解决方案.不幸的是人工智能squared 通知我,Zoomtext 将仅在明年某个时候的某个未来版本中支持此功能. 我的主要痛点之一是 Zoomtext 无法再在代码编辑器中跟踪光标.因此,我认为编写一个小型 UIA 客户端应用程序来监视光标的位置并重新定位鼠标应该是可能的并且非常简单指向同一位置的指针.由于 Zoomtext 可以很好地跟踪鼠标指针,因此它也可以有效地跟踪文本光标.我知道这是一个 hack,但它会让我的生活变得更好,因为这样我就可以真正看到我正在输入的内容. 但是我不知道从哪里开始,因为我
180 2022-07-19
编程技术问答社区
临时禁用windows锁
我需要在程序执行时禁用锁屏. 我编写了使用 UIAutomation 的程序,但经过大约 4 小时的测试后,它的运行速度比前 15 分钟要慢得多.我可以在 Windows 设置中禁用锁屏,但出于安全原因,我只需要在程序执行时禁用它 解决方案 嗨,Alexei, 您可以在程序启动时以编程方式执行此操作,方法是调用 系统参数信息(). 您应该能够通过 SPI_SETSCREENSAVEACTIVE 禁用屏幕保护程序,然后在完成后重新启用它. 请注意,如果您的域管理员已将系统策略设置为需要屏幕保护程序,那么您的程序将无法禁用它. (我的微软就是这样的——桌面在 15 分钟后全部锁定,以避免让它们处于解锁状态很长一段时间.) 谢谢, 迈克尔
166 2022-07-19
编程技术问答社区
激活windows 7 professional
我不得不在我的笔记本电脑上重新安装 Windows 7 Professional,但现在我没有产品密钥. 我尝试了 keyfinder 程序并输入了找到的产品密钥,但我收到一条错误消息 我拥有的密钥是默认密钥,而不是使用.我真的不明白这个.这是否意味着我的 Windows 版本不是正版?如何找到我的产品密钥 解决方案 您通常可以在包含 Windows 7 安装 DVD 的包装上找到产品密钥. 我不相信还有其他方法可以找到它. 谢谢, 迈克尔
184 2022-07-19
编程技术问答社区
WPF列表框的自动化失败。净额4.0
大家好, 我正在使用 UI 自动化来自动化一个 ou of box WPF 列表框. 从 .NET 4.0 开始, 不可能通过索引访问某个列表框项,因为只有 UI 自动化元素 表示列表框的当前可见和选定项. 由于没有自动化模式 来获取项目的总数或项目的适当索引,因此不可能通过索引获得适当的项目. 在 .NET 3.5 中,列表框中的所有项目都表示为 UI 自动化元素,因此有可能获得总数和索引. 网格等其他 WPF 控件 或网格中的列表视图 模式 提供适当的模式. 为什么列表框不支持这些模式? 有没有人想办法解决这个问题? 问候 拉斯阿尔哈格 解决方案 嗨 随着 Wpf 4.0 列表框已经开始实现 Virtualizeditempattern 和 itemcontainerPattern.您需要使用这些来使事情正常进行 这些链接是 http://msdn.micros
118 2022-07-19
编程技术问答社区
结构事件处理程序交付��空的�� IUIAutomationElements?
我目前正在修改一个用 C# 编写的基于 UIAutomation COM 的应用程序,以识别属于感兴趣进程的窗口,这样我就可以专注于我的自动化而不是占用整个桌面.我为root的孩子做一个FindAll,获取进程ID,将其与进程名称匹配,与我的命中列表进行比较,如果我得到匹配,我会从那里进行进一步处理.到目前为止,一切都很好,效果很好. 然后我注册一个结构更改事件处理程序,这样我就可以获取任何来或去的窗口.它为 ProcessID 和 RuntimeID 启用了缓存.注册也顺利进行.(所有这些都发生在 MTA 后台线程中.) 然后,我启动了一个应用程序,并且正如预期的那样,使用 ChildAdded 触发了事件.当我检查“发件人"时在调试器中,我当前的所有字段都显示 E_FAIL,没有任何缓存数据存在 - ArgumentException - 并且 GetRuntimeId() 将 E_FAIL 抛出为好.即使我在缓存中指定了 Children,GetCachedParen
170 2022-07-19
编程技术问答社区
调用模式。调用引发Win32Exception��热键已注册��
你好, 我目前正在使用 UIAutomation API 来处理 Javascript 对话框. 在大多数情况下,这工作得很好,但我经常收到这个随机异常,我不知道如何解决/修复它. 例外:热键已注册 类型:System.ComponentModel.Win32Exception 堆栈: 在 MS.Internal.AutomationProxies.Misc.ThrowWin32ExceptionsIfError(Int32 errorCode) 在 MS.Internal.AutomationProxies.Misc.SetFocus(IntPtr hwnd) 在 MS.Internal.AutomationProxies.WindowsButton.Invoke() 在 MS.Internal.AutomationProxies.WindowsButton.System.Windows.Automation.Provider.I
140 2022-07-19
编程技术问答社区
查找与Name属性部分匹配的自动化元素
是否可以通过名称属性的部分匹配找到自动化元素?例如,如果我知道自动化元素的 name 属性将始终包含“foo";连同其他一些文本,我如何仅通过搜索“foo"来找到该自动化元素? 解决方案 我对此有点陌生,但是我想我已经看到了一些实现自己的树遍历器的示例,实际上您将需要实现递归树遍历并通过自己的比较过滤掉所需的节点.如果您这样做,我可能会建议您使用正则表达式作为您的搜索模式,正则表达式的工作量非常小,但在功能和灵活性方面会获得巨大的收益. HTH, 动物园
130 2022-07-19
编程技术问答社区
将管理UI自动化。NET assembly是否更新为包装Windows Automation API 3.0 COM接口?
今天我读到了 Guy Barker MSFT(我现在已经丢失了链接)向用户解释他们应该直接使用 Windows 自动化 COM 接口或在此处使用 .NET 包装器: http://uiacomwrapper.codeplex.com. UIA COM 包装器更新已经超过 7 年了...是否有更好的 UI 自动化框架可用?更重要的是,微软是否会考虑更新现有的托管 .NET 包装器? 谢谢, ~桑卡恩 解决方案 官方.Net wrapper 可能永远不会更新了. 周围有 .Net 包装器. 一个是您提到的 UIAComWrapper,它试图将 COM UIA 包装成与托管的 .Net UIA 相同. 另一个是 FlaUI,是我开始维护时写的 White (这是另一个)并看到了 Whites 代码库不好.FlaUI 是 UIA2/UIA3 的包装器,可轻松访问所需的一切,并且易于扩展.随意尝试并在 gitter 或 github 上提供反馈.
82 2022-07-19
编程技术问答社区
我们可以用WindowOpenEvent/WindowClosedEvent弹出窗口吗
我正在讨论对 WPF 的自动化支持,现在我们遇到了关于弹出窗口的打开/关闭事件的问题.那是: 解决方案 Clark,我不太清楚你所说的“弹出窗口"是什么意思.你能给我举个例子吗? 一般来说,WPF 本身提供了打开和关闭窗口的事件.如果要在 WPF 应用程序中创建新的但不是真正的窗口的元素,则可以使用 RaiseStructureChangedEvent() 并将 StructureChangeType 设置为 StructureChangeType.ChildAdded.此事件表明内部结构因添加了新元素而发生了变化,这听起来就像您正在做的那样.当您摆脱弹出窗口时,使用 ChildRemoved 触发结构更改.
130 2022-07-19
编程技术问答社区