一个别人的程序,大家来帮忙分析一下它的界面是怎么做出来的,很很很奇怪。

tangshiping 2007-04-19 02:08:53
正常表现特征:
按扭是动态的,鼠标移到按扭上方的时候按扭会在字体上有所变化。

令我不解的异常分析特征:
1:我用Spy++来分析这个已经运行的程序,探测器移动到按扭的上方的时候没有探测到任何控件,但是按扭上的字体发生了变化,就是说按扭知道鼠标移动到了它的上方。所以猜测,这些按扭是画上去的,不是实际的BUtton控件。
2:于是我用vc以资源的方式打开了这个exe文件,查看主窗体,上面除了几个其他的控件(这几个控件已经在运行后的界面上对应找到)外果然没有任何按扭控件存在,初步证实了上面一条的猜测。
3:为了不让鼠标移动到上方时按扭有变化,我做了一个鼠标HOOK的DLL ,里面我屏蔽了全局的WM_MOUSEMOVE消息。启动dll后,鼠标移动到windows下面任务栏的快捷图标的时候都不再有任何反应,移动到vc环境界面时,那些按扭(比如编译,保存...)遇到鼠标也不再有下陷的效果。说明我的dll有效。但是启动那个程序后,鼠标移动到按扭上方时仍然会有反应,字体依然变化。效果就象我并没有成功拦截到鼠标移动消息。
4:我再次做了一个DLL,这次我截取了所有那个程序的WM_PAINT消息,启动程序后,那个程序中其他的控件全部变灰,但是奇怪的是,这些按扭不受影响!鼠标移动过去依然会变化,且移走后恢复,没有变灰掉色的表现。

实在是不明白了,希望各位帮忙分析一下!
...全文
550 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangshiping 2007-04-20
  • 打赏
  • 举报
回复
ringphone(临风)说的也对啊,鼠标位置监视线程存在也很正常。那可就没的拦了,突然觉得做一个东西的路子太多了,千变万化啊
ringphone 2007-04-20
  • 打赏
  • 举报
回复
有没有WM_TIMER消息?程序可以在WM_TIMER里检测鼠标位置,不理会WM_MOUSEMOVE。或者有一个鼠标位置监视线程,在线程或WM_TIMER或WM_ERASEBKGND消息里面也可以绘制按钮。
逸学堂 2007-04-20
  • 打赏
  • 举报
回复
你可以研究一下skin++
tangshiping 2007-04-20
  • 打赏
  • 举报
回复
那么各位有没什么办法可以让我在vc下写程序来外部修改程序运行界面呢?主要是处理那几个按扭
tangshiping 2007-04-20
  • 打赏
  • 举报
回复
结?我看帖子是要沉了啊,赶紧结,省得又忘记被扣分
「已注销」 2007-04-19
  • 打赏
  • 举报
回复
有点意思...
yoyo_alex_lw 2007-04-19
  • 打赏
  • 举报
回复
关注
坐在地上学习
skypu 2007-04-19
  • 打赏
  • 举报
回复
关注
坐在地上学习
tangshiping 2007-04-19
  • 打赏
  • 举报
回复
消息太多了 好几百个 不知道怎么挑选某时刻的消息?SPY++勉强第一次用
laofang 2007-04-19
  • 打赏
  • 举报
回复
Spy++还可以监控指定窗体上的全部消息,你有没有看过鼠标移过时都有什么消息产生呢?
  • 打赏
  • 举报
回复
完全自己绘制一个按钮,并且处理了按钮相关消息.
MSN也一样的,只不过用的是dx不是gdi
tangshiping 2007-04-19
  • 打赏
  • 举报
回复
我也怀疑是用DX做的 有没有办法外部重绘了呢还?
dazedase 2007-04-19
  • 打赏
  • 举报
回复
难道是 DirectDraw?
不懂,顶下,JF
WingForce 2007-04-19
  • 打赏
  • 举报
回复
呵呵,人家比你做得更底层而已
那个按钮的重绘等消息完全是自己控制的,所以hook消息没用
我认为,不需要很麻烦,用directdraw画这个按钮,用directinput读取鼠标信息,就可以做到

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧