1

時折、アプリケーションのバグにより、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 を持つ UI 要素を参照する管理対象オブジェクトを見つけるにはどうすればよい"42 21628486"ですか? または、特定の幅のオブジェクトを検索できますか?

管理対象のオブジェクトを見つけることで、隠れたウィンドウの原因についての手がかりが得られることを願っています。

4

1 に答える 1

0

WinDbgを使用して可能かどうかはわかりませんが、VisualStudioのインスタンスをアタッチすることはできました...

を使用し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))
于 2013-03-18T19:28:31.940 に答える