有时,应用程序bug会生成一个带有Z-Index的隐藏UI控件,这意味着它位于其他UI元素之上。这个隐藏的窗格出现在屏幕的左上角,并阻止用户从任何最大化窗口加载“文件”菜单。如果应用程序关闭,则UI元素将消失。
使用UISpy,我能够捕获有关该元素的以下信息:
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元素的托管对象?或者我可以搜索具有特定宽度的对象?
我希望,通过找到托管对象,它将为隐藏窗口的原因提供一些线索。
发布于 2013-03-19 03:28:32
我还没有弄清楚是否可以使用WinDbg,但可以附加一个Visual Studio实例和...
使用Inspect.exe可以找到hwnd (可能与RuntimeId相同,但不确定):
How found: Focus [o:0xFFFFFFFC,c:0x0]
hwnd=0x0006219E 32bit class="WindowsForms10.Window.8.app.0.27e1210" style=0x96010000 ex=0x90088触发了一个断点,并能够使用“即时”窗口中的以下内容找到该控件:
System.Windows.Forms.Control.FromHandle(new IntPtr(401822))https://stackoverflow.com/questions/15474206
复制相似问题