如何使用事件(不是轮询)检测C#中的窗口标题更改

时间:2017-06-17 02:16:28

标签: c# windows winapi

我希望能够在Window(不一定是我创建的应用程序)更改其标题时使用事件进行检测。

我的想法(但没有一个使用专门的活动):

  • 向鼠标点击和键盘笔划添加一个事件,这样我就可以检测到标题何时会发生变化,但它并不完美,因为标题可能会在最后一次点击后几秒钟发生变化(例如加载一个网站)
  • 仅在列入白名单的应用程序上进行一些轮询

编辑:我设法放置EVENT_SYSTEM_CAPTURESTART挂钩,捕获点击次数。它可以用于更改选项卡,但是对于加载新页面,它不会捕获更改,因为页面通常需要一些时间来加载。

1 个答案:

答案 0 :(得分:0)

我是通过使用UIA(如Hans所建议的)这样做的。我检测到新窗口何时打开,获取UIA元素,并为NameProperty订阅属性更改事件处理程序。

Automation.AddAutomationPropertyChangedEventHandler(
    <your window AutomationElement>, 
    TreeScope.Element, 
    <your delegate>, 
    AutomationElement.NameProperty);