gpt4 book ai didi

c - winapi 最小化窗口通知(橙色冲洗)

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:42 24 4
gpt4 key购买 nike

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

我检查了 API,我只找到了 FlashWindow/Ex ,这是导致闪烁的原因;但是我想针对特定窗口对其进行测试。

我还发现了 SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT,..),我想这可能是相关的,但也是全局的。

我正在使用 Windows 7

最佳答案

没有 Win32 API 函数可以查询给定窗口当前是否正在使用 FlashWindow/Ex() 闪烁。

然而,SetWindowsHookEx()有一个WH_SHELL钩子(Hook),在重绘窗口标题时报告 HSHELL_REDRAW 通知:

nCode [in]
Type: int

The hook code. If nCode is less than zero, the hook procedure must pass the message to the CallNextHookEx function without further processing and should return the value returned by CallNextHookEx. This parameter can be one of the following values.

...

HSHELL_REDRAW
6
The title of a window in the task bar has been redrawn.

wParam [in]
Type: WPARAM

This parameter depends on the value of the nCode parameter, as shown in the following table.

...

HSHELL_REDRAW
A handle to the redrawn window.

lParam [in]
Type: LPARAM

This parameter depends on the value of the nCode parameter, as shown in the following table.

...

HSHELL_REDRAW
The value is TRUE if the window is flashing, or FALSE otherwise.

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

关于c - winapi 最小化窗口通知(橙色冲洗),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43727554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com