首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定来自UISpy和进程内存转储的RuntimeId,如何找到隐藏UI元素的原因?

给定来自UISpy和进程内存转储的RuntimeId,如何找到隐藏UI元素的原因?
EN

Stack Overflow用户
提问于 2013-03-18 18:11:41
回答 1查看 275关注 0票数 1

有时,应用程序bug会生成一个带有Z-Index的隐藏UI控件,这意味着它位于其他UI元素之上。这个隐藏的窗格出现在屏幕的左上角,并阻止用户从任何最大化窗口加载“文件”菜单。如果应用程序关闭,则UI元素将消失。

使用UISpy,我能够捕获有关该元素的以下信息:

代码语言:javascript
复制
AutomationElement
  General Accessibility
    AccessKey:     ""
    AcceleratorKey:            ""
    IsKeyboardFocusable:               "True"
    LabeledBy:      "(null)"
    HelpText:        ""

  State
    IsEnabled:       "True"
    HasKeyboardFocus:    "False"

  Identification
    ClassName:    "WindowsForms10.Window.8.app.0.365bd83"
    ControlType:  "ControlType.Pane"
    Culture:            "(null)"
    AutomationId:              ""
    LocalizedControlType:               "pane"
    Name:              ""
    ProcessId:       "10968 (MyApplication)"
    RuntimeId:     "42 21628486"
    IsPassword:    "False"
    IsControlElement:       "True"
    IsContentElement:      "True"

  Visibility
    BoundingRectangle:   "(0, 0, 132, 38)"
    ClickablePoint:              "(null)"
    IsOffscreen:   "False"

ControlPatterns

我还有一个在WinDbg中打开的应用程序的内存转储。如何使用RuntimeID "42 21628486"查找引用UI元素的托管对象?或者我可以搜索具有特定宽度的对象?

我希望,通过找到托管对象,它将为隐藏窗口的原因提供一些线索。

EN

回答 1

Stack Overflow用户

发布于 2013-03-19 03:28:32

我还没有弄清楚是否可以使用WinDbg,但可以附加一个Visual Studio实例和...

使用Inspect.exe可以找到hwnd (可能与RuntimeId相同,但不确定):

代码语言:javascript
复制
How found:  Focus [o:0xFFFFFFFC,c:0x0]
    hwnd=0x0006219E 32bit class="WindowsForms10.Window.8.app.0.27e1210" style=0x96010000 ex=0x90088

触发了一个断点,并能够使用“即时”窗口中的以下内容找到该控件:

代码语言:javascript
复制
System.Windows.Forms.Control.FromHandle(new IntPtr(401822))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15474206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档