《魔高一丈2.0》开发实例
2006-07-19 11:35:31 来源:WEB开发网本文示例源代码或素材下载
一、开发背景:
我想大家都有过忙手忙脚最小化窗口(或关闭窗口)的经历吧!原因很简单——不想让突如其来的老板、老妈、老婆看到我们电脑屏幕上正在显示的游戏、日记、MM:-) 等属于个人隐私的东东。 如果能做一个程序在后台运行,当我们发出一个特殊的输入事件(我选择了鼠标左、右键同时按下)时,该程序就迅速隐藏正在显示的窗口,免去人工瞄准并按下每个窗口右上方的那个小得可怜的的最小化按扭之苦了。当危险解除再利用这个特殊事件使隐藏的窗口恢复。这对于像我这样小脑不太发达、心理素质又不过硬而又经常在老板的眼皮底下“悬崖骑马”的同志们来说是绝对有实战意义的。于是我做了这个“魔高一丈”以实现上述功能!
二、程序原理:
首先,我们得能截获鼠标左、右键同时按下去这个事件——这并不难——设一个标志变量当鼠标发出WM_LBUTTONDOWN并且又有WM_RBUTTONDOWN消息发出时把它置“1”罢了。而我要说明的是,这个“同时按下”只是一种宏观上的概念,鼠标是不会同时发出两个消息的。其次就是解决不管鼠标位于任何窗口之上都能在程序里截获(或者称为监听更准确)到鼠标发出的消息并加以过滤的问题了,这是很关键的。我用了钩子船长的那只钩子(Hook),而且是全局的鼠标钩子,它给了我们跟操作系统沟通的一个机会。许多比较有神秘感的程序(比如金山词霸的鼠标取词)都是用它实现的,稍后我将详细解释。最后就是剩下能得到可见的窗口的句柄(HANDLE)并根据其句柄显示、隐藏窗口的问题了,这也没什么难的有现成的API函数——EnumWindows和ShowWindow。你可以先运行一下我的程序(那个大五星,需要把它跟那个Mousehook.dll文件放在一个文件夹下)。当鼠标左右键一起按下时所有的窗口都隐藏了;再一次同时按下左右键又可恢复隐藏窗口;单击任务栏右下角(托盘)的图标可隐藏或显示本程序窗口。
更多精彩
赞助商链接