winapi最小化窗口通知(橙色齐平)

时间:2017-05-01 22:44:22

标签: c winapi

我正在使用Win32 API,我想检查最小化窗口是否闪烁,即通过C代码显示带有橙色,闪烁颜色的窗口选项卡。

我检查了API,但我发现了FlashWindow/Ex,这导致了闪烁;但是我想针对特定的窗口进行测试。

我还发现了import { Container, injectable } from "inversify"; @injectable() class Foo { // ... } const container = new Container(); container.bind(Foo).toSelf(); const foo = container.get(Foo); ,这可能是相关的,但我认为也是全球性的。

我使用的是Windows 7

1 个答案:

答案 0 :(得分:2)

如果当前正在使用FlashWindow/Ex()闪烁给定窗口,则没有Win32 API函数。

但是,SetWindowsHookEx()有一个WH_SHELL挂钩,在重新绘制窗口标题时会报告HSHELL_REDRAW个通知:

  

nCode [in]
  键入:int

     

钩子代码。如果nCode小于零,则挂钩过程必须将消息传递给CallNextHookEx函数而不进行进一步处理,并应返回CallNextHookEx返回的值。此参数可以是以下值之一。

     

...

     

HSHELL_REDRAW
  6
  任务栏中的窗口标题已重新绘制。

  

wParam [in]
  键入:WPARAM

     

此参数取决于nCode参数的值,如下表所示。

     

...

     

HSHELL_REDRAW
  重绘窗口的句柄。

  

lParam [in]
  键入:LPARAM

     

此参数取决于nCode参数的值,如下表所示。

     

...

     

HSHELL_REDRAW
  如果窗口闪烁,则值为TRUE,否则为FALSE。

因此,您可以使用GetWindowThreadProcessId()获取目标窗口的线程ID,然后将其传递给dwThreadId的{​​{1}}参数,以开始监视同一线程中的所有窗口作为目标窗口,然后您可以过滤SetWindowsHookEx()通知以检测目标窗口是否闪烁。