设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> Visual C++ >> TASKBAR的奥秘
精品推荐
Visual C++点击TOP10
·用WINSOCK实现聊天室的VC++程序设计
·利用mfc编写activex控件
·用vc实现生产者消费者问题
·DirectX8.0
·C/C++ 大量经典编程书籍下载
·VC快捷键大全
·CreateFileMapping的MSDN翻译和使用心得
·Windows环境下的麦克风录音系统
·挂钩Windows API
·如何开发OPC Server
编程开发点击TOP10
·数字小键盘指法练习
·用C语言编通讯录程序(初学者级别的)
·ASP.NET 程序中常用的三十三种代码
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

TASKBAR的奥秘

作者: 来源:网络文章 时间:2005-12-13 18:42:42

TASKBAR的奥秘(3) 作者:陆麟
欢迎盗版,请注出处.
1999.5.16

今天我又要一下WIN9X TASKBAR的运作.
上次讲了用COM的方法把TASKBAR上的按钮干掉.那么TASKBAR自己
的运作又是怎么样的呢.
我讲一下流程吧.根据MS的文档,一个应用程序按钮出现在TASKBAR
上的条件是:
1.它是个UNOWNED的窗口(不属于系统的窗口).
2.窗口是应用程序的主窗口.应用程序的子窗口不会出现在TASKBAR
  上.STYLE包含WS_OVERLAPPED.
3.该窗口处于ACTIVE状态.
但是如果满足了上述条件就会出现应用程序的按钮吗?很显然,我写
了这篇文章.肯定有不同于MS文档的地方:)这属于一些很技巧性的东
西.
一个TASKBAR COM组件的确可以控制按钮的产生和消亡,但是COM组件
是一个十分上层的东西.它通过什么控制TASKBAR上按钮呢.
答案就是:靠HOOK.什么HOOK呢?SHELL HOOK.当一个应用程序创建窗
口时,SHELL会发出一定序列的SHELL消息通知SHELL HOOK.然后,对
TASKBAR的操作就进行了.很令我本人不解.但是事实的确是这样的.
微软并没有把对TASKBAR的操作集成到SHOWWINDOW()等函数里.也许
根据模块化的原则,USER模块不应该操作SHELL模块的功能.但是这似
乎和微软的一贯做法有些不同,似乎对于系统的'集成'不利.因为一个
系统组件功能被剥离到了HOOK里.
那么哪个SHELL HOOK消息通知系统该有按钮该生成了呢?如果你自己
写个SHELL HOOK,你会发现拦截任何一个HSHELL消息都不能阻止系统
生成按钮.但是拦截HSHELL_WINDOWDESTROYED可以阻止系统删除按钮.
这里就是技巧中的技巧.UNDOCUMENTED,而且估计以后也不会有文档.
因为已经有了COM SHELL的文档告诉程序员如何操作按钮:)
任何一个单独的消息拦截都不能阻止系统产生按钮.但是通过3个消息
的联合拦截,却可以做到.那3个消息就是:
HSHELL_WINDOWCREATED,HSHELL_WINDOWACTIVATED,HSHELL_GETMINRECT.
少一个都不行.只要这3个消息不流到当前HOOK之前的HOOK流里.系统将
在应用程序激活UNOWNED主窗口后不在TASKBAR上响应.
当然,这比COM实现有缺陷.不如COM调用简洁方便.但是,这离系统运作
又近了一层:)
... 看了我的信可是大补啊!:).陆麟

--- 蓝波95 v2.54 [NR]
* Origin: SHANG HAI WILL UNIVERSITY BBS(57956523) (6:654/1007)

共3页 9 7 [1] [2] [38 :>

TASKBAR的奥秘 相关文章:
TASKBAR的奥秘 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com