Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于解决“任务栏窗口有时会显示不全”问题的思路提交 #1858

Open
3-5105 opened this issue Aug 30, 2024 · 1 comment
Open

Comments

@3-5105
Copy link

3-5105 commented Aug 30, 2024

此建议期望解决如下链接展示的问题:
来自Help.md的问题

解决方案:
不使用定时轮询,改为使用钩子hook窗口大小变更消息

以Windows10任务栏为例,TrafficMonitor 1.84.1在如下位置创建任务栏窗口
(以下名称均为窗口类名)

Shell_TrayWnd
 +-ReBarWindow32
   +-#32770 (对话框)
   +-MSTaskSwWClass

其中,#32770 (对话框)为TrafficMonitor的任务栏窗口(下简称小窗)
则可以Hook其中ReBarWindow32、MSTaskSwWClass两个窗口的大小变化,并在其大小变更时做出反应

具体是:

1.hook窗口ReBarWindow32的WM_SIZE消息
在ReBarWindow32变更大小时,设置小窗的右边缘总对齐ReBarWindow32的右边缘

2.hook窗口MSTaskSwWClass的WM_SIZE消息
在MSTaskSwWClass变更大小时,设置MSTaskSwWClass的右边缘总对齐小窗的左边缘

下面是我在开发时写出的示例
https://wwgz.lanzouw.com/b00moovwvg
密码:alr1
其中,TaskbarTicker_src.7z包内的
\TaskbarTicker_src\dll\Dll3.sln
工程可能对您有帮助

提醒您注意:
hook可能被报毒
使用不当会导致被hook的对象以及程序性能降低
不当的错误处理可能导致被hook的对象崩溃

@ritaswc
Copy link

ritaswc commented Sep 26, 2024

建议把代码放github的项目中,方便大家直接传阅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants
@ritaswc @3-5105 and others