我正在使用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
答案 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()
通知以检测目标窗口是否闪烁。