【问题标题】:How to create a global 32/64bit hook for FlashWindowEx?如何为 FlashWindowEx 创建全局 32/64 位挂钩?
【发布时间】:2014-05-16 13:04:14
【问题描述】:

目标是防止任务栏图标闪烁。显然 Windows 没有禁用闪烁的选项,所以我希望编写一个小程序来拦截来自 任何 应用程序对 FlashWindow / FlashWindowEx 的所有调用并简单地丢弃它们。

这可以吗?如果是这样,您能否提供任何提示/示例如何挂钩对 FlashWindowEx 的调用(全局),这将适用于 32 位和 64 位应用程序以及通过 GetProcAddress 进行的常规 API 调用和 DLL 调用(Skype 使用它)。

【问题讨论】:

  • 查看微软的 Detours 库。不过,我认为至少在某个地方可以选择它。
  • 据我所知,detours 免费版仅支持 32 位应用程序。
  • this 怎么样?控制面板 > 轻松访问中心 > 使用文本或视觉替代声音
  • 请注意,FlashWindowEx 并不是窗口可以在任务栏上闪烁的唯一原因。您最好取消 HSHELL_FLASH 通知。
  • @CiriousJoker 是的,它需要将 DLL 注入每个进程。这并不像我希望的那么容易,但我让它工作了,这是完整的项目:github.com/bladeSk/StayFocused

标签: c++ winapi hook


【解决方案1】:

使用RegisterShellHookWindow() 拦截并丢弃HSHELL_FLASH 通知。

【讨论】:

  • SetWindowsHookEx 似乎没有拦截 HSHELL_FLASH,但 RegisterShellHookWindow 似乎是我正在寻找的。有什么想法可以找到使用它的示例吗?
猜你喜欢
  • 2011-09-20
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多